STM32串口

2022/3/2 6:17:59

本文主要是介绍STM32串口,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

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开发板下载程序。



这篇关于STM32串口的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程