推荐阅读最新更新时间:2024-11-05 05:51
STM32中使用printf打印串口数据
摘要 该方法适用于STM32,实现了使用printf等标准C流函数输出数据的办法,极大的减少了输出串口数据时所需要做的数据处理。 实现原理 在C库中,printf()等输出流函数都是通过fputc()这个函数实现的,所以我们通过重映射的方式,修改这个函数的定义使它输出在STM32的寄存器中,便可以实现使用printf()函数在STM32串口上输出数据的功能。 Keil环境 重映射 在STM32的Keil开发环境中,C的库函数有两种实现方式 使用标准的C函数库 就是我们平常在PC Window平台上用的C库函数,此库的的优点在于实现的功能全面。但是由于这个库基本上是专为PC设计的,故而如果在嵌入式芯片中调用时将会使得工
[单片机]
STM32库函数和寄存器的区别
库函数版和寄存器版的系统时钟设置的区别: **1.**库函数的目的是让用户应用的,而寄存器更加原始 库函数的系统时钟是默认设置的,且放在启动文件里。而寄存器版的系统时钟是Stm32_Clock_Init(336,8,2,7);. **2.**库函数的快捷的,但不是每个芯片都有的;寄存器是复杂的,但是每个芯片厂商都有提供系统的寄存器设置信息。 分别打开库函数和寄存器版的I/O口设置: 库函数: RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOF, ENABLE);gotoh后先通过assert_param();函数检查格式是否正确同时只要是ENABLE,RCC- AHB1ENR |=
[单片机]
STM32的USART0与ZigBee的P02_RX和P03_TX引脚实现串口双向通信
STM32的USART0与ZigBee的P02_RX和P03_TX引脚实现串口双向通信 BY:T7 Date:20171214 At:YSU_B307 开发环境: uVision : V5.12.0.0 STM32F103V8T6 库版本 : STM32F10x_StdPeriph_Lib_V3.5.0 一、硬件连接: 1. STM32: 2. Zigbee 3.力特Z-TEK ZY099 RS232 TO TTL(5V)串口转换器 兼容电平 232转TTL 4.九针串口线RS232线db9公对公交叉线 5.STM32到ZigBee的连线图 二、代码: 1.STM32代码 :功能:
[单片机]
STM32学习笔记之总线外设映射
最近在学习使用STM32的外设,在使能外设时钟时候,经常忘记该外设是挂在哪个总线上的,基础十分不扎实,所以在这里总结了STM32三条总线的外设映射情况。 1、AHB总线: (1)Flash 存储器; (2)DMA; (3)复位和时钟控制; (4)CRC; (5)以太网; (6)SDIO; 2、APB2总线: (1)USART1; (2)高级控制定时器TIM1和TIM8; (3)模数转换器ADC1、ADC2、ADC3; (4)SPI1; (5)外部中断EXTI; (6)复用IO,AFIO; (7)通用IO:GPIOA~G; 3、APB1总线: (1)定时器TIM2到TIM7; (2)RTC; (3)WDT看门狗; (4)SPI2
[单片机]
STM32低功耗定时器(LPTIM)有哪些独特功能
开发低功耗产品,我们会比较关注整个系统的功耗问题。那么,LPTIM低功耗定时器你有关注吗? 1写在前面 在早些年,可能较少听见LPTIM这个名词。随着低功耗产品需求越来越严格,MCU厂商就推出了针对低功耗应用的LPTIM定时器。 定时器是我们常见的一种外设,之所以这么常见,原因在于定时器的用途非常广泛。 在STM32所有MCU中都配有定时器,那么你有关注、对比过各系列、各型号MCU中定时器的差异吗? 2 哪些STM32配有LPTIM定时器? 在STM32中,相对较新的MCU部分型号配有LPTIM定时器。 比如:STM32F7、H7高性能MCU,STM32L0、L4低功耗MCU,以及新推出的G0、G4系列中都配有这种LPTI
[单片机]
探析STM32上UART丢失的那一字节数据
串口 UART =Universal Asynchronous Receiver / Transmit te r,通用异步收发传输器,是工程师最常用的一种串行外设,常见的 接口 形式有TTL、 RS232 、 RS485 ,但在实际应用中还是会经常遇到各种问题,比如:丢失一字节数据。下面就结合 STM32 来讲讲UART相关内容,谈谈容易丢失一字节数据的问题。 1、UART几个标志位 STM32上UART状态 寄存器 中的几个标志位:TXE、TC、RXNE、 OR E。这几个标志位在 编程 中经常使用,数据丢失有可能就是对它们操作不当而导致出错。 TXE=Transmit dataregister empty
[单片机]
STM32缺陷之一:串口中断标志位缺陷
根据小道消息,M3内核是有缺陷的,但是这种缺陷不会在大会上想广大群众透露的。我用的是M3内核的stm32,我来寻找一些缺陷。 今天找到的是串口中断标志位缺陷。 我是做四轴飞行器的,没有买遥控器,而是用的无线串口,一开始的想法是stm32接收到串口来的数据后,进入串口中断服务函数,再比对发来的数据进行接下来的动作。 一开始的程序是没有问题的,简单点吧,串口接收到数据后,让LED转换状态。 void USART2_IRQHandler(void) { if(USART_GetITStatus(USART2, USART_IT_RXNE) ==SET) { USART_ClearFlag (USART2
[单片机]
STM32 DMA
DMA,全称为:Direct Memory Access,即直接存储器访问,DMA 传输将数据从一个地址空间复制到另外一个地址空间。当 CPU 初始化这个传输动作,传输动作本身是由DMA 控制器 来实行和完成。典型的例子就是移动一个外部内存的区块到芯片内部更快的内存区。像是这样的操作并没有让处理器工作拖延,反而可以被重新排程去处理其他的工作。 DMA 传输对于高效能嵌入式系统算法和网络是很重要的。DMA 传输方式无需 CPU 直接控制传输,也没有中断处理方式那样保留现场和恢复现场的过程,通过硬件为 RAM 与 I/O 设备开辟一条直接传送数据的通路,能使 CPU 的效率大为提高。DMA 是个非常好的功能,它不但能减轻 CPU 负担
[单片机]