迪文科技论坛

 找回密码
 立即注册
搜索
12
返回列表 发新帖
楼主: 阿巴ab

【提问】串口通信读取数据应该如何接受

[复制链接]

1

主题

8

回帖

76

积分

注册会员

Rank: 2

积分
76
 楼主| 发表于 2024-12-19 18:01:06 | 显示全部楼层
NYYYYYY 发表于 2024-12-12 15:58
你好,方便看一下你的Serial_GetRxData()和 Serial_SendByte(RxData)这两个函数吗

这两个函数发送和接收的都是一个字节的数据,用处不大,只能做参考

void Serial_SendByte(uint8_t Byte)
{
        USART_SendData(USART3, Byte);                //将字节数据写入数据寄存器,写入后USART自动生成时序波形
        while (USART_GetFlagStatus(USART3, USART_FLAG_TXE) == RESET);        //等待发送完成
        /*下次写入数据寄存器会自动清除发送完成标志位,故此循环后,无需清除标志位*/
}
/**
  * 函    数:获取串口接收的数据
  * 参    数:无
  * 返 回 值:接收的数据,范围:0~255
  */
uint8_t Serial_GetRxData(void)
{
        return Serial_RxData;                        //返回接收的数据变量
}

/**
  * 函    数:USART1中断函数
  * 参    数:无
  * 返 回 值:无
  * 注意事项:此函数为中断函数,无需调用,中断触发后自动执行
  *           函数名为预留的指定名称,可以从启动文件复制
  *           请确保函数名正确,不能有任何差异,否则中断函数将不能进入
  */
void USART3_IRQHandler(void)
{
        if (USART_GetITStatus(USART3, USART_IT_RXNE) == SET)                //判断是否是USART1的接收事件触发的中断
        {
                Serial_RxData = USART_ReceiveData(USART3);                                //读取数据寄存器,存放在接收的数据变量
                Serial_RxFlag = 1;                                                                                //置接收标志位变量为1
//                USART_ClearITPendingBit(USART1, USART_IT_RXNE);                        //清除USART1的RXNE标志位
                                                                                                                                //读取数据寄存器会自动清除此标志位
                                                                                                                                //如果已经读取了数据寄存器,也可以不执行此代码
        }
}


回复

使用道具 举报

0

主题

926

回帖

8261

积分

论坛元老

Rank: 8Rank: 8

积分
8261
发表于 2024-12-19 19:42:44 | 显示全部楼层
收藏下,点赞,点赞
回复

使用道具 举报

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

本版积分规则

QQ|Archiver|手机版|小黑屋|迪文科技论坛 ( 京ICP备05033781号-1 )

GMT+8, 2025-8-29 06:05 , Processed in 0.043163 second(s), 19 queries .

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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