初级会员

- 积分
- 188
- 金钱
- 188
- 注册时间
- 2019-7-17
- 在线时间
- 48 小时
|
发表于 2019-7-18 09:05:54
|
显示全部楼层
试下中断配置如下:
u8 a,b,c,d;
void USART2_IRQHandler(void) //串口2中断服务程序
{
u8 Res;
// u8 a,b,c,d; // 这是局部变量 ,退出中断自动释放,应该拿出来
if(USART_GetITStatus(USART2, USART_IT_RXNE) != RESET) //接收到数据
{
Res =USART_ReceiveData(USART2);//(USART2->DR); //读取接收到的数据
if( S232_RX_CNT<64 )
{
RS232_RX_BUF[RS232_RX_CNT]=Res; //记录接收到的值
RS232_RX_CNT++; //接收数据增加1
}
else
RS232_RX_CNT = 0; //防止数组越界 ,当然根据你自己的需求实际更改
a=RS232_RX_BUF[0];
b=RS232_RX_BUF[1];
c=RS232_RX_BUF[2];
d=RS232_RX_BUF[3];
}
// RS232_RX_CNT=0; // 注释 这就是你为什么 老是第一个有数据,后面是 0
}
还有就是在串口助手 这么发送 2 3 4 5 不要 2345 这么发送,实际的发送是 23 45 (注意空格) |
|