前言
stm32使用串口調(diào)試打印時(shí),需要對(duì)串口進(jìn)行配置并對(duì)printf進(jìn)行重定向,本文介紹如何配置串口以及printf重定向。
一、stm32串口配置
1、使用cubemx生成
示例:
1、配置選項(xiàng)選中要配置的usart
2、模式選擇異步模式,硬件流控制disable
3、配置串口參數(shù)
生成代碼后可以在工程中usart.c中查看到串口相關(guān)代碼
在工程配置中勾選“使用微庫”
2、手敲代碼通過hal庫配置
UART_HandleTypeDef huart1;
// 初始化引腳配置
void HAL_UART_MspInit(UART_HandleTypeDef* uartHandle)
{
GPIO_InitTypeDef GPIO_InitStruct = {0};
if(uartHandle->Instance==USART1)
{
/* USART1 clock enable */
__HAL_RCC_USART1_CLK_ENABLE();
__HAL_RCC_GPIOA_CLK_ENABLE();
/**USART1 GPIO Configuration
PA9 ------> USART1_TX
PA10 ------> USART1_RX
*/
GPIO_InitStruct.Pin = GPIO_PIN_9;
GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH;
HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
GPIO_InitStruct.Pin = GPIO_PIN_10;
GPIO_InitStruct.Mode = GPIO_MODE_INPUT;
GPIO_InitStruct.Pull = GPIO_NOPULL;
HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
}
}
/* 配置串口參數(shù) */
void MX_USART1_UART_Init(void)
{
huart1.Instance = USART1;
huart1.Init.BaudRate = 115200;
huart1.Init.WordLength = UART_WORDLENGTH_8B;
huart1.Init.StopBits = UART_STOPBITS_1;
huart1.Init.Parity = UART_PARITY_NONE;
huart1.Init.Mode = UART_MODE_TX_RX;
huart1.Init.HwFlowCtl = UART_HWCONTROL_NONE;
huart1.Init.OverSampling = UART_OVERSAMPLING_16;
if (HAL_UART_Init(&huart1) != HAL_OK)
{
}
}
二、printf重映射
本文給出使用寄存器和使用hal庫配置兩種方法。
1.寄存器
代碼如下(示例):文章來源:http://www.zghlxwxcb.cn/news/detail-678656.html
#include <stdio.h>
#define SHELL_UART_REG USART1
int fputc(int ch, FILE *f)
{
SHELL_UART_REG->DR = ch;
while (!(SHELL_UART_REG->SR & USART_SR_TXE))
{
}
return (ch);
}
int fgetc(FILE *f)
{
int ch;
while (!(SHELL_UART_REG->SR & USART_SR_RXNE))
{
}
ch = SHELL_UART_REG->DR;
return (ch);
}
注:不同型號(hào)stm32的寄存器會(huì)略有不同,上述僅針對(duì)stm32f1xx系列,若使用寄存器方法重映射需要注意
2.hal庫(推薦)
代碼如下(示例):
#include <stdio.h>
int fputc(int ch, FILE *f)
{
HAL_UART_Transmit(&huart1,(uint8_t*)&ch,1,0xffff);
return (ch);
}
int fgetc(FILE *f)
{
int ch;
HAL_UART_Receive(&huart1,(uint8_t*)&ch,1,0xffff);
return (ch);
}
注:將以上重定向代碼放置工程任意位置即可,之后在程序中使用printf可實(shí)現(xiàn)打印信息通過串口輸出文章來源地址http://www.zghlxwxcb.cn/news/detail-678656.html
到了這里,關(guān)于stm32 串口調(diào)試配置及printf重定向的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!