跳转到主要内容

STM32

STM32单片机是如何启动的?

judy /

<strong>STM32中的内存</strong>

STM32中的内存包含两块主要区域:flash memory(只读)、static ram memory(SRAM,读写)。其中,flash memory 起始于0x08000000,SRAM起始于0x20000000。flash memory的第一部分存放异常向量表,表中包含了指向各种异常处理程序的指针。比如说,RESET Handler便位于0x08000004的位置,在处理器上电或重启时执行。在0x08000000处存放的是内部栈指针。

意法半导体(ST)全新多合一软件工具,让STM32用户烧写代码更方便

judy /

意法半导体STM32CubeProgrammer (STM32CUBEPROG)软件工具,在一个统一的多平台的用户可配置的环境内,为用户提供STM32 微控制器代码烧写和固件升级功能。

STM32CubeProgrammer支持Windows®、Linux、MacOS® 三大操作系统,可以使用各种文件格式向STM32微控制器内部闪存/RAM或外部存储器烧写代码。具体功能包括存储器整体或扇区擦写选项字节。用户还可以生成程序安全烧写(固件安全安装更新)功能所需的加密文件,验证生产线上安装的软件的真伪,保护知识产权。

有了这个通用工具后,用户烧写STM32微控制器既可使用片上SWD (单线调试)或JTAG调试端口,也可以用程序引导装入端口(例如 UART和USB)。因此,STM32CubeProgrammer是将ST Visual Programmer、DFUse Device Firmware Update、Flash Loader和 ST-Link等软件工具的各自功能全部整合到了STM32Cube生态系统。意法半导体还将要把STM32CubeProgrammer的烧写通道扩展到微控制器的I2C和 CAN端口。

采用STM32嵌入式语音识别电路模块设计

judy /

本文介绍了一种以ARM为核心的嵌入式语音识别模块的设计与实现。模块的核心处理单元选用ST公司的基于ARM Cortex-M3内核的32位处理器STM32F103C8T6。本模块以对话管理单元为中心,通过以LD3320芯片为核心的硬件单元实现语音识别功能,采用嵌入式操作系统μC/OS-II来实现统一的任务调度和外围设备管理。经过大量的实验数据验证,本文设计的语音识别模块具有高实时性、高识别率、高稳定性的优点。

<strong>语音识别电路</strong>

STM32F091 空片使用 ST-LINK 编程后不能直接运行用户代码

judy /

<font color="blue"><strong>前言</strong></font>

看过另一篇实战经验<a href="http://mcu.eetrend.com/content/2017/100009201.html"&gt;《STM32F091 空片使用 System Bootloader 下载代码》</a> 之后,就会知道 STM32F091 有一项特殊的功能,就是在空片的情况下既可以使用 ST-Link 等编程工具进行编程,也可以使用 System Memory 中的 Bootloader 进行下载代码。这完善了整个编程体系,给用户在编程方案的选择上带来很大的方便。但是,在某些特定应用上,好心也可能会干坏事哦。

下面就来聊聊这个事是怎么来的,并且找出相应的对策。

<font color="blue"><strong>问题</strong></font>

STM32 GPIO外部中断总结

judy /

<strong>一、STM32中断分组:</strong>

STM32 的每一个GPIO都能配置成一个外部中断触发源,这点也是 STM32 的强大之处。STM32 通过根据引脚的序号不同将众多中断触发源分成不同的组,比如:PA0,PB0,PC0,PD0,PE0,PF0,PG0为第一组,那么依此类推,我们能得出一共有16 组,STM32 规定,每一组中同时只能有一个中断触发源工作,那么,最多工作的也就是16个外部中断。STM32F103 的中断控制器支持 19 个外部中断/事件请求。每个中断设有状态位,每个中断/事件都有独立的触发和屏蔽设置。STM32F103 的19 个外部中断为:

STM32F091 空片使用 System Bootloader 下载代码

judy /

<strong>前言</strong>

我们在<a href="http://mcu.eetrend.com/content/2017/100009199.html"&gt;《STM32F09x 不使用 BOOT 脚实现 System Bootloader 升级代码》</a>中实现了通过修改 Option Bytes 来达到控制BOOT0 和 BOOT1,在不需要外部 BOOT 脚的情况下实现了使用 System Bootloader 进行代码升级的功能。可是,这个功能必须在程序中预先烧写了功能程序后,才能不断地进行升级。也就是说,在第一次空片烧写时,必须使用 SWD 进行烧写的。

那有没有可能在空片烧写时,就可以直接使用 System Bootloader 进行烧写呢?这样我们就可以完全使用串口进行烧写和升级了。现在,我们来探讨这个问题。

<strong>问题</strong>

【下载】STM32F09x 不使用 BOOT 脚实现 System Bootloader 升级代码

judy /

众所周知,使用 STM32 时,当需要使用 System Memory 中的 Bootloader 进行代码升级的时候,需要将 BOOT0 脚拉高,复位后才能进入 Bootloader 程序,使用 Flash Loader Demonstrator 等工具进行串口烧写升级。这就需要在 BOOT0 这个引脚上留出按键或者是跳线脚。但是,STM32F09x 具有一项新的特性,使不必使用 BOOT 脚而进行串口升级成为可能。我们来共同探讨一下。

点击下载<span class="download"><a href="http://mcu.eetrend.com/files/2017-12/wen_zhang_/100009199-31024-stm32f0…;《STM32F09x 不使用 BOOT 脚实现 System Bootloader 升级代码》</a></span>

基于STM32的半导体制冷片控制系统设计

judy /

一些医疗检测仪器在检测时需要模拟人体温度环境以确保检测的精确性,本文以STM32为主控制器,电机驱动芯片DRV8834 为驱动器,驱动半导体致冷器(帕尔贴)给散热片加热或者制冷。但由于常规的温度控制存在惯性温度误差的问题,无法兼顾高精度和高速性的严格要求,所以采用模糊自适应PID控制方法在线实时调整PID参数,计算PID参数Kp、Ki、Kd调整控制脉冲来控制驱动器的使能。从simulink仿真的和实验结果来看模糊PID控制系统精度高、响应速度快,能达到预期效果。

温度参数是工业生产中常用的被控对象之一,在化工生产、冶金工业、电力工程和食品加工等领域广泛应用,在医疗检测设备中时常需要模拟人体温度进行成分检测。采用直流电机驱动芯片DRV8834驱动帕尔贴的制冷和加热过程。温度随时间的变化率和变化的方向不确定且可能大幅度的变化,要求系统的实际温度快速和精确地跟踪设定温度以满足加工工艺的要求。时间程序温度控制系统具有强烈的非线性、强耦合、大时滞和时变等特点,传统PID控制虽然算法简单易于实现且调整时间较快、精度较高,但是抗干扰能力不强,容易产生振荡;模糊PID不需要精确的数学模型,能较好的处理时变、非线性、滞后等问题,有很好的鲁棒性,响应速度快。

1 过程分析及常规控制方法

【下载】[应用笔记]STM32 USART自动波特率检测

judy /

正确的USART通信要求发送和接收波特率的匹配度足够高,否则可能发生通信错误。

当在两个设备之间建立通信链路时,自动波特率检测十分有用,因为从设备能够检测到主控制器的波特率并进行相应的自我调整。这需要使用一种自动机制来确定波特率。

某些STM32器件中内置的USART外设提供许多功能,包括硬件自动波特率检测。

本应用笔记旨在介绍STM32微控制器的自动波特率检测功能,并为没有在硬件中实现此功能的STM32器件提供替代软件方法。

点击下载<span class="download"><a href="http://mcu.eetrend.com/files/2017-12/wen_zhang_/100009174-30858-v1.pdf"…;《【应用笔记】STM32 USART自动波特率检测 》</a></span>

STM32之TFT-LCD液晶学习

judy /

TFT-LCD即薄膜晶体管液晶显示器。其英文全称为:Thin Film Transistor-Liquid Crystal Display。TFT-LCD与无源TN-LCD、STN-LCD的简单矩阵不同,它在液晶显示屏的每一个象素上都设置有一个薄膜晶体管(TFT),可有效地克服非选通时的串扰,使显示液晶屏的静态特性与扫描线数无关,因此大大提高了图像质量。TFT-LCD也被叫做真彩液晶显示器。

TFT液晶原理:
<center><img src="http://mcu.eetrend.com/files/2017-11/wen_zhang_/100009090-30548-1.jpg&q…; alt="STM32之TFT-LCD液晶学习"></center>