首先要,请在MDK(keil)工程属性的“Target“-》”Code Generation“中勾选”UseMicroLIB
在程序中添加Printf
1,#include
2,添加
#ifdef __GNUC__
#define PUTCHAR_PROTOTYPE int __io_putchar(int ch)
#else
#define PUTCHAR_PROTOTYPE int fputc(int ch, FILE *f)
#endif
PUTCHAR_PROTOTYPE
{
USART_SendData(USART1, (uint8_t) ch);
while (USART_GetFlagStatus(USART1, USART_FLAG_TXE) == RESET)
{}
return ch;
}
3,
在Main()中添加
USART_Configuration()
调用
printf("The is a example!" );
之类的输出函数
关键字:STM32 编译器 keil printf函数
引用地址:
STM32编译器keil中printf函数的应用
推荐阅读最新更新时间:2024-03-16 16:19
STM32原有的MDK工程下移植到GCC环境
1. 增加 STM32F429IGTx_FLASH.ld 这个文件存放芯片内存信息 STM32F429IGTx_FLASH.ld主要存放的是芯片内存的信息,堆栈大小,RAM,Flash大小, MEMORY{ }中存放的内存段,程序中有使用明确内存的地址的地方要在这里定义。 /* Entry Point */ ENTRY(Reset_Handler) /* Highest address of the user mode stack */ _estack = 0x20020000; /* end of RAM */ /* Generate a link error if heap and stack don&
[单片机]
STM32驱动语音模块播报实时时间
前几天有个学生在用一个语音模块,遇到了点困难,为了方便调试,自己也买了两个一起玩了一下。 今天就来简单分享一下这个模块。 模块概述 DY-SV17F 语音模块,包括IO 分段触发,UART 串口控制, ONE_line 单总线控制,标准 MP3 等 7 种工作模式; 板载 5W D 类功放,可直接驱动 4Ω, 3~5W 喇叭; 支持 MP3,WAV 解码格式; 板载4MBte flash 存储,可通过 USB 数据线连接模块上的MicroUSB接口,电脑可以将模块识别为一个U盘,打开此存储更新音频文件即可。 工作模式配置 硬件连接 原理图 为了测试方便,各位也可以画一个PCB板,这样就可以避免使用一堆杜邦线进
[单片机]
STM32入门学习笔记之低功耗实验
13.1 STM32低功耗模式概述 STM32在系统或电源复位后,芯片处于运行状态,此时HCLK为CPU提供时钟,内核执行程序代码,当CPU不需要继续运行时,可以采用低功耗模块来降低芯片的运行电流,STM32有3种低功耗模式: (1)睡眠模式:内核停止,外设继续运行 (2)待机模式:1.8V的内核电源被关闭,SRAM内容丢失,PLL,HIS,HSE振荡器断电,此模式下最低电流2uA (3)停机模式:停止所有时钟,此模式下最低电流20uA 上述三种模式的配置与唤醒条件如下表所示。 模式 进入操作 唤醒 睡眠 WFI指令 任一中断 WFE指令 唤醒事件 待机 PDDS位+SLEEPDEEP位+WFI或者WFE WKUP
[单片机]
STM32仿真器下载配置
我所使用的仿真器为 Fire-Debugger,支持ARM公司的 CMSIS-DAP 标准如下图所示。 我们把仿真器与开发板连接和电脑连接,然后给开发板上电,接下就可以通过keil软件来给开发板烧写程序。连接示意图如下图所示。 连接好之后,打开keil软件,点击红色方框的按钮。 接下来点击Debug,选择CMSIS-DAP Debugger。 然后点击Utilies,选择默认的仿真器。 再次点击Debug,然后点击Setings,按照下图所示配置。 设置完毕之后,继续设置Debug按钮下的Flash Download。 设置完成后点击编译工程后没有报错即可下载程
[单片机]
STM32从写内存到寄存器映射点亮LED
写内存 寄存器映射(1) 通过绝对地址的强制类型转换。 寄存器映射(2) 定义寄存器结构体,把外设基地址通过强制类型转换,转换成相应外设的结构体指针。这样就可以通过外设基地址访问结构体成员来操作外设寄存器。 寄存器映射(3) 提高可读性,编写端口的置位复位函数,两个形参。 寄存器映射(4) 定义初始化结构体,把能够涉及到配置到的寄存器参数全部枚举出,例如速度、模式。使用时可以把枚举出的变量写到初始化结构体里,最后调用外设的初始化函数 ,把结构体里配置好的成员写到相应的寄存器里,实现配置寄存器。 宏定义提高可移植性。
[单片机]
STM32 逐次逼近寄存器型(SAR)模拟数字转换器(ADC)
是采样速率低于5Msps (每秒百万次采样)的中等至高分辨率应用的常见结构。 SAR ADC的分辨率一般为8位至16位,具有低功耗、小尺寸等特点。 这些特点使该类型ADC具有很宽的应用范围,例如便携/电池供电仪表、笔输入量化器、工业控制和数据/信号采集等。 顾名思义,SAR ADC实质上是实现一种二进制搜索算法。 所以,当内部电路运行在数兆赫兹(MHz)时,由于逐次逼近算法的缘故,ADC采样速率仅是该数值的几分之一。 SAR ADC的架构 尽管实现SAR ADC的方式千差万别,但其基本结构非常简单(见图1)。 模拟输入电压(VIN)由采样/保持电路保持。 为实现二进制搜索算法,N位寄存器首先设置在中间刻度(即:100... .00
[单片机]
STM32入门编程总结(时钟+GPIO)
时钟,单片机的时钟好比人的心脏,时钟歇了,单片机也就停止工作了,51单片机就一个时钟,12M、11.0592M居多,11.0592M这么有零有整奇葩的频率主要是为了51单片机串口通信波特率能正好是个整数;STM32单片机有四个时钟,HSI、HSE、LSI、LSE,HIS是内部高速时钟(RC振荡器)8Mhz,经过倍频器后,单片机主频上限可以达到64Mhz,HSE是外部高速晶振8Mhz,经过倍频器后单片机主频上限可以达到72Mhz,LSI是内部低速40Khz时钟(RC振荡器),可以为RTC(实时时钟类似于DS1302)提供时钟,也可以为独立看门狗提供时钟,LSE是32.768khz晶振,为RTC提供时钟,32.768khz这么有零有整
[单片机]
基于STM32和CPLD的等精度测频设计
在电子工程、资源勘探、仪器仪表等相关应用中,频率测量是电子测量技术中最基本最常见的测量之一,频率计也是工程技术人员必不可少的测量工具。但是,传统的频率测量方法在实际应用中有较大的局限性,基于传统测频原理的频率计的测量精度将随被测信号频率的变化而变化,传统的直接测频法其测量精度将随被测信号频率的降低而降低,测周法的测量精度将随被测信号频率的升高而降低。本文中提出一种基于ARM与CPLD宽频带的数字频率计的设计,以微控器STM32作为核心控制芯片,利用CPLD可编程逻辑器件,实现闸门测量技术的等精度测频。 本设计的技术指标: 测频范围:1Hz~200MHz,分辨率为0.1Hz,测频相对误差百万分之一。 周期测量:信号测量范围与精
[单片机]