通过CubeMX配置串口通信(示例CT117E-M4 )

STM32G431RBT6 串口

串口通信(Serial Communication), 是指外设和计算机间,通过数据信号线 、地线、控制线等,按位进行传输数据的一种通讯方式。这种通信方式使用的数据线少,在远距离通信中可以节约通信成本,但其传输速度比并行传输低。(来源百度百科)
在这里插入图片描述
从产品手册上中截取上图可以看出USB是连接到串口的可以通过传输线直接接收调试串口数据,根据CT117E-M4可以看到产品上自带DAP不需要再接其它的下载器。

1.配置RCC

在这里插入图片描述

2.配置SYS

在这里插入图片描述

3.串口配置

在这里插入图片描述
串口是异步串行通信(Asynchronous),串口配置时先选中指定的引脚配置成RX/TX再进入串配置界面选择模式,相关参数配置(波特率、数据位、校验位、停止位等)更具自己需求调整。
在这里插入图片描述

在中断配置界面对串口中断进行相关配置,使能串口中断并根据自身情况配置优先级,一般情况优先级默认即可。
在这里插入图片描述
也可以通过对DMA进行配置实现串口传输,由于是专用通道会只在传输开始时和结束时会产生中断占用CPU,可以提高项目运行的效率。

4.时钟配置

在这里插入图片描述

//阻塞式发送函数
HAL_StatusTypeDef HAL_UART_Transmit(UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size, uint32_t Timeout);
//非阻塞式发送函数(中断)
HAL_StatusTypeDef HAL_UART_Receive_IT(UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size);
//发送完毕中断回调函数
void HAL_UART_TxCpltCallback(UART_HandleTypeDef *huart);
//中断处理函数接收句柄结构体的函数指针回调(执行)结构体中定义的函数指针指向自己定义的回调函数。
// 重定向c库函数printf到串口DEBUG_USART,重定向后可以使用printf函数
int fputc(int ch,FILE *fp)
{
    HAL_UART_Transmit(&huart1,(uint8_t *)&ch,1,1000);
    return (ch);
}

这里使用到了回调函数,而且cubemx生成的回调函数时虚函数,需要自己重写实现回调功能,类似中断处理函数,实际上如接收中断回调函数就是在串口中断处理函数中使用的中断快结束时被调用触发回调。这里写一个回调函数的示例:

void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart){
    if(huart->Instance == USART1)
    {
    	//要处理的代码或标志位
        /* */
       
       	//重新调用串口接收中断函数等待下次触发
        HAL_UART_Receive_IT(&huart1,&Rx,sizeof(RX));
    }
}
  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值