跳转到主要内容

干货 | STM32串口发送数据和接收数据方式总结

cathy 提交于

<strong><font color="#004a85">串口发送数据</font> </strong>

<strong><font color="red">1、串口发送数据最直接的方式就是标准调用库函数 。</font> </strong>

void USART_SendData(USART_TypeDef* USARTx, uint16_t Data);

第一个参数是发送的串口号,第二个参数是要发送的数据,但是用过的朋友应该觉得不好用,一次只能发送单个字符,所以我们有必要根据这个函数加以扩展:
<pre>void Send_data(u8 *s)
{
while(*s!='\0')
{
while(USART_GetFlagStatus(USART1,USART_FLAG_TC )==RESET);
USART_SendData(USART1,*s);
s++;
}
}</pre>

开发板评测 | STM32 Nucleo-64评测报告

cathy /

本篇将介绍NUCLEO-L053R8(stm32l053r8t6芯片)开发板的测评,整体上这个板子沿用了传统的塑料包装。

<center><img src="http://mouser.eetrend.com/files/2021-01/wen_zhang_/100060359-118148-1.p…; alt=“” ></center>

简约不简单,内含纸板双面分别标有引脚图及芯片简单介绍和入门引导。Arduino™的连接支持和ST Morpho的扩展连接头使用户很容易扩大STM32 Nucleo板对外开发平台的功能,该平台提供了多种可供选择的适配外设板。STM32的Nucleo板集成了ST-LINK/V2-1调试器/编程器,和STM32 Nucleo板搭配的软件包有包含了众多例程的STM32 HAL软件库,在mbed在线平台上也能找到。

开发板评测 | STM32 Nucleo-64评测报告

cathy /

<strong><font color="#004a85">作者:JasonShen</font> </strong>

<strong>前言</strong>

非常感谢芯快递和贸泽工程师社区给予的申请STM32 Nucleo-64开发套件的机会,其实收到开发板好十几天了,由于个人项目原因没有时间进行没有拆才上电测试,现在周末时间抽空完成个人的第一篇评测文章,个人使用ST的产品比较多,例如STM32F769I-Disco,在这期间通过查找相关资料,也学习到新的知识,同时对于STM32 Nucleo-64的产品有更深入的了解。

关于STM32浮点运算单元FPU的小话题

cathy /

有人利用STM32芯片做些DSP处理,在启用FPU单元进行调试、验证过程中可能会遇到些小问题、小困惑,这里通过STM32F4芯片一个具体的应用示例简单分享下,希望顺便能给同仁提供些帮助或提醒。

我这里通过调用DSP库里的FFT相关函数实现1024点的FFT运算,样点数据及运算结果均为浮点数。

<center><img src="http://mouser.eetrend.com/files/2020-12/wen_zhang_/100060037-116779-1.p…; alt=“”></center>

上图中A区代码是做样点数据准备,B区代码完成FFT运算。我们来一起看看基本的配置以及不启用硬件浮点单元和启用硬件浮点单元执行B区代码的时间上的差别。

程序里要调用一些数学函数,而这些数学函数往往集成在相应的数学函数库里。我们选用ARM公司的DSP数学库,该库系专门针对AMR核芯片及指令系统而组织的代码,相比IDE自带的通用数学函数库会更优化、高效。

资深工程师:图说CRC原理应用及STM32硬件CRC外设

cathy 提交于

在嵌入式产品应用中,常常需要应对系统数据在存储或者传输过程中的完整性问题。

所谓完整性是指数据在其生命周期中的准确性和一致性。这些数据可能存储在EEPROM/FLASH里,或者基于通信协议进行传输,它们有可能因为外界干扰或者程序错误,甚至系统入侵而导致被破坏。如果这些数据在使用前不做校验,产品功能可能失效。在一些特定领域,严重时可能会危及用户财产甚至生命安全。

本文就来聊聊使用较为广泛的循环冗余校验技术,以及在STM32中的一些具体使用体会。

所谓循环冗余校验(CRC:Cyclic Redundancy Check)是一种错误检测算法,通常在通信协议中或存储设备中用于检测原始数据的意外变动。可以简单理解成对有用数据按照一定的算法进行计算后,提取出一个特征值,并附加在有用数据后。在应用中将有用数据按照特定的算法提取特征值与预先存储的特征值进行比对,如相等则校验通过,反之校验失败,从而识别出数据是否异常。

<strong>为何要校验数据完整性(Data Integrity)?</strong>

数据在存储以及传输的过程中可能发生异动。以数据通信应用场景为例,常见的错误大致有两种失效模式:

Octonion发布可在意法半导体的STM32 MCU上运行的AI工业状态监测扩展软件包

winniewei /

专业开发工业设备诊断边缘人工智能(AI)的深度技术软件公司Octonion 发布了一个STM32Cube扩展软件包。该软件包是针对来自横跨多重电子应用领域的全球领先的半导体供应商意法半导体(STMicroelectronics,简称ST;纽约证券交易所代码:STM)的工业级STM32L4 +微控制器开发板的优化过的状态监测解决方案。

关于STM32启动文件的几个小问题

cathy /

基于STM32芯片的工程代码里有个很重要的文件,即启动文件。该文件主要由汇编语言写成,文件名冠以.s结尾,它是芯片程序运行首先要执行的一个文件。其功能及作用简单点说就是做执行用户程序前的基本准备,比方执行复位程序初始化栈、堆,做时钟系统的默认配置、中断矢量表的定义与分配等。

网络上有些文章对该文件做了不错的整体性介绍,这里仅就该文件中的几个小问题一起交流分享下。【注:下面用到的工程是基于STM32F429的,使用IDE为ARM MDK】

<strong>一、 怎么在编译后的MAP文件里看不到变量__heap_base?</strong>

有人发现在启动文件里明明有定义__initial_sp和__heap_base,可在MAP文件里只看到__initial_sp的地址安排,却死活找不到__heap_base的影子。为什么呢?

这是因为我们目前的工程代码里没有涉及到堆操作。虽然启动文件里有针对HEAP的配置,但由于代码里实际上没用到堆,编译时候就没分配堆的地址相关信息,自然在MAP文件里找不到__heap_base。【注:文中所有图片可点击放大查看】

STM32