STM32
直播中

冯栋

7年用户 283经验值
私信 关注
[问答]

串口中断函数打印出乱码的原因?

uint8_t f,num,RxtimeOut,flag;void USART1_IRQHandler(void){      uint8_t i; //printf("n您发送的消息为:n");    if(USART_GetFlagStatus(USART1,USART_IT_RXNE)==SET)  {       if(!flag) {       RxTimeOut=10;//字符串超时等待时间;3毫秒;       i = USART_ReceiveData(USART1);//接收下一个字符返回USARTx最近接收到的数据       USART_RX_BUF[f]=i; //data[num++]=i;    USART_SendData(USART1,USART_RX_BUF[f]);      while(USART_GetFlagStatus(USART1, USART_FLAG_TXE) == RESET) {};  //发送寄存器空标志       f=f+1;       if (f==63) {f=0;flag=1;} //32个数据接收完成,flag置1,f进入空闲状态  } flag=!flag;//f=0; }    if(USART_GetITStatus(USART1, USART_IT_RXNE) == RESET) {                   USART_ClearITPendingBit(USART1, USART_IT_RXNE);// 清除USARTx的中断待处理位
} }
void SysTick_Handler(void){    if(RxTimeOut>0)  RxTimeOut--; else    f=63; //超时进入空闲状态}这就是我写的串口中断函数,在你的mimi的板上了输入的可以打印出正确的字符,不知道为什么,一旦我换了一块别的开发板就不行了,用Printf 打印的没有问题,但是我通过串口输入的我打印出为就是乱码,但是用原本的要输入回车号的那个中断服务程序就没有问题。是不是我写的中断有存在不周密的地方,还是,请原子大哥帮忙!万分感谢!~


这两个图片就是来自上面所说的用别的板子,而用你的板子却没有问题。很奇怪呀~

回帖(2)

李佳

2020-8-24 09:23:11
受到警告
提示: 作者被禁止或删除 内容自动屏蔽
举报

李秦

2020-8-24 09:36:14
中断服务程序中不就有发送了吗?
举报

更多回帖

发帖
×
20
完善资料,
赚取积分