当前位置: 首页 > news >正文

Keil MDK 的 STM32 开发问题:重定向 printf 函数效果不生效(Keil MDK 中标准库未正确链接)

#include "stm32f10x.h"
#include <stdio.h>void delay_us(uint16_t us);
void delay_ms(uint16_t ms);
void delay_s(uint16_t s);
void USART1_SendChar(char c);int fputc(int c, FILE *file)
{USART1_SendChar(c);return c;
}int main()
{// 串口 USART1 TX 对应 PA9// APB2 使能时钟RCC->APB2ENR |= RCC_APB2ENR_IOPAEN;RCC->APB2ENR |= RCC_APB2ENR_USART1EN;// 配置 PA9 为复用推挽输出,最大速度 50MHzGPIOA->CRH &= ~(GPIO_CRH_CNF9 | GPIO_CRH_MODE9);GPIOA->CRH |= GPIO_CRH_CNF9_1;GPIOA->CRH |= GPIO_CRH_MODE9_1 | GPIO_CRH_MODE9_0;// 配置 USART1 波特率为 115200USART1->BRR = 0x271;// 使能 USART1USART1->CR1 |= USART_CR1_UE | USART_CR1_TE;while (1){printf("Hello World 1\r\n");delay_ms(500);printf("Hello World 2\r\n");delay_ms(500);}
}
void delay_us(uint16_t us)
{SysTick->LOAD = 72 * us;SysTick->CTRL = 0x05;while (!(SysTick->CTRL & SysTick_CTRL_COUNTFLAG_Msk));SysTick->CTRL &= ~SysTick_CTRL_ENABLE_Msk;
}void delay_ms(uint16_t ms)
{while (ms--){delay_us(1000);}
}void delay_s(uint16_t s)
{while (s--){delay_ms(1000);}
}void USART1_SendChar(char c)
{while (!(USART1->SR & USART_SR_TXE));USART1->DR = c;
}
  • 在 STM32 开发中,执行上述重定向 printf 函数的程序,重定向 printf 函数效果不生效
问题原因
  • 这个问题主要的原因可能是在 Keil MDK 中标准库未正确链接
处理策略
  • 在 Keil 中正确链接标准库
  1. 点击 【Options for Target】
  1. 点击 【Target】 -> 勾选 【Use MicroLIB】
  1. 重新编译程序 -> 烧录程序
http://www.lryc.cn/news/576713.html

相关文章:

  • 基于springboot+vue的数字科技风险报告管理系统
  • 现代 JavaScript (ES6+) 入门到实战(一):告别 var!拥抱 let 与 const,彻底搞懂作用域
  • 领域驱动设计(DDD)【23】之泛化:从概念到实践
  • 网络缓冲区
  • DOP数据开放平台(真实线上项目)
  • 马斯克的 Neuralink:当意念突破肉体的边界,未来已来
  • Word之电子章制作——1
  • 【编译原理】期末
  • 华为云Flexus+DeepSeek征文|利用华为云一键部署的Dify平台构建高效智能电商客服系统实战
  • Youtube双塔模型
  • C++共享型智能指针std::shared_ptr使用介绍
  • cocos creator 3.8 - 精品源码 - 挪车超人(挪车消消乐)
  • Neo4j无法建立到 localhost:7474 服务器的连接出现404错误
  • Linux基本命令篇 —— less命令
  • springboot+Vue驾校管理系统
  • matplotlib 绘制水平柱状图
  • 基于LQR控制器的六自由度四旋翼无人机模型simulink建模与仿真
  • 使用deepseek制作“喝什么奶茶”随机抽签小网页
  • 我的世界模组开发进阶教程——机械动力的数据生成(2)
  • 【C++进阶】--- 继承
  • 基于WOA鲸鱼优化算法的圆柱体容器最大体积优化设计matlab仿真
  • 人大金仓数据库jdbc连接jar包kingbase8-8.6.0.jar驱动包最新版下载(不需要积分)
  • C++泛型编程2 - 类模板
  • C# 委托(为委托添加方法和从委托移除方法)
  • 13-StringBuilder类的使用
  • Linux内核网络协议栈深度解析:面向连接的INET套接字实现
  • 8. 【Vue实战--孢子记账--Web 版开发】-- 账户账本管理
  • Uni-App 小程序面试题高频问答汇总
  • 【Docker基础】Docker容器管理:docker top及其参数详解
  • Ubuntu 主机通过 `enp4s0` 向开发板共享网络的完整步骤