跳转到主要内容

STM32

STM32中断和事件的区别!

cathy /

<strong>STM32中断和事件的区别!</strong>

事件是中断的触发源,开放了对应的中断屏蔽位,则事件可以触发相应的中断。

事件还是其它一些操作的触发源,比如DMA,还有TIM中影子寄存器的传递与更新;而中断是不能触发这些操作的,所以要把事件与中断区分开。当你只要产生中断而不想触发其它操作时,就可以用事件屏蔽寄存器实现。
在STM32中,中断与事件不是等价的,一个中断肯定对应一个事件,但一个事件不一定对应一个中断。

<center><img src="http://mouser.eetrend.com/files/2017-12/wen_zhang_/100009505-32112-zd.j…; alt=“” width="600"></center>

STM32串口DMA容易忽视的问题

cathy /

昨天晚上在STM32串口DMA的问题上纠结了好长时间,所以今天上午写篇博客来谈谈我对串口DMA发送的理解
讨论三个问题:

1、什么叫串口DMA 请求;

2、串口简要复习;

3、串口DMA发送流程。

<strong>1、什么叫串口DMA 请求(战舰STM32开发板)</strong>

说这个问题之前先简单回顾DMA的基本特性。先导出原子哥的PPT内容:

DMA 全称Direct Memory Access,即直接存储器访问。

DMA传输将数据从一个地址空间复制到另一个地址空间。当CPU初始化这个传输动作,传输动作本身是由DMA控制器来实现和完成的。

STM32有两个DMA控制器(DMA2只存在于大容量产品中),DMA1有7个通道,DMA2有5个通道,每个通道专门用来管理来自于一个或者多个外设对存储器的访问请求。还有一个仲裁器来协调各个DMA请求的优先权。

<strong>作用:为CPU减负!</strong>

当STM32遇到串口RS485双机通信,如何处理最便捷?

cathy /

RS485通信想必大家都知道,在学习RS232时,都会拿485(RS485下文就用485代替)和其作对比。485优缺点不说,网上有。

我用的是STM32库函数学的485通信,所以接下来就讲讲STM32串口实现485双机通信的原理:

485和232都是基于串口的通讯接口,在数据的收发操作上都是一致的。但是他两的通讯模式却大不相同~!232是全双工(例:A->B的同时B->A,瞬时同步)工作模式,而485是半双工(发时不能收,收时不能发)工作模式。在232通信中,主机在发送数据的同时可以收到从机发过来的数据;但在485通信中,收发要经过模式位的切换来进行,譬如,发送数据时,会把模式为置‘1’,表示为发送模式,此时不能接收;当接收数据时,会把模式位置‘0’,表示为接收模式,此时不能发送。

<strong>在讲STM32串口实现485双机通信的原理之前,先来复习一下串口中的中断知识点:</strong>

如何在IAR中配置CRC参数

cathy /

<strong>前言</strong>

STM32全系列产品都具有CRC外设,对CRC的计算提供硬件支持,为应用程序节省了代码空间。CRC校验值可以用于数据传输中的数据正确性的验证,也可用于数据存储时的完整性检查。在IEC60335中,也接受通过CRC校验对FLASH的完整性进行检查。在对FLASH完整性检查的应用中,需要事先计算出整个FLASH的CRC校验值(不包括最后保存CRC值的字节),放在FLASH的末尾。在程序启动或者运行的过程中重新用同样的方法计算整个FLASH的CRC校验值,然后与保存在FLASH末尾的CRC值进行比较。

EWARM从v5.5版本之后开始支持STM32芯片的CRC计算。前面所说的计算整个FLASH的CRC校验值并保存在FLASH末尾的过程,可以在IAR中完成。通过配置EWARM的CRC计算参数,自动对整个FLASH空间进行CRC计算,并将计算结果放到FLASH的末尾。本文中将介绍的就是如何配置IAR的CRC参数,使之与STM32的CRC硬件模块保持一致。本文中的例子都基于STM32F072进行。

<strong>STM32的CRC外设</strong>

STM32的这些经典功能,你真的掌握了吗?

cathy /

首先,在学习Cortex-M3时,我们必须要知道必要的缩略语。

<strong>整理如下:</strong>

AMBA:先进单片机总线架构 ADK:AMBA设计套件
AHB:先进高性能总线 AHB-AP:AHB访问端口
APB:先进外设总线 ARM ARM:ARM架构参考手册
ASIC:行业领域专用集成电路 ATB :先进跟踪总线

BE8:字节不变式大端模式 CPI:每条指令的周期数
DAP:调试访问端口 DSP:数字信号处理(器)
DWT:数据观察点及跟踪 ETM:嵌入式跟踪宏单元
FPB:闪存地址重载及断点 FSR:fault状态寄存器

HTM:Core Sight AHB跟踪宏单元
ICE:在线仿真器 IDE:集成开发环境
IRQ:中断请求(通常是外中断请求)
ISA:指令系统架构 ISR:中断服务例程
ITM:仪器化跟踪宏单元

用STM32上的FSMC来开发LCD

cathy /

在STM32上开发LCD显示,可以有两种方式来对LCD进行操作,一种是通过普通的IO口,连接LCM的相应引脚来进行操作,第2种是通过FSMC来进行操作。

<strong>1. LCD/LCM的基本概念</strong>

液晶显示器(Liquid Crystal Display: LCD)的构造是在两片平行的玻璃当中放置液态的晶体,两片玻璃中间有许多垂直和水平的细小电线,透过通电与否来控制杆状水晶分子改变方向,将光线折射出来产生画面。

LCM(LCD Module)即LCD显示模组、液晶模块,是指将液晶显示器件,连接件,控制与驱动等外围电路,PCB电路板,背光源,结构件等装配在一起的组件。

在平时的学习开发中,我们一般使用的是LCM,带有驱动IC和LCD屏幕等多个模块。

<strong>2.存储器的概念</strong>

在GPRS模块(SIM800C)和STM32芯片上实现MQTT协议

cathy /

<strong>一、本教程中说明的内容</strong>

<strong>先说说本文化的适用范围吧:</strong>

一、使用的芯片是STM32F103C8T6,但是并没有任何与平台相关的代码,应该在所有STM32芯片中都是可以用的。

二、本文使用的是SIM800C模块,驱动是用C++实现的,基于ARM mbed平台写的。但是从原理上来讲,C和C++差别不大,本文的代码经过修改也可以直接用于其他平台的使用。

三、本文数据传输使用的是“透传模式”,对于所有的透传模块,本文都有很大的参考意义。

<strong>二、MQTT的使用</strong>

首先,推荐一个MQTT的库:Paho,这个库支持非常多的平台,当然也包括了嵌入式平台:GitHub – paho.mqtt.embedded-c。将该库中的MQTTPacket文件夹下载下来,MQTTPacket文件夹下面主要有三个文件夹,我们使用的文件主要集中在src文件夹和samples文件夹中。

【厂商资讯】意法半导体(ST)免费驱动软件提高STM32嵌入式应用设计灵活性

editor Chen /

<font color="#FD8900">底层API让设计人员更贴近芯片,优化性能、功耗和软件内存占用率</font>

全球领先的半导体供应商意法半导体(STMicroelectronics,简称ST;纽约证券交易所代码:STM)扩大其业界领先的32位微控制器开发生态系统范围,新增STM32Cube底层应用程序编程接口(LL API)软件,让STM32ARM® Cortex®-M微控制器专家级设计用户能够更近距离接触硬件,直达寄存器级代码,以优化性能和运行时效率。

随着LL API的推出,现在STM32Cube环境在器件外设控制方面为设计人员提供全面的灵活性,从好用的可移植HAL(硬件抽象层)到高度优化的 LL API,让客户使用意法半导体的经过验证的软件,专注应用开发。

LL API集成在含有在STM32Cube软件包内,该软件包含有在STM32 Nucleo开发板上运行的项目例程,将项目例程移植到其它的STM32开发板上也很容易简单。LL API和相应的HAL可以同时运行在同一个项目内 ,让设计人员在上市时间、软件内存占用率和运行时效率之间灵活地选择最佳平衡点。