本帖最后由 lcclcc 于 2018-8-24 21:39 编辑
各位高手,我今天看串口的视频自己写了个串口程序。 程序的目的是用电脑通过串口发送数据到STM32F4单片机,单片机串口接收到数据之后产生中断,中断服务函数里面让LED灯状态翻转、蜂鸣器响10ms然后关掉。可是我发现delay_ms(10);这个语句会使程序不能正常工作,具体现象是电脑发送数据时,LED灯闪了一下就灭了,蜂鸣器一直响,然后在电脑端再怎么点击发送数据,开发板上的LED和蜂鸣器的状态都不会有任何改变。我把delay_ms(10);这句注释掉,就不会有这种情况发生(只是蜂鸣器没有了声音)。我通过ST Link调试器查看USART_SR寄存器也没看出注释和不注释的时候USART_SR寄存器有什么区别。我现在把工程源码传上来,祈求各位大侠给点意见
中断服务函数:
//ÖжϷþÎñº¯Êý,
void USART1_IRQHandler(void)
{
if(USART_GetITStatus(USART1,USART_IT_RXNE))
{
LED0 = !LED0;
LED1 = !LED1;
LED2 = !LED2;
USART1->SR &= 0xFFFFFFDF;
}
// BEEP = 0;
// delay_ms(10);
// BEEP = 1;
}
回头是岸!不要在中断里折腾延时了!
一周热门 更多>