STM32使用3个串口中断和1个外部中断的问题
使用USART1发送,USART2接收,USART3发送和接收,另外使用PE2作为外部中断线。在NVIC_Configuration()中当注释钓USART3的设置时,程序运行都正常。但是不注释的时候,USART1的发送就没有了,很奇怪,哪个高人给分析分析。
void NVIC_Configuration(void)
{
NVIC_InitTypeDefNVIC_InitStructure;
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1);
//USART1
NVIC_InitStructure.NVIC_IRQChannel = USART1_IRQn;//ÉèÖÃIRQͨµÀ
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1;//ÉèÖÃÏÈÕ¼ÓÅÏȼ¶
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1;//ÉèÖôÓÓÅÏȼ¶
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;//ʹÄÜ»òʧÄÜIRQͨµÀ
NVIC_Init(&NVIC_InitStructure);
//USART2
NVIC_InitStructure.NVIC_IRQChannel = USART2_IRQn;
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1;
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 2;
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
NVIC_Init(&NVIC_InitStructure);
//USART3
/* NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1);
NVIC_InitStructure.NVIC_IRQChannel = USART3_IRQn;//ÉèÖÃIRQͨµÀ
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1;//ÉèÖÃÏÈÕ¼ÓÅÏȼ¶
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 3;//ÉèÖôÓÓÅÏȼ¶
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;//ʹÄÜ»òʧÄÜIRQͨµÀ
NVIC_Init(&NVIC_InitStructure);*/
//Int2:PPS
NVIC_InitStructure.NVIC_IRQChannel = EXTI2_IRQn;//ÉèÖÃIRQͨµÀ
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;//ÉèÖÃÏÈÕ¼ÓÅÏȼ¶
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;//ÉèÖôÓÓÅÏȼ¶
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;//ʹÄÜ»òʧÄÜIRQͨµÀ
NVIC_Init(&NVIC_InitStructure);
}
看你代码中,USART3的中断没有做处理。
你添加处理代码,看看能不能进入中断。
如果不行,试试提升USART3的中断优先级。
如果还是不行,试试注释串口1和2的代码,
先试串口3,看正不正常。
正常了,再还原测试。
还有,
建议初始化串口后,用 USART_GetITStatus 函数,
把 发送完成标志 USART_FLAG_TC 清一下。
楼主,看了下你的串口中断处理函数,我的建议是你USART1发送中断完全没必要,amount最大好像72来着,发送能不用中断就不用。用类似下面这种函数发送就好了,希望对你有帮助:lol
void USART3_SendString(u8 *s)
{
while(*s)
{
USART_SendData(USART3,*s++);
while(USART_GetFlagStatus(USART3,USART_FLAG_TC)==RESET);
}
}
刚函数发错了,你的数组里面有很多0x00。你试试这个函数
void USART3_SendBuffer(u8 *s,u8 n)
{
while(n--)
{
USART_SendData(USART3,*s++);
while(USART_GetFlagStatus(USART3,USART_FLAG_TC)==RESET);
}
}
页:
[1]