//重定义函数1
PUTCHAR_PROTOTYPE
{
/* Place your implementation of fputc here */
/* e.g. write a character to the USART */
USART_SendData(USART1, (uint8_t) ch);
/* 循环等待直到发送结束*/
while (USART_GetFlagStatus(USART1, USART_FLAG_TC) == RESET)
{}
return ch;
}
//重定义函数2
int fputc(int ch, FILE *f)
{
USART_SendData(USART1, (uint8_t) ch);
while (USART_GetFlagStatus(USART1, USART_FLAG_TC) == RESET) {}
return ch;
}
关键字:STM32 标准库 重定义 printf()函数
引用地址:
STM32中使用标准库重定义printf()函数
推荐阅读最新更新时间:2024-03-16 16:22
STM32对内部Flash的保护措施
1、STM32对内部Flash的保护措施 所有STM32的芯片都提供对Flash的保护,防止对Flash的非法访问 - 写保护和读保护。 1)、读保护即大家通常说的“加密”,是作用于整个Flash存储区域。一旦设置了Flash的读保护,内置的Flash存储区只能通过程序的正常执行才能读出,而不能通过下述任何一种方式读出: 通过调试器(JTAG或SWD); 从RAM中启动并执行的程序; 2)、写保护是以四页(1KB/页) Flash存储区为单位提供写保护,对被保护的页实施编程或擦除操作将不被执行,同时产生操作错误标志。 读与写设置的效果见下表: 读保护 写保护 对Flash的操作功能 有效 有效 CPU只能读,
[单片机]
STM32学习笔记之GPIO的基本使用
楼学习中主要使用的资料有 战舰V3资料盘——教学视频 《STM32F1开发指南-库函数版本_V3.1》 (PDF) 《零死角玩转STM32》 野火出版 使用的学习板为屹讯电子嵌入式平台v2(MCU为 STM32F103RCT6) **某些IO口带有FT标识,代表其最大工作电压达到5V CPU能直接读取外设电平 上拉电阻的作用????????????????? 下拉电阻 CPU能直接读取外部电压变化(模拟量) 0-3.3v 输出控制电路置1,输出由外部电路决定(上拉或下拉) 输出控制电路置0,输出为0 置1置0的写入由CPU执行 输出控制电路的写入由外设模块决定 输出控制电路置1,输出1;置0,输出0。
[单片机]
一文读懂STM32的基本系统
电源 无论是否使用模拟部分和AD部分,MCU外围出去VCC和GND,VDDA、VSSA、Vref(如果封装有该引脚)都必需要连接,不可悬空 对于每组对应的VDD和GND都应至少放置一个104的陶瓷电容用于滤波,并接该电容应放置尽量靠近MCU 用万用表测试供电电压是否正确,调试时最好用数字电源供电,以便过压或过流烧坏板子,电压最好一步一步从进线端测试到芯片供电端 复位、启动选择 Boot引脚与JTAG无关。其仅是用于MCU启动后,判断执行代码的起始地址 在电路设计上可能Boot引脚不会使用,但要求一定要外部连接电阻到地或电源,切不可悬空;STM32三种启动模式对应的存储介质均是芯片内置的,它们是: 用户闪存 = 芯片内置
[单片机]
STM32 RTC设置日期失败(重启后生效)的解决方法
调试STM32F429的RTC时钟时遇到了如下问题: RTC设置日期时会延迟一段时间(几秒)或重启后才生效。 分析过程: 1、分析发现原程序在RTC的WAKEUP中断里读取时间和日期,后关闭此中断,在while循环中轮询读取,再设置日期,发现可以立即生效。所以猜测在WAKEUP中断里读取日期会对日期设置产生影响。 2、重新打开WAKEUP中断,并删除其中的日期读取函数,发现可以正常设置日期。 解决方法: 1、使用WAKEUP中断读取时间,轮询读取日期。 2、不使用WAKEUP中断,轮询读取时间和日期。
[单片机]
STM32编码器接口模式
1.编码器 图1 编码器示意图 图1为编码器的示意图,中间是一个带光栅的码盘,光通过光栅,接收管接收到高电平,没通过,接收到低电平。电机旋转一圈,码盘上有多少光栅,接受管就会接收多少个高电平。 2.stm32编码器接口模式(寄存器) STM32的编码器接口模式在STM32中文参考手册中有详细的说明。 图2 STM芯片编码器接口模式说明 下图是一个计数器操作的实例,显示了计数信号的产生和方向控制。它还显示了当选择了双边沿时,输入抖动是如何被抑制的;抖动可能会在传感器的位置靠近一个转换点时产生。在这个例子中,我们假定配置如下: 图3 编码器模式下的计数器操作实例 TI 1波形先于TI 2波形90°时,
[单片机]
关于STM32配置中断和GPIO针脚问题
STM32是用的什么开发环境? STM32系列单片机,这款单片机功能强大,而且很容易学习,官方示例代码很多,稍加修改就可以开发自己的东西了。 嵌入式软体搭配最新版的STM32CubeMX个人电 脑开发 工具使用, 设计人员 可在绘图介面向导内配置微控制器,只要按一下,即可生成初始化C代码,直接用於多款市面上流行的 第三方开发 工具。 STM32Nucleo 开发板可让开发人员连接微控制器的全部I/O介面,并整合了ST-Link侦错器(debugger)/程式设计(programmer),无需单独安装侦错器。最後, STM32Nucleo 开发板拥有mbedTM功能,这表示该开发板可与个人电脑直接连结,并直接在mbed
[单片机]
STM32 变量无法赋值问题
STM32 在用JLink 调试的时候发现有一条将unsigned char赋值给int的语句始终不能执行,int类型变量的值始终为0; 查资料找到这个问题是编译器优化的原因,也就是说由于编译器优化,赋值语句始终没有执行; 解决办法: 在变量声明前加 volatile 修饰即可,这样就能保证赋值语句不会被编译器优化
[单片机]
一文了解STM32启动过程
1 概述 说明 每一款芯片的启动文件都值得去研究,因为它可是你的程序跑的最初一段路,不可以不知道。通过了解启动文件,我们可以体会到处理器的架构、指令集、中断向量安排等内容,是非常值得玩味的。 STM32作为一款高端 Cortex-M3系列单片机,有必要了解它的启动文件。打好基础,为以后优化程序,写出高质量的代码最准备。 本文以一个实际测试代码--START_TEST为例进行阐述。 整体过程 STM32整个启动过程是指从上电开始,一直到运行到 main函数之间的这段过程,步骤为(以使用微库为例): ①上电后硬件设置SP、PC ②设置系统时钟 ③软件设置SP ④加载.data、.
[单片机]