STM32的3种不同GPIO驱动
cathy -- 周三, 03/03/2021 - 15:26
寄存器版其实就是把ST标准外设库拷贝出来,可以简化一些操作。
寄存器版其实就是把ST标准外设库拷贝出来,可以简化一些操作。
本文将根据STM32F207参考手的中GPIO框图讲解GPIO功能。
串口发送数据
1、串口发送数据最直接的方式就是标准调用库函数 。
void USART_SendData(USART_TypeDef* USARTx, uint16_t Data);
第一个参数是发送的串口号,第二个参数是要发送的数据,但是用过的朋友应该觉得不好用,一次只能发送单个字符,所以我们有必要根据这个函数加以扩展:
void Send_data(u8 *s) { while(*s!='\0') { while(USART_GetFlagStatus(USART1,USART_FLAG_TC )==RESET); USART_SendData(USART1,*s); s++; } }
以上程序的形参就是我们调用该函数时要发送的字符串,这里通过循环调用USART_SendData来一 一发送我们的字符串。
本篇将介绍NUCLEO-L053R8(stm32l053r8t6芯片)开发板的测评,整体上这个板子沿用了传统的塑料包装。
作者:JasonShen
前言
有人利用STM32芯片做些DSP处理,在启用FPU单元进行调试、验证过程中可能会遇到些小问题、小困惑,这里通过STM32F4芯片一个具体的应用示例简单分享下,希望顺便能给同仁提供些帮助或提醒。
我这里通过调用DSP库里的FFT相关函数实现1024点的FFT运算,样点数据及运算结果均为浮点数。
在嵌入式产品应用中,常常需要应对系统数据在存储或者传输过程中的完整性问题。
所谓完整性是指数据在其生命周期中的准确性和一致性。这些数据可能存储在EEPROM/FLASH里,或者基于通信协议进行传输,它们有可能因为外界干扰或者程序错误,甚至系统入侵而导致被破坏。如果这些数据在使用前不做校验,产品功能可能失效。在一些特定领域,严重时可能会危及用户财产甚至生命安全。
本文就来聊聊使用较为广泛的循环冗余校验技术,以及在STM32中的一些具体使用体会。
所谓循环冗余校验(CRC:Cyclic Redundancy Check)是一种错误检测算法,通常在通信协议中或存储设备中用于检测原始数据的意外变动。可以简单理解成对有用数据按照一定的算法进行计算后,提取出一个特征值,并附加在有用数据后。在应用中将有用数据按照特定的算法提取特征值与预先存储的特征值进行比对,如相等则校验通过,反之校验失败,从而识别出数据是否异常。
为何要校验数据完整性(Data Integrity)?
数据在存储以及传输的过程中可能发生异动。以数据通信应用场景为例,常见的错误大致有两种失效模式:
单个位错误(Single Bit Error):仅仅某一个数据位出现错误,如图:
基于STM32芯片的工程代码里有个很重要的文件,即启动文件。该文件主要由汇编语言写成,文件名冠以.s结尾,它是芯片程序运行首先要执行的一个文件。其功能及作用简单点说就是做执行用户程序前的基本准备,比方执行复位程序初始化栈、堆,做时钟系统的默认配置、中断矢量表的定义与分配等。
本评测主要介绍NUCLEO-STM32L053R8的待机唤醒,使用板上B1按键实现唤醒功能,并使用LD2指示灯标识运行状态。使用STM32Cubemx软件实现软件操作。
配置
1.我是选择寄存器开发STM32,还是标准外设库呢?
2.你有STM32L0标准外设库吗?
3.HAL库和LL库有什么差异?
下面就来讲讲开发STM32的四种库:
1、STM32Snippets
什么是STM32Snippets?
STM32Snippets可翻译为“代码片段”、“裁剪”,其实他就是我们常说的“寄存器”开发STM32的底层驱动代码。
比如配置ADC引脚的代码片段: