STM32CubeMX实现串口打印hello world

环境
硬件:stm32f103c8t6 核心板(usb tx接核心板A10,Rx接A09)
软件:STM32CubeMX
软件:keil5 mdk
cubeMX配置:

晶振配置STM32CubeMX实现串口打印hello world_第1张图片
时钟配置(根据自己板子上的晶振频率酌情设置)注: HSE:外部高速晶振 LSE:外部低速晶振
STM32CubeMX实现串口打印hello world_第2张图片
使能USART1 全局中断

点击 GENERATE CODE 生成代码。然后打开工程

在keil5 mdk:
在文件stm32f1xx_hal_uart.h开头添加代码

/* External variables --------------------------------------------------------*/
extern UART_HandleTypeDef huart1; //声明串口
/* USER CODE BEGIN EV */

在文件 main.c中的while循环里添加代码
/* USER CODE BEGIN PV /
uint8_t TxBuffer[] = “hello windows!”;
/
USER CODE END PV */

while (1)
  {
   		HAL_UART_Transmit_IT(&huart1, TxBuffer, sizeof(TxBuffer));
		 HAL_Delay(1000);  //延时1s
    /* USER CODE END WHILE */
    /* USER CODE BEGIN 3 */
  }
void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)
{
    if(huart->Instance == USART1)
    {
		HAL_UART_Transmit_IT(&huart1,(uint8_t *)RxBuffer,10);
		HAL_UART_Receive_IT(&huart1,(uint8_t *)RxBuffer,10);
    }
}

编译,将程序烧录或下载进核心板,打开串口助手查看接收到的数据
STM32CubeMX实现串口打印hello world_第3张图片
在增加新功能:实现板载led亮,要在cubeMX配置GPIO

UART函数库

HAL_UART_Transmit():串口发送数据,使用超时管理机制
HAL_UART_Receive():串口接收数据,使用超时管理机制
HAL_UART_Transmit_IT():串口中断模式发送
HAL_UART_Receive_IT():串口中断模式接收
HAL_UART_Transmit_DMA():串口DMA模式发送
HAL_UART_Transmit_DMA():串口DMA模式接收

printf重定向办法:

#include "stdio.h"
printf("freeRTOS test\r\n");
int fputc(int ch, FILE *f){
	HAL_UART_Transmit(&huart1, (uint8_t *)&ch,1,HAL_MAX_DELAY);
	return ch;
}
int fgetc(FILE *f){
	uint8_t ch;
	HAL_UART_Receive(&huart1, (uint8_t *)&ch,1,HAL_MAX_DELAY);
	return ch;
}

你可能感兴趣的:(stm32,笔记,stm32,单片机,arm)