LED可以亮和灭但不能闪烁

2019-07-14 13:50发布

写个简单的LED程序试下,发现LED不能闪烁。程序如下:
u16 i = 10000;
  //Systick_Config(SystemCoreClock / 1000);
  /* GPIOE Periph clock enable */
  RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOA, ENABLE);
  
  /* Configure PA5 Pin output pushpull mode */
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5 ;
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;
  GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_10MHz;
  //GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;
  GPIO_Init(GPIOA, &GPIO_InitStructure);
  
  /* To achieve GPIO toggling maximum frequency, the following  sequence is mandatory.
  You can monitor PE14 and PE15 on the scope to measure the output signal.
  If you need to fine tune this frequency, you can add more GPIO set/reset
  cycles to minimize more the infinite loop timing.
  This code needs to be compiled with high speed optimization option.  */
  while (1)
  {
      
   GPIO_SetBits(GPIOA, GPIO_Pin_5);
   while(i--);
   GPIO_ResetBits(GPIOA, GPIO_Pin_5);
   while(i--);
  }

请高手指点下。
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
9条回答
冬冬5241
1楼-- · 2019-07-14 22:55
本帖最后由 wambob 于 2015-1-24 16:01 编辑

延迟时间短吧,人眼能分辨的时间大于等于20MS,即50HZ以上的频率分辨不出来,延迟的短了,LED闪烁频率超过50HZ,人眼分辨不出来,看上去一直亮
冬冬5241
2楼-- · 2019-07-15 01:34
你那10000 ,你输出频率是10MHZ,相当于0.1US,延迟10000*0.1=1000US=1MS
云淡风轻丶
3楼-- · 2019-07-15 04:18
设置一个阈值吧
youxi8745
4楼-- · 2019-07-15 06:03
楼上回答正确
wq644921241
5楼-- · 2019-07-15 10:39
 精彩回答 2  元偷偷看……
John94
6楼-- · 2019-07-15 11:01
i是全局变量,GPIO_SetBits(GPIOA, GPIO_Pin_5);下一句while(i--);已经把i减到0了,之后i延时就不起作用了

一周热门 更多>