目录
完成以上步骤便可以使用Printf函数和Scanf,getchar函数
1.所用工具
①.芯片:STM32F103C8T6
②.软件:STM32CubeMX
③.IDE:keil5
④.支持库:HAL
⑤.串口1,PA9\PA10
2.使用STM32CubeMX创建工程
①:设置RCC ②:设置系统时钟
③:设置串口
④:项目设置
⑤:生成项目文件
3.重映射printf函数
①:在main.c文件中添加
/* USER CODE BEGIN Includes */
#include "string.h"
#include "stdio.h"
/* USER CODE END Includes */
②:在main.c文件声明串口与定义变量
/* Private define ------------------------------------------------------------*/
/* USER CODE BEGIN PD */
#define RXBUFFERSIZE 256
/* USER CODE END PD */
/* Private macro -------------------------------------------------------------*/
/* USER CODE BEGIN PM */
/* USER CODE END PM */
/* Private variables ---------------------------------------------------------*/
/* USER CODE BEGIN PV */
char RxBuffer[RXBUFFERSIZE];
/* USER CODE END PV */
③:在main.c文件重写fget和fput函数
/**
* 函数功能: 重定向c库函数printf到DEBUG_USARTx
* 输入参数: 无
* 返 回 值: 无
* 说 明:无
*/
int fputc(int ch, FILE *f)
{
HAL_UART_Transmit(&huart1, (uint8_t *)&ch, 1, 0xffff);
return ch;
}
/**
* 函数功能: 重定向c库函数getchar,scanf到DEBUG_USARTx
* 输入参数: 无
* 返 回 值: 无
* 说 明:无
*/
int fgetc(FILE *f)
{
uint8_t ch = 0;
HAL_UART_Receive(&huart1, &ch, 1, 0xffff);
return ch;
}
完成以上步骤便可以使用Printf函数和Scanf,getchar函数
while (1)
{
printf("ni hao");
HAL_Delay(500);
/* USER CODE END WHILE */
/* USER CODE BEGIN 3 */
}
示例
void KEY_READ(void)
{
if(HAL_GPIO_ReadPin(GPIOA,KEY0_Pin)==0)
{
HAL_Delay(5);
if(HAL_GPIO_ReadPin(GPIOA,KEY0_Pin)==0)
{
BUZZ_DRIVE();
HAL_UART_Transmit(&huart1,(uint8_t*)&"KEY\r\n",5,0xffff);//串口发送,串口号1,内容“KEY”,数量6,溢出时间
}
while(HAL_GPIO_ReadPin(GPIOA,KEY0_Pin)==0);
}
if(HAL_GPIO_ReadPin(GPIOA,KEY1_Pin)==0)
{
HAL_Delay(5);
if(HAL_GPIO_ReadPin(GPIOA,KEY1_Pin)==0)
{
HAL_GPIO_TogglePin(JDQ_GPIO_Port,JDQ_Pin);
printf("hello word\r\n");
}
while(HAL_GPIO_ReadPin(GPIOA,KEY1_Pin)==0);
}
}