1、首先需要设置keil
![keil环境设置(如图,红圈中选中)](https://img-blog.csdn.net/20180509170628341?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dhbmd6aGltaW5fMDcwMg==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70)
2、添加头文件
3、在代码中增加两段代码
增加第一段代码:
#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(USART3, (uint8_t)ch);
while(USART_GetFlagStatus(USART3, USART_FLAG_TC) == RESET)
{
}
return ch;
}
4、当然,STM32的USART的初始化不能少
经过上面4步,就可用使用printf函数了。
关键字:keil环境 STM32 printf
引用地址:
keil环境下STM32使用printf
推荐阅读最新更新时间:2024-03-16 16:22
STM32学习之Flash 写入操作&看门狗喂狗
这两天调试的时候碰到这样一个问题,当我在向flash 中写入数据的时候,系统复位的概率高很多,而且获取复位标识,都是看门狗复位,然而我在做喂狗的定时器使用的中断优先级和抢占优先级都是最高的,应该是不会出现这样问题的。 百度得到的原因: 系统在写入flash 时,系统会对flash 总线进行锁定,导致中断即使发生了,也没有办法读取flash 中的指令,从而导致复位; 摘录大神的解释
[单片机]
STM32的便携式手机蓝牙考勤机系统设计
引言 目前,大部分考勤系统还是磁卡考勤系统,这类系统不仅签到速度慢,而且终端设备和磁卡也造成一定成本和浪费;指纹考勤、人脸识别考勤、视网膜考勤等新一代考勤技术虽然大大地提高了考勤效率和准确率,但是这类考勤机的费用较高、操作比较麻烦。以上几种都是采用被动式的考勤机制,科技的发展和生活节奏的加快为被动式考勤方式带来了新的挑战,手机蓝牙考勤机就是针对以上考勤机的缺点而设计的,使用手机蓝牙考勤机可以实现人员经过即可轻松签到。 1 考勤机硬件设计 1.1 系统整体硬件设计 如图1所示,考勤机系统主要由以下5个部分组成:基于Cortex-M3核的STM32F103RBT6微处理器作为核心控制器件,主要负责控制系统各部分的工作
[单片机]
STM32学习笔记一一串口 IAP
1. 简述 IAP(In-Application-Programming):应用编程,是应用在Flash程序存储器的一种编程模式,它可以在应用程序正常运行的情况下,通过调用特定的 IAP 程序对另外一段程序 Flash(User Flash) 空间进行读/写操作,甚至可以控制对某段、某页甚至某个字节的读/写操作。主要用于数据存储和固件升级。对于 IAP 应用,通常会有两个程序,第一个程序 Bootloader 程序不执行正常功能,只是通过某种方式(串口,usb,SD卡)接收第二个程序,并进行更新。第二个程序APP程序是执行的主体,用于实现应用功能。两部分项目代码都同时烧录在 User Flash 中。 执行流程如下:
[单片机]
stm单片机型号的意义 stm8和stm32的烧写程序的区别 stm8读取程序
stm单片机型号的意义 STM单片机型号一般由几个部分组成,每个部分都代表着不同的意义: 第一部分:STM或STM32或STM8,代表单片机的品牌和系列。STM32系列是基于ARM Cortex-M内核的单片机系列,而STM8系列则是基于ST8内核的单片机系列。 第二部分:数字,代表单片机的性能等级,数字越高代表性能越高,功能也更加强大。例如,在STM32系列中,STM32F0代表基本型号,STM32F1代表通用型号,STM32F2代表高性能型号,STM32F3代表模拟型号,STM32F4代表高性能数字信号控制型号等。 第三部分:字母,代表单片机的特性和功能。例如,在STM32F4系列中,H代表高速器件,C代表低功耗器件,E代
[单片机]
STM32入门之LED控制
为什么要学STM32? STM32是32位的单片机却只要八位单片机的价格,速度也是八位的好几倍。 更重要的是它作为ARM入门级的芯片比较容易掌握,网上资料也很多,很多人都在用。 STM32的IO端口有7个寄存器来控制,但是我们常用的就4个CRL CRH IDR ODR . 端口配置低寄存器(GPIOx_CRL) 端口配置高寄存器(GPIOx_CRH) 端口输入数据寄存器(GPIOx_IDR) 端口输出数据寄存器(GPIOx_ODR) 其中CRL 控制高8位的 IO CRH 低8 这两个实质是一样的。 对照我们AVR来看GPIOx_CRL就相当于DDRx ,GPIOx_ODR就相当于PORTx,G
[单片机]
STM32+FreeRTOS+CUBEMX_学习笔记(五)HAL串口终极总结
前言: 在写这篇文章的过程中,我参考了很多的博文。这些博文给了我很多帮助,但是不得不说,网上的博文终究是层次不齐的。当遇到一些关于原理的地方,还是官方文档比较靠谱。毕竟官方要保证这些文档的可靠性。 如果只是想找对应的方式,直接看目录到对应的地方就可以啦 注意,源码库在最后。 目的: 学习HAL库串口操作函数 实现串口的中断收发定长数据 实现串口的帧头帧尾判断收发不定长数据 实现串口的空闲中断收发不定长数据 实现串口的DMA收发不定长数据 环境和平台: keil5 cubemx stm32c8t6 一、HAL库的串口函数学习: 1.1、hal库: HAL库是ST新推出的官方库,该库同图形化开发工具CUBEMX可以结合
[单片机]
STM32 基础系列教程 13 – ADC DMA
前言 学习stm32 adc模数转换接口使用,学会用STM32对模拟信号时行采样,通过DMA方式得到ADC结果。 示例详解 基于硬件平台: STM32F10C8T6最小系统板, MCU 的型号是 STM32F103c8t6, 使用stm32cubemx 工具自动产生的配置工程,使用KEIL5编译代码。 本示例所用的最小系统板原理图: 从本节开始,关于CUBEMX工具及KEIL工具的操作将不再细讲,如果还有不熟悉的可以查看之前的教程文档。下面直接介绍工程配置: 系统时钟树(ADC最大时钟不超过14M) ADC配置(轮询与中断模式不适用于多通道扫描模式,如果要多通道,需要用到DMA),开启连续转换模式!
[单片机]
stm32 定时器3产生指定数量的脉冲
一、场景描述:利用PB5产生一定数量的脉冲信号。PB5是定时器3的第2通道。 二、产生PWM代码: void Timer3_Configuration(void ) { TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure; TIM_OCInitTypeDef TIM_OCInitStructure; TIM_DeInit(TIM3); // ƵÂÊ30K //Õ¼¿Õ±È50% // TIM_TimeBaseStructure.TIM_Period = 100-1; //TIM_TimeBaseStructure.TIM_Prescaler =24-1;
[单片机]