STM32
直播中

吴湛

10年用户 968经验值
擅长:可编程逻辑
私信 关注
[问答]

串口发送数据的方式有哪几种?

串口发送数据的方式有哪几种?

回帖(1)

连比斐

2021-12-10 14:00:25
一.串口查询方式发送数据

1.如图所示可配置串口的波特率、数据长度、奇偶校验位、停止位等信息。





2.调用HAL_UART_Transmit函数可以查询方式发送数据
3.加入以下头文件和串口重定向函数可以支持printf函数
#include
int fputc(int ch, FILE* stream)
{
HAL_UART_Transmit(&huart1 , (uint8_t *)&ch, 1, 0xFFFF);
return ch;
}
二.串口中断方式发送数据

1.同查询方式发送数据 一样配置cubemx. 勾选NVIC Setting中的
2.在中断回调函数中调用HAL_UART_Receive函数可查询方式接收数据
void HAL_UART_TxCpltCallback(UART_HandleTypeDef *huart)
{
if(huart->Instance==USART1)
{
uint8_t ret = HAL_OK;
msg++;
resave_len++;
if( msg == uart_buff + 5)
{
msg = uart_buff;
}
do
{
ret = HAL_UART_Transmit_IT(&huart1,(uint8_t *)msg,1);
}while(ret != HAL_OK);
}
}
三.串口DMA方式发送数据

1.如图下图配置DMA,勾选串口中断





2.调用HAL_UART_Transmit_DMA函数发送数据
四.串口查询方式接受数据

1.同查询方式发送数据 一样配置cubemx.
2.调用HAL_UART_Receive函数可查询方式接收数据
五.串口中断方式接收数据

1.在串口初始化时加入以下代码:





2.在串口中断回调函数中加入以下代码:





六.串口DMA方式接收数据

1.初始化串口时加入以下代码:





2.在串口中断函数中加入以下代码:


举报

更多回帖

发帖
×
20
完善资料,
赚取积分