stm32 printf乱码

stm32 printf乱码

1.波特率设置错误
2.外部时钟HSE的HSE_VALUE错误
在这里插入图片描述
更改HSE_VALUE后边的数字为你的外部晶振频率

在使用 STM32L151C8T6 微控制器中,要使用 printf 打印信息,需要先初始化串口,并使用标准库函数重定向 printf 函数。以下是一个示例代码: ```c #include "stm32l1xx.h" #include <stdio.h> // 定义串口号和波特率 #define USARTx USART2 #define USARTx_CLK RCC_APB1Periph_USART2 #define USARTx_TX_PIN GPIO_Pin_2 #define USARTx_TX_GPIO_PORT GPIOA #define USARTx_TX_GPIO_CLK RCC_AHBPeriph_GPIOA #define USARTx_TX_SOURCE GPIO_PinSource2 #define USARTx_TX_AF GPIO_AF_USART2 #define USARTx_BAUDRATE 115200 // 初始化串口函数 void USARTx_Init(void) { USART_InitTypeDef USART_InitStructure; GPIO_InitTypeDef GPIO_InitStructure; // 使能串口和GPIO时钟 RCC_APB1PeriphClockCmd(USARTx_CLK, ENABLE); RCC_AHBPeriphClockCmd(USARTx_TX_GPIO_CLK, ENABLE); // 配置TX引脚的GPIO GPIO_InitStructure.GPIO_Pin = USARTx_TX_PIN; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF; GPIO_InitStructure.GPIO_OType = GPIO_OType_PP; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_40MHz; GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP; GPIO_Init(USARTx_TX_GPIO_PORT, &GPIO_InitStructure); // 将TX引脚配置为复用功能 GPIO_PinAFConfig(USARTx_TX_GPIO_PORT, USARTx_TX_SOURCE, USARTx_TX_AF); // 配置USART的波特率、数据位、停止位等参数 USART_InitStructure.USART_BaudRate = USARTx_BAUDRATE; USART_InitStructure.USART_WordLength = USART_WordLength_8b; USART_InitStructure.USART_StopBits = USART_StopBits_1; USART_InitStructure.USART_Parity = USART_Parity_No; USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None; USART_InitStructure.USART_Mode = USART_Mode_Tx; USART_Init(USARTx, &USART_InitStructure); // 使能USART USART_Cmd(USARTx, ENABLE); } // 重定向printf函数 int fputc(int ch, FILE *f) { USART_SendData(USARTx, (uint8_t) ch); while (USART_GetFlagStatus(USARTx, USART_FLAG_TXE) == RESET); return ch; } int main(void) { // 初始化串口 USARTx_Init(); // 使用printf函数输出信息 printf("Hello, world!\n"); while (1); } ``` 在上述代码中,我们首先定义了要使用的串口号和波特率,然后实现了初始化串口的函数 USARTx_Init()。在主函数中,我们调用了该函数,并使用 printf 函数输出了一条信息。在重定向 printf 函数 fputc() 中,我们将输出的字符通过串口发送出去。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值