1、通过STM32CubeMX配置串口。
串口1选择Asynchronous,异步通信。
115200bps,8N1,默认即可。
2、串口发送数据。
STM32Cube生成代码后,在main.c的while(1)前面加一句。
HAL_UART_Transmit(&huart1, "Hello world!\r\n", 14, 10);
HAL_UART_Transmit()是串口发送函数,
第一个参数是串口号,&huart1.
第二个参数是要发送的数组,"Hello world!\r\n",字符串可以理解成是字符数组。
第三个参数是发送数组的长度,14。
第四个参数是超时时间,10。
3、下载程序,查看结果。
4、实现printf函数。
①main.c中添加头文件。
#include "stdio.h"
②添加微库。
魔术棒--Target--勾选Use MicroLIB。
③重写fputc函数。
int fputc(int ch, FILE *f)
{
uint8_t temp[1] = {ch};
HAL_UART_Transmit(&huart1, temp, 1, 2);
return temp[0];
}
④main.c中测试printf函数。
5、串口中断。
使用最简单的方式,接收指定长度。
①main.c中添加一行代码。
HAL_UART_Receive_IT(&huart1, buf, 10);
接收10个字符时,执行串口中断回调函数。
②stm32f1xx_it.c中编写中断回调函数。
uint8_t buf[400] = {0};
void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)
{
HAL_UART_Transmit(&huart1, buf, 10, 1000);
HAL_UART_Receive_IT(&huart1, buf, 10);
}
③下载程序查看结果。
uint8_t buf[400] = {0};
void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)
{
HAL_UART_Transmit(&huart1, buf, 10, 1000);
HAL_UART_Receive_IT(&huart1, buf, 10);
}
6、使用MINI开发板下载程序。