各位大大好,是这样的,本人初学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这个函数软件都找不到在哪里定义的。
请各位大大指教!
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
---------------------------------
你延时多长时间?
---------------------------------
回复【4楼】烟酒不沾:
---------------------------------
10000、100000、1000000都试过了没用
而且就算用1000也不应出现你说的太快的问题。计算一下就知道每个周期是1000us,占空比从最小到最大要经历1000个周期也就是1s的时间,正常运行下肉眼不可能看不出明暗变化。
一周热门 更多>