找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2202|回复: 2
打印 上一主题 下一主题
收起左侧

请教!为什么这个stm32程序无法运行?

[复制链接]
跳转到指定楼层
楼主
ID:82098 发表于 2018-7-8 16:09 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
//请教!为什么这个程序无法运行?
  1. #include "stm32f10x.h"


  2. void GPIO_Config(void)//GPIO配置
  3. {
  4.     GPIO_InitTypeDef GPIO_InitStructure;
  5.     RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC,ENABLE);//使能gpioc的时
  6.     GPIO_InitStructure.GPIO_Pin = GPIO_Pin_13;          //选择管脚PC.13作LED灯
  7.     GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;   //管脚速度为50M
  8.     GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;    //设置输出模式为推挽输出
  9.     GPIO_Init(GPIOC, &GPIO_InitStructure);             //将上述设置写入到GPIOC里去
  10. }


  11. void NVIC_Config(void)                                   //中断控制器的配置
  12. {
  13.     NVIC_InitTypeDef NVIC_InitStructure;
  14.     NVIC_PriorityGroupConfig(NVIC_PriorityGroup_0);           //优先组设置
  15.     NVIC_InitStructure.NVIC_IRQChannel =TIM2_IRQn ;           //TIM2中断选通
  16.     NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;      //抢占优先级
  17.     NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;           //子优先级
  18.     NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;         //使能中断控制
  19.     NVIC_Init(&NVIC_InitStructure);
  20. }
  21. void Timer_Config(void)         //定时器的配置
  22. {
  23.     TIM_TimeBaseInitTypeDef   TIM_TimeBaseStructure;
  24.     RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2 , ENABLE);  //Timer2 时钟使能
  25.     TIM_DeInit(TIM2);                              //复位TIM2定时器
  26.     TIM_TimeBaseStructure.TIM_Period=1000;          //定时器周期
  27.     TIM_TimeBaseStructure.TIM_Prescaler=36000-1;     //预分频数
  28.     TIM_TimeBaseStructure.TIM_ClockDivision=TIM_CKD_DIV1;   //TIM2时钟分频,为1表示不分频
  29.     TIM_TimeBaseStructure.TIM_CounterMode=TIM_CounterMode_Up;//定时器计数为向上计数模式
  30.     TIM_TimeBaseInit(TIM2, &TIM_TimeBaseStructure);
  31.     TIM_ClearFlag(TIM2, TIM_FLAG_Update);           //清除定时器2的溢出标志位
  32.     TIM_ITConfig(TIM2,TIM_IT_Update,ENABLE);      //使能定时器2溢出中断
  33.     TIM_Cmd(TIM2, ENABLE);                       //定时器2使能
  34. }




  35. int main(void)
  36. {
  37.     SystemInit();//初始化时钟,配置为72MHz,我试过将这句注释掉,好像不影响结果。查了一下,在配置
  38.     //main函数之前的启动代码有这样一句  LDR R0, =SystemInit,我疑惑的是难道启动的时候就配成72Mhz?
  39.     GPIO_Config();
  40.     NVIC_Config();
  41.     Timer_Config();
  42.     while(1)
  43.     {
  44.         ;
  45.     }
  46. }


  47. void TIM2_IRQHandler(void)
  48. {
  49.     static int flag_bit=0;//定义一个标志位
  50.     if ( TIM_GetITStatus(TIM2 , TIM_IT_Update) != RESET ) //判断中断溢出标志为是否为1
  51.     {
  52.         TIM_ClearITPendingBit(TIM2 , TIM_FLAG_Update); //清除溢出中断标志位
  53.         flag_bit = !flag_bit;
  54.         if(flag_bit == 1)
  55.         {
  56.             GPIO_SetBits(GPIOC, GPIO_Pin_13);    //熄灭LED
  57.         }
  58.         if(flag_bit == 0)
  59.         {
  60.             GPIO_ResetBits(GPIOC, GPIO_Pin_13);    //点亮LED
  61.         }
  62.     }
  63.         }
复制代码


分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:308437 发表于 2018-7-8 17:19 | 只看该作者
程序下载后,记得·复位一下。有时候是要复位才可以的
回复

使用道具 举报

板凳
ID:82098 发表于 2018-7-8 20:29 | 只看该作者
感谢回复!仿真没有波形
回复

使用道具 举报

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

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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