跳转到主要内容

STM32

STM8、STM32可以超频吗?

demi /

开篇问大家一个问题:STM32F103默认最高主频为72M,那么,其主频可以达到80M吗? 假如达到80M,程序能正常运行吗?

<font size="3"><strong>1、关于MCU主频</strong></font>

首先,还是简单介绍一下MCU主频。一般我们讲的电脑CPU主频,对于MCU来说,其实道理一样,都是指的CPU内核工作的时钟频率。

对于STM8,或者STM32来说,MCU的主频由硬件(晶振)和软件编程决定。

在STM32中,MCU主频一般是通过倍频来实现的。比如72M,等于8M时钟,9倍频(8 x 9 = 72)。

在STM8、32中,我们说的主频时钟和外设时钟,其实是两种不同时钟。

查看MCU「参考手册」STM8的CLK时钟控制章节,STM32的RCC复位和时钟控制章节的时钟树一目了然。

<font size="3"><strong>2、STM8主频时钟</strong></font>

在STM8「参考手册」Clock control(CLK)时钟控制章节,详细描述了STM8时钟相关的内容。

STM32学习之启动代码很重要!

demi 提交于

最近在写一个人机界面,由于硬件同事布板的问题,必须要用到串口4,先开始我还觉得没什么,就是把USART1改成4以及改下开启时钟和配置引脚。

但是事实证明我的想法是多么愚蠢,调了整整2天,UART4发送很好,但是就是在接收时死活的卡在中断之前,就会进入HardFaultException B HardFaultException。真是百思不得其解,我就一步步调试跟踪,也没有发现任何问题,UART4的配置都是正确的,引脚也都没问题。这两天真是调试的快崩溃了。在网上查询该问题,大家也都没有答案,有些人甚至直接说UART4不能用,说心里话我不相信,别个STM那么大的公司,会推出不能用的功能?

在我最无助的时候,我突然想起我们大学老师的一句话,中断出问题,就多看看启动代码的中断向量部分,多去理解。事实证明老师是对的,我花了半天的时间仔细的看了我的启动代码,乖乖启动代码里面居然没有

IMPORT UART4_IRQHandler

IMPORT UART5_IRQHandler

DCD UART4_IRQHandler

DCD UART5_IRQHandler

而串口1、2、3都有。于是我加上了以上代码,串口成功的进入中断,并且接收到了数据。

意法半导体推出STM32神经网络开发工具箱

demi /

<font color="#FD8900">&nbsp; • &nbsp;高人气的STM32CubeMX软件工具扩展包STM32Cube.AI可生成优化代码,在STM32微控制器(MCU)上运行神经网络</font>
<font color="#FD8900">&nbsp; • &nbsp;STM32Cube.AI附带即用型软件函数包,包含用于识别人类活动和音频场景分类的代码示例,可立即用于意法半导体参考传感器板和移动应用程序</font>
<font color="#FD8900">&nbsp; • &nbsp;ST合作伙伴计划和STM32 AI / ML社区的优质合作伙伴为开发者提供支持服务</font>

横跨多重电子应用领域的全球领先的半导体供应商意法半导体 (STMicroelectronics,简称ST;纽约证券交易所代码:STM)借助STM32系列微控制器的市场领导地位,扩展了STM32微控制器开发生态系统STM32CubeMX,增加了先进的人工智能(AI)功能。

STM32单片机硬件关键基础精华及注意事项

demi /

<strong>一、背景</strong>

如果你正为项目的处理器而进行艰难的选择:一方面抱怨16位单片机有限的指令和性能,另一方面又抱怨32位处理器的高成本和高功耗,那么,基于 ARM Cortex-M3内核的STM32系列处理器也许能帮你解决这个问题。使你不必在性能、成本、功耗等因素之间做出取舍和折衷。

即使你还没有看完STM32的产品手册,但对于这样一款融合ARM和ST技术的“新生儿”相信你和我一样不会担心这款针对16位MCU应用领域 的32位处理器的性能,但是从工程的角度来讲,除了芯片本身的性能和成本之外,你或许还会考虑到开发工具的成本和广泛度;存储器的种类、规模、性能和容量;以及各种软件获得的难易。

对于在16位MCU领域用惯专用在线仿真器(ICE)的工程师可能会担心开发工具是否能够很快的上手?开发复杂度和整体成本会不会增加?产品上市时间会不会延长?

没错,对于32位嵌入式处理器来说,随着时钟频率越来越高,加上复杂的封装形式,ICE已越来越难胜任开发工具的工作,所以在32位嵌 入式系统开发中多是采用JTAG仿真器而不是你熟悉的ICE。

STM32下波特率计算详解

demi /

波特率的计算

STM32下的波特率和串口外设时钟息息相关,USART 1的时钟来源于APB2,USART 2-5的时钟来源于APB1。在STM32中,有个波特率寄存器USART_BRR,如下:

<center><img width="600" src="http://mcu.eetrend.com/files/2018-12/wen_zhang_/100016195-54462-1.png&q…; alt=""></center>

STM32串口波特率通过USART_BRR进行设置,STM32的波特率寄存器支持分数设置,以提高精确度。USART_BRR的前4位用于表示小数,后12位用于表示整数。但是它还不是我们想要设置的波特率,想要设置我们串口的波特率大小还需要进行计算。

其实有关波特率的计算是下面这一条表达式:

意法半导体为免费的STM32微控制器开发生态系统

demi /

<font color="#FD8900">&nbsp; • &nbsp; 继意法半导体收购Draupner Graphics后,TouchGFX套件现已紧密集成在STM32Cube生态系统中</font>
<font color="#FD8900">&nbsp; • &nbsp; 高端图形界面开发工具和软件框架,支持STM32微控制器,与STM32Cube软件轻松协同操作</font>
<font color="#FD8900">&nbsp; • &nbsp; 免使用费和版税,可通过ST组织在全球获取软件和技术支持</font>

通过免费提供图形用户界面设计软件,帮助开发者创建功能丰富、画面流畅、色彩丰富、用户体验出色的图形界面,横跨多重电子应用领域的全球领先的半导体供应商意法半导体 (STMicroelectronics,简称ST;纽约证券交易所代码:STM)正在扩大STM32 *微控制器(MCU)对物联网产品和其它智能设备的开发人员的吸引力。

STM32通用定时器TIM2的使用方法解析

demi /

STM32中一共有11个定时器,其中2个高级控制定时器,4个普通定时器和2个基本定时器,以及2个看门狗定时器和1个系统嘀嗒定时器。(TIM1和TIM8是能够产生3对PWM互补输出的高级登时其,常用于三相电机的驱动,时钟由APB2的输出产生;TIM2-TIM5是普通定时器;TIM6和TIM7是基本定时器,其时钟由APB1输出产生)

本实验要实现的功能是:用普通定时器TIM2每一秒发生一次更新事件,进入中断服务程序翻转LED1的状态。

预备知识:

① STM32通用定时器TIM2是16位自动重装载计数器。

② 向上计数模式:从0开始计数,计到自动装载寄存器(TIMx_ARR)中的数值时,清0,依次循环。

需要弄清楚的两个问题:

1. 计数器的计数频率是什么?

如何使用STM32测量频率和占空比?

demi /

<strong>题目</strong>

(1)测量脉冲信号频率fo,频率范围为10Hz~2MHz,测量误差的绝对值不大于0.1%。

(2)测量脉冲信号占空比D,测量范围为10%~90%,测量误差的绝对值不大于2%。

使用官方STM32F429 Discovery开发板,主频180MHz,定时器频率90MHz。

<strong>思路一、外部中断</strong>

这种方法是很容易想到的,而且对几乎所有MCU都适用(连51都可以)。方法也很简单,声明一个计数变量TIM_cnt,每次一个上升沿/下降沿就进入一次中断,对TIM_cnt++,然后定时统计即可。如果需要占空比,那么就另外用一个定时器统计上升沿、下降沿之间的时间即可。

缺陷显而易见,当频率提高,将会频繁进入中断,占用大量时间。而当频率超过100kHz时,中断程序时间甚至将超过脉冲周期,产生巨大误差。同时更重要的是,想要测量的占空比由于受到中断程序影响,误差将越来越大。

笔者当时第一时间就把这个方案PASS了,没有相关代码(这个代码也很简单)。不过,该方法在频率较低(10kHz以下)时,可以拿来测量频率。在频率更低的情况下,可以拿来测占空比。

一文读懂STM32的基本系统

demi /

STM32基本系统主要有下面几个部分:

<strong>电源</strong>

&nbsp; • &nbsp;无论是否使用模拟部分和AD部分,MCU外围出去VCC和GND,VDDA、VSSA、Vref(如果封装有该引脚)都必需要连接,不可悬空
  
&nbsp; • &nbsp;对于每组对应的VDD和GND都应至少放置一个104的陶瓷电容用于滤波,并接该电容应放置尽量靠近MCU

&nbsp; • &nbsp;用万用表测试供电电压是否正确,调试时最好用数字电源供电,以便过压或过流烧坏板子,电压最好一步一步从进线端测试到芯片供电端

<strong>复位、启动选择</strong>

&nbsp; • &nbsp;Boot引脚与JTAG无关。其仅是用于MCU启动后,判断执行代码的起始地址

适用于STM32的五大嵌入式操作系统,你选哪个?

demi /

基于STM平台且满足实时控制要求操作系统,有以下5种可供移植选择,分别为μClinux、μC/OS-II、eCos、FreeRTOS和都江堰操作系统(djyos)。

下面分别介绍这五种嵌入式操作系统的特点及不足。

<font color="blue"><strong>1、μClinux</strong></font>

μClinux是一种优秀的嵌入式Linux版本,其全称为micro-control Linux,从字面意思看是指微控制Linux。同标准的Linux相比,μClinux的内核非常小,但是它仍然继承了Linux操作系统的主要特性,包括良好的稳定性和移植性、强大的网络功能、出色的文件系统支持、标准丰富的API,以及TCP/IP网络协议等。因为没有MMU内存管理单元,所以其多任务的实现需要一定技巧。

μClinux在结构上继承了标准Linux的多任务实现方式,分为实时进程和普通进程,分别采用先来先服务和时间片轮转调度,仅针对中低档嵌入式CPU特点进行改良,且不支持内核抢占,实时性一般。