探索者F4板子,用延时函数delay_us做呼吸灯为何效果不行?程序如下:

2019-07-20 13:13发布

void delay10us(u32 i)
{
unsigned int j;
for(j = 0;j < 10;j++)
{
delay_us(1);
}
}

void LED_Breath(void)
{
u32 i;

for(i = 0;i < 450;i++)
{
GPIO_ResetBits(GPIOF,GPIO_Pin_9); 
GPIO_ResetBits(GPIOF,GPIO_Pin_10); 
delay10us(i);     //???±
GPIO_SetBits(GPIOF,GPIO_Pin_9);  
GPIO_SetBits(GPIOF,GPIO_Pin_10);
delay10us(450 - i);  
}
for(i = 0;i < 250;i++)
{
GPIO_ResetBits(GPIOF,GPIO_Pin_9);  
GPIO_ResetBits(GPIOF,GPIO_Pin_10);
delay10us(i);    
}
for(i = 0;i < 450;i++)
{
GPIO_SetBits(GPIOF,GPIO_Pin_9);  
GPIO_SetBits(GPIOF,GPIO_Pin_10); 
delay10us(i);    
GPIO_ResetBits(GPIOF,GPIO_Pin_9);  
GPIO_ResetBits(GPIOF,GPIO_Pin_10);
delay10us(450 - i);  
}
for(i = 0;i < 250;i++)
{
GPIO_SetBits(GPIOF,GPIO_Pin_9);  
GPIO_SetBits(GPIOF,GPIO_Pin_10); 
delay10us(i);    
}
}

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
8条回答
一眼万年
2019-07-21 05:44
至于51和32的区别,还是很清楚的,用的us延时函数,是开发板自带的,源码如下:
void delay_us(u32 nus)
{
u32 temp;       
SysTick->LOAD=nus*fac_us;     
SysTick->VAL=0x00;        
SysTick->CTRL|=SysTick_CTRL_ENABLE_Msk ;          
do
{
temp=SysTick->CTRL;
}
while((temp&0x01)&&!(temp&(1<<16)));
SysTick->CTRL&=~SysTick_CTRL_ENABLE_Msk;       
SysTick->VAL =0X00;       
}

一周热门 更多>