多语言展示
当前在线:568今日阅读:75今日分享:44

STM32F411RE使用printf函数

printf是C语言标准库里一个必不可少的函数,同时这个函数也是我们做单片机非常喜欢的串口调式函数,省去了很多字符串转换的操作。这里以STM32F411RE芯片为例,介绍些printf函数的用法,基础代码是用STM32CubeMX生成的。
工具/原料
1

STM32CubeMX

2

Keil

生成MX基础代码
1

新建一个STM32CubeMX工程,选择STM32F411RE芯片,打开工程,切换到Pinout页面,展开USART1,选择“Asynchronous”模式。

2

切换到“Configuration”页面,点击USART1,配置串口基本参数。

3

切换到“Parameter Settings”,设置串口通信所需的波特率、校验方式、停止位等关键信息,同时配置好GPIO和NVIC,这里NVIC我是关掉的。

4

工程配置完毕,准备生产代码,因为这属于STM32CubeMX的基本操作,就不再多说了。

增加功能代码
1

在/* USER CODE BEGIN Includes */和/* USER CODE END Includes */之间添加自己的头文件,printf在stdio.h,也就是这样:/* USER CODE BEGIN Includes */#include /* USER CODE END Includes */

2

重写fputc函数,注意函数返回值和入口参数:/* USER CODE BEGIN 0 */int fputc(int ch, FILE * stream){ HAL_UART_Transmit(&huart1, (uint8_t *)&ch, 1, 1000);  return ch;}/* USER CODE END 0 */

3

在main函数的while循环中使用printf发送需要的字符串:Hello world !

4

测试如下:

5

可以试试添加一个计数器,将发送字符串的次数显示出来:

注意事项
1

1、注意改写的是fputc而不是putchar,同时这个函数的入口参数有两个,返回参数是int不是char。

2

2、所有的代码添加要遵守HAL的规范,不要在非用户区域添加代码,否则当你重新使用STM32CubeMX生成代码的时候会被覆盖掉。

推荐信息