STM32CubeMX
Keil
新建一个STM32CubeMX工程,选择STM32F411RE芯片,打开工程,切换到Pinout页面,展开USART1,选择“Asynchronous”模式。
切换到“Configuration”页面,点击USART1,配置串口基本参数。
切换到“Parameter Settings”,设置串口通信所需的波特率、校验方式、停止位等关键信息,同时配置好GPIO和NVIC,这里NVIC我是关掉的。
工程配置完毕,准备生产代码,因为这属于STM32CubeMX的基本操作,就不再多说了。
在/* USER CODE BEGIN Includes */和/* USER CODE END Includes */之间添加自己的头文件,printf在stdio.h,也就是这样:/* USER CODE BEGIN Includes */#include
重写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 */
在main函数的while循环中使用printf发送需要的字符串:Hello world !
测试如下:
可以试试添加一个计数器,将发送字符串的次数显示出来:
1、注意改写的是fputc而不是putchar,同时这个函数的入口参数有两个,返回参数是int不是char。
2、所有的代码添加要遵守HAL的规范,不要在非用户区域添加代码,否则当你重新使用STM32CubeMX生成代码的时候会被覆盖掉。