使用了串口1,进行开发
我的原理图是如此,另外需要将A9和A10 两个PIN使用跳冒跳在一起。
原理图
项目的初始化和生成都由stm32cubeMX生成
- RCC 配置
- sys配置
3. 串口配置
clk 配置信息
project 配置
main.c函数的配置
1. 增加代码
这个部分需要增加在main函数外面
/* USER CODE BEGIN 0 */
#include <stdio.h>
//重定向c库函数printf到串口USARTx,重定向后可使用printf函数
int fputc(int ch, FILE *f)
{
/* 发送一个字节数据到串口USARTx */
HAL_UART_Transmit(&huart1, (uint8_t *)&ch, 1, 0xFFFF);
return (ch);
}
//重定向c库函数scanf到串口USARTx,重写向后可使用scanf、getchar等函数
int fgetc(FILE *f)
{
int ch;
/* 等待串口输入数据 */
while (__HAL_UART_GET_FLAG(&huart1, UART_FLAG_RXNE) == RESET);
HAL_UART_Receive(&huart1, (uint8_t *)&ch, 1, 0xFFFF);
return (ch);
}
/* USER CODE END 0 */
增加在while 函数中的数据
下面代码实现将接收到的数据,发送出来,
需要注意,这里是阻塞方式接收,如果没收到数据就一直停止在while位置,等待输入
while (1)
{
/* USER CODE END WHILE */
uint8_t ch[10];
/* 等待串口输入数据 */
while (__HAL_UART_GET_FLAG(&huart1, UART_FLAG_RXNE) == RESET);
HAL_UART_Receive(&huart1, (uint8_t *)&ch, 10, 0x2F);
printf("接收到字符:%s \r\n",ch);
/* USER CODE BEGIN 3 */
}
/* USER CODE END 3 */
在状态栏魔术棒中,打开选项,Target,选上“调用库函数”Use MicroLIB