OpenEdv-开源电子网

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

HAL库USART串口接收字符串问题,上电第一次只接收1字节

[复制链接]

127

主题

207

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1077
金钱
1077
注册时间
2017-9-11
在线时间
105 小时
发表于 2023-7-15 08:26:12 | 显示全部楼层 |阅读模式
20金钱
我是想使用定时器timer3设置20ms中断,每次串口中断接收到1字节数据就存到数组并刷新timer3,timer3定时时间到时提取数组。
但不知道为什么每次上电后的接收的第一组字符串""TEST"只存了1个字节'T',第二组以后就都收全了,请问如何解决第一组数据的问题?
//全局变量
uint8_t PC_RX_BUF[100];                                      // 上位机串口接收缓冲
uint16_t PC_RX_CNT;                                          // 上位机串口接收计数
uint8_t Res;                                                 // 串口接收中断缓存1字节

//main.c主程序
PC_RX_CNT = 0;
HAL_UART_Receive_IT(&huart2, &Res, 1); // 开启接收中断

//中断程序
void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)  //串口中断
{
    if (huart == (&huart2))
    {
        PC_RX_BUF[PC_RX_CNT] = Res;
        PC_RX_CNT++;
        if (PC_RX_CNT > 99)
        {
            PC_RX_CNT = 0;
        }
        // 定时器3周期20ms
        HAL_TIM_Base_Stop_IT(&htim3);
        HAL_TIM_Base_Start_IT(&htim3);        // 使能定时器3和定时器3更新中断:TIM_IT_UPDATE
        HAL_UART_Receive_IT(&huart2, &Res, 1); // 开启接收中断
    }
}void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)  //定时器中断
{
    if (htim == (&htim3))
    {
        HAL_TIM_Base_Stop_IT(&htim3);
        if ((PC_RX_CNT > 1)&&(PC_RX_BUF[0]=='T'))// PC上位机串口
        {
            HAL_UART_Transmit(&huart2, (uint8_t *)PC_RX_BUF, PC_RX_CNT, 1000); // 返回收到的数据
        }
        PC_RX_CNT = 0;
    }
}


cubemx设置
2.jpg

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

127

主题

207

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1077
金钱
1077
注册时间
2017-9-11
在线时间
105 小时
 楼主| 发表于 2023-7-15 08:34:46 | 显示全部楼层
本帖最后由 huyuezhan 于 2023-7-15 09:44 编辑

好像解决了,在HAL_TIM_Base_Start_IT(&htim3)前面把定时器中断标志清除就好了,怎么cubemx生成的一启动定时器就进中断
回复

使用道具 举报

0

主题

34

帖子

0

精华

初级会员

Rank: 2

积分
123
金钱
123
注册时间
2023-4-2
在线时间
22 小时
发表于 2023-7-15 18:02:08 | 显示全部楼层
在初始化的时候,为了更新预装载值,会置中断标志位,所以需要在NVIC开启前先清除一下标志位
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-2-24 08:22

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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