OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 1072|回复: 1

STMH743串口实验,例程问题

[复制链接]

10

主题

23

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
217
金钱
217
注册时间
2023-4-25
在线时间
45 小时
发表于 2024-1-4 15:12:30 | 显示全部楼层 |阅读模式
10金钱
STMH743串口实验,例程串口1中断选用了,注释掉的“下面代码我们直接把中断逻辑写在中断服务函数内部”这段代码,为什么烧录后,串口助手的数据发送不过去,是哪里有问题嘛

最佳答案

查看完整内容[请看2#楼]

//串口 1 中断服务程序 void USART1_IRQHandler(void) { u8 Res; #if SYSTEM_SUPPORT_OS //使用 OS OSIntEnter(); #endif if((__HAL_UART_GET_FLAG(&UART1_Handler,UART_FLAG_RXNE)!=RESET)) //接收中断(接收到的数据必须是 0x0d 0x0a 结尾) { HAL_UART_Receive(&UART1_Handler,&Res,1,1000); if((USART_RX_STA&0x8000)==0)//接收未完成 { if(USART_RX_STA&0x4000)//接收到了 0x0d { if(Res!=0x0a)USART_RX_S ...
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

10

主题

23

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
217
金钱
217
注册时间
2023-4-25
在线时间
45 小时
 楼主| 发表于 2024-1-4 15:12:31 | 显示全部楼层
//串口 1 中断服务程序
void USART1_IRQHandler(void)
{
u8 Res;
#if SYSTEM_SUPPORT_OS //使用 OS
OSIntEnter();
#endif
if((__HAL_UART_GET_FLAG(&UART1_Handler,UART_FLAG_RXNE)!=RESET))
//接收中断(接收到的数据必须是 0x0d 0x0a 结尾)
{
HAL_UART_Receive(&UART1_Handler,&Res,1,1000);
if((USART_RX_STA&0x8000)==0)//接收未完成
{
if(USART_RX_STA&0x4000)//接收到了 0x0d
{
if(Res!=0x0a)USART_RX_STA=0;//接收错误,重新开始
else USART_RX_STA|=0x8000; //接收完成了
}
else //还没收到 0X0D
{
if(Res==0x0d)USART_RX_STA|=0x4000;
else
{
USART_RX_BUF[USART_RX_STA&0X3FFF]=Res ;
USART_RX_STA++;
if(USART_RX_STA>(USART_REC_LEN-1))USART_RX_STA=0;
//接收数据错误,重新开始接收
}
}
}
}
HAL_UART_IRQHandler(&UART1_Handler);
#if SYSTEM_SUPPORT_OS //使用 OS
OSIntExit();
#endif
}
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-11-22 22:58

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表