基于CubeMX 学习 串口收发实验
1、Cube 配置部分
1.串口相关参数配置:
实验用的是串口1异步通信模式,波特率为115200,数据长度为8位,无校验位,1位停止位,其它参数默认。
2.配置好后可以看到PA9作为串口TX,PA10作为串口RX。
3.开启串口中断功能。
4.配置串口中断抢占优先级和响应优先级。
5.工程模块化配置管理。
可以看到勾选产生独立的.c/.h文件后独立产生一个串口文件存放串口相关内容。
2、MDK 程序部分
#include “usart.h” //串口头文件内容
/* 使能串口1句柄 */
UART_HandleTypeDef huart1;
/* 串口初始化配置 */
void MX_USART1_UART_Init(void)
{
huart1.Instance = USART1;
huart1.Init.BaudRate = 115200;
huart1.Init.WordLength = UART_WORDLENGTH_8B;
huart1.Init.StopBits = UART_STOPBITS_1;
huart1.Init.Parity = UART_PARITY_NONE;
huart1.Init.Mode = UART_MODE_TX_RX;
huart1.Init.HwFlowCtl = UART_HWCONTROL_NONE;
huart1.Init.OverSampling = UART_OVERSAMPLING_16;
if (HAL_UART_Init(&huart1) != HAL_OK)
{
Error_Handler();
}
}
串口基地址判断语句,如果是串口1则执行里面的初始化内容。
main里面的串口初始化。
2.1 串口发送字符串
代码如下(示例):
uint8_t buff[]="Hello World!\r\n";
HAL_UART_Transmit(&huart1,buff,sizeof(buff)-1,10);//最大超时时间:HAL_MAX_DELAY
2.2 串口中断发送字符串
代码如下(示例):
uint8_t buff[]="Hello World!\r\n";
HAL_UART_Transmit_IT(&huart1,buff,14);
2.3 串口接收数据
代码如下(示例):
uint8_t rxDate[15];
HAL_UART_Receive(&huart1,rxDate,15,10);
2.4 串口中断接收数据
代码如下(示例):
uint8_t rxDate[15];
HAL_UART_Receive_IT(&huart1,rxDate,12);
2.5 串口重定向
代码如下(示例):
/* USER CODE BEGIN Includes */
#include "stdio.h"
/* USER CODE END Includes */
*------ 串口重定向 ------*/
int fputc(int ch,FILE *f)
{
HAL_UART_Transmit(&huart1,(uint8_t *)&ch,1,10);
return ch;
}
重定向后需要把微库勾选才行。