求助三句话的程序,我找不到哪里错了

2019-03-24 14:07发布

我在主循环中想让LED闪动,这样写
void main()
{
  while(1)
  {
        GPIO_ResetBits(GPIOA, GPIO_Pin_2);     // 点亮LED
        for(i=0;i<0xfffffff;i++);                      // 延时
        GPIO_SetBits(GPIOA, GPIO_Pin_2);         //灭LED
   }
我用的stm32103rb单片机,单片机时钟 GPIO 等 初始化肯定没有问题,我用的是keil4
如果我把主函数改成
void main()
{
  while (1)
  {      
    for (i = 0; i <5 ; i++)
    {
      if (i %= 1)
      {
        GPIO_ResetBits(GPIOA, GPIO_Pin_2);
      }
      else
      {
        GPIO_SetBits(GPIOA, GPIO_Pin_2);  
      }
      for (i=0;i<0xfffffff;i++);
    }
  }
}
这样改后LED就能闪动了,但我总感觉第一个比较简练,却不好使,led一直亮,不知道为什么,请大家找找原因 此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
4条回答
shower.xu
1楼-- · 2019-03-24 19:12
< 灭灯后面也要加延时 while(1) { GPIO_ResetBits(GPIOA, GPIO_Pin_2); // 点亮LED for(i=0;i<0xfffffff;i++); // 延时 GPIO_SetBits(GPIOA, GPIO_Pin_2); //灭LED for(i=0;i<0xfffffff;i++); // 延时 }
利用位带特性可以更简洁 [ 本帖最后由 shower.xu 于 2012-7-3 08:52 编辑 ]
exiao
2楼-- · 2019-03-25 00:24
< :TI_MSP430_内容页_SA7 --> 楼上正解,如果灭灯不延时,灭的时间就太短,不可能观察到
iiijjj0323
3楼-- · 2019-03-25 05:10
 精彩回答 2  元偷偷看……
0nline
4楼-- · 2019-03-25 09:05

一周热门 更多>

相关问题

    相关文章