OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 9452|回复: 6

新人求助 刚接触STM32 做一个开关控制LED灯闪烁 调试一直没反应

[复制链接]

4

主题

15

帖子

0

精华

初级会员

Rank: 2

积分
51
金钱
51
注册时间
2013-7-9
在线时间
0 小时
发表于 2013-7-9 17:16:11 | 显示全部楼层 |阅读模式

注:1.有两个灯,PA4    B12,都是低电平点亮
    2.有两个按键,PB8  和  PB9,按下是低电平
    3.程序开始后两个灯常亮,按下按键后熄灭,抬起后继续亮


main.c中

#include "stm32f10x.h"
#include "stm32f10x_gpio.h"
#include "stm32f10x_rcc.h"
#include "stm32f10x_exti.h"

 

void RCC_Configuration(void)  //时钟配置函数
{
   ErrorStatus HSEStartUpStatus;
    //使能外部晶振
   RCC_HSEConfig(RCC_HSE_ON);
   //等待外部晶振稳定
   HSEStartUpStatus = RCC_WaitForHSEStartUp();
   //如果外部晶振启动成功,则进行下一步操作
   if(HSEStartUpStatus==SUCCESS)
   {
     //设置HCLK(AHB时钟)=SYSCLK  将系统时钟进行分频后,作为AHB总线时钟
     RCC_HCLKConfig(RCC_SYSCLK_Div1);
     //PCLK1(APB1) = HCLK/2  将HCLK时钟2分频后给低速外部总线
     RCC_PCLK1Config(RCC_HCLK_Div2);
     //PCLK2(APB2) = HCLK  HCLK时钟配置给高速外部总线
     RCC_PCLK2Config(RCC_HCLK_Div1);
     //外部高速时钟HSE 4倍频
     RCC_PLLConfig(RCC_PLLSource_HSE_Div1, RCC_PLLMul_4);
     //启动PLL
     RCC_PLLCmd(ENABLE);
     //等待PLL稳定
     while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET);
     //系统时钟SYSCLK来自PLL输出
     RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);
     //切换时钟后等待系统时钟稳定
     while(RCC_GetSYSCLKSource()!=0x08);
   }
   // 下面这些都是外设总线上所挂的外部设备时钟的配置
  
   RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_GPIOB|RCC_APB2Periph_AFIO, ENABLE);
}


void GPIO_Configuration(void)  //GPIO配置函数
{
  //GPIO_DeInit(GPIOA);
  GPIO_InitTypeDef GPIO_InitStructure;
  GPIO_InitStructure.GPIO_Pin=GPIO_Pin_4;
  GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
  GPIO_InitStructure.GPIO_Mode= GPIO_Mode_Out_PP;
  GPIO_Init(GPIOA,&GPIO_InitStructure);
 
  GPIO_InitStructure.GPIO_Pin=GPIO_Pin_12;
  GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
  GPIO_InitStructure.GPIO_Mode= GPIO_Mode_Out_PP;
  GPIO_Init(GPIOB,&GPIO_InitStructure);
 
  GPIO_InitStructure.GPIO_Pin=GPIO_Pin_8|GPIO_Pin_9;
  GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
  GPIO_InitStructure.GPIO_Mode= GPIO_Mode_IPU;
  GPIO_Init(GPIOB,&GPIO_InitStructure);
}

void EXTI_Config(void)
{
  EXTI_InitTypeDef EXTI_InitStructure;
  // 管脚选择
  GPIO_EXTILineConfig(GPIO_PortSourceGPIOB, GPIO_PinSource8);
  GPIO_EXTILineConfig(GPIO_PortSourceGPIOB, GPIO_PinSource9);
  // 清除 EXTI线路挂起位
  EXTI_ClearITPendingBit(EXTI_Line8|EXTI_Line9);
  //
  EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;
  EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Falling;
  EXTI_InitStructure.EXTI_Line = EXTI_Line8|EXTI_Line9;
  EXTI_InitStructure.EXTI_LineCmd = ENABLE;
  EXTI_Init(&EXTI_InitStructure);
}

void NVIC_Config(void)
{
  NVIC_InitTypeDef NVIC_InitStructure;
  NVIC_PriorityGroupConfig(NVIC_PriorityGroup_0);
  NVIC_InitStructure.NVIC_IRQChannel = EXTI9_5_IRQn; // 注意名称是“_IRQn”,不是“_IRQChannel”
  NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;//
  NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0; //
  NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
  NVIC_Init(&NVIC_InitStructure);
}

 

 

 

int main(void)
{
 RCC_Configuration();
 GPIO_Configuration();
 EXTI_Config();
 NVIC_Config();
 
 while(1)
 {
   GPIO_ResetBits(GPIOB,GPIO_Pin_12);
   GPIO_ResetBits(GPIOA,GPIO_Pin_4);
 }
}

大神们 帮帮我吧 谢谢!!!!
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

4

主题

15

帖子

0

精华

初级会员

Rank: 2

积分
51
金钱
51
注册时间
2013-7-9
在线时间
0 小时
 楼主| 发表于 2013-7-9 17:17:00 | 显示全部楼层
是什么问题呢 或者有没有人给我一个可行的例程 
我学习一下 以及做这个开关控制LED等闪烁需要注意哪些方面
大神们 帮帮我吧 谢谢!!!!
回复 支持 反对

使用道具 举报

4

主题

15

帖子

0

精华

初级会员

Rank: 2

积分
51
金钱
51
注册时间
2013-7-9
在线时间
0 小时
 楼主| 发表于 2013-7-9 17:19:59 | 显示全部楼层
有没有人愿意帮个忙呀 不知道怎么改 
一直不可以
给个可用的例程给我也可以 谢谢
大神们 帮帮我吧 谢谢!!!!
回复 支持 反对

使用道具 举报

1

主题

41

帖子

0

精华

初级会员

Rank: 2

积分
67
金钱
67
注册时间
2012-6-15
在线时间
0 小时
发表于 2013-7-9 17:22:20 | 显示全部楼层
这个是很简单的,你可以仿照原子的按键实验的程序写就OK了!
电子爱好者,技术在交流中进步;技术交流QQ群:191990060(STM32) 74576566(综合电子设计类)
回复 支持 反对

使用道具 举报

4

主题

15

帖子

0

精华

初级会员

Rank: 2

积分
51
金钱
51
注册时间
2013-7-9
在线时间
0 小时
 楼主| 发表于 2013-7-9 17:26:24 | 显示全部楼层
回复【4楼】zhangyouzhong:
---------------------------------
不懂怎么改....刚实习的 接触stm32不到一周 来求助的 
我知道这个很简单 可是我不知道问题在哪里 所以- -
大神们 帮帮我吧 谢谢!!!!
回复 支持 反对

使用道具 举报

1

主题

41

帖子

0

精华

初级会员

Rank: 2

积分
67
金钱
67
注册时间
2012-6-15
在线时间
0 小时
发表于 2013-7-11 16:32:54 | 显示全部楼层
可以通过以上QQ群联系我,有空帮你看看
电子爱好者,技术在交流中进步;技术交流QQ群:191990060(STM32) 74576566(综合电子设计类)
回复 支持 反对

使用道具 举报

4

主题

15

帖子

0

精华

初级会员

Rank: 2

积分
51
金钱
51
注册时间
2013-7-9
在线时间
0 小时
 楼主| 发表于 2013-7-11 16:39:28 | 显示全部楼层
回复【6楼】zhangyouzhong:
---------------------------------
谢谢啊 已经解决了 刚学的stm32 现在刚结束按钮(外部中断)/定时器 控制led闪烁这些例程的修改~~~
班上不能qq 回去加群
大神们 帮帮我吧 谢谢!!!!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-7-17 22:25

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表