新手买了块开发办学习,用GPIO延时做PWM呼吸灯遇到问题了

2019-07-21 00:58发布

各位大大好,是这样的,本人初学STM32F4买了探索者的开发板学习,学到GPIO这一节后想试试使用延时函数实现输出PWM控制LED的呼吸灯效果,程序如下
uint32_t Tpwm=5000;
uint32_t p,q; int main(void)
{
while(1)
 {
   for(p=0; p<Tpwm; p++)
    {
    q=Tpwm-p;
    GPIO_ResetBits(GPIOF,GPIO_Pin_9);
    Delay(p);
    GPIO_SetBits(GPIOF,GPIO_Pin_9); 
    Delay(q);
    }
   
   for(p=Tpwm; p>0; p--)
    {
    q=Tpwm-p;
    GPIO_ResetBits(GPIOF,GPIO_Pin_9);
    Delay(p);
    GPIO_SetBits(GPIOF,GPIO_Pin_9); 
    Delay(q);
    }  }
}

以上程序在板子上跑没有问题,红 {MOD}LED像呼吸灯一样渐亮渐暗,效果满意。
然而
我把上面的Delay函数替换成delay_us之后,无论怎么调整时间长度,LED不是常亮就是常暗,完全没有呼吸的效果,不知道为什么会这样?
本想看看Delay函数与delay_us函数到底有什么区别,无奈Delay这个函数软件都找不到在哪里定义的。

请各位大大指教!
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
9条回答
sephoney
1楼-- · 2019-07-21 01:32
 精彩回答 2  元偷偷看……
烟酒不沾
2楼-- · 2019-07-21 03:06
delay_us是US级的延时,延时时间太短了,人的眼睛没有办法看见这么快的变化,
sephoney
3楼-- · 2019-07-21 07:26
 精彩回答 2  元偷偷看……
烟酒不沾
4楼-- · 2019-07-21 08:01
回复【3楼】sephoney:
---------------------------------
你延时多长时间?
小可爱
5楼-- · 2019-07-21 09:20
我觉得最好用pwm输出控制比较好,这样资源利用比较大。
sephoney
6楼-- · 2019-07-21 14:37
回复【4楼】烟酒不沾:
---------------------------------
回复【4楼】烟酒不沾:
---------------------------------
10000、100000、1000000都试过了没用
而且就算用1000也不应出现你说的太快的问题。计算一下就知道每个周期是1000us,占空比从最小到最大要经历1000个周期也就是1s的时间,正常运行下肉眼不可能看不出明暗变化。

一周热门 更多>