STM32常见应用分析
更新时间:2023-06-09 03:33:01 阅读量: 实用文档 文档下载
- stm32常见外设推荐度:
- 相关推荐
STM32常见应用分析 arm 单片机 时钟 入门 深入
STM32F10x 常见应用解析
2008年9月
STM32
全国巡回研讨会
STM32常见应用分析 arm 单片机 时钟 入门 深入
系统时钟的监控和切换
起因:
在实际应用中,经常出现由于晶体振荡器在运行中失去 作用,造成微处理器的时钟源丢失,从而出现死机的现 象,导致系统出错。
严重时,由于系统的死机造成监控失效, 导致无法挽回的损失!
目的:
STM32作为一个可靠稳定的微处理器,但是不能排除 由于某些外界特殊因素可能造成STM32的外部振荡器 失效,所以在芯片中需要一种包含机制能够在STM32 运行时,一旦外部晶体振荡器(HSE)失效,切换
STM32的系统时钟源到一个稳定的时钟源,以保证 STM32能够继续运行,并进行相应的保护操作。
2
STM32常见应用分析 arm 单片机 时钟 入门 深入
系统时钟的监控和切换
时钟安全系统(CSS)系统原理:
时钟安全系统被激活后,时钟监控器将实时监控外部高速振荡器;如 果HSE时钟发生故障,外部振荡器自动被关闭,产生时钟安全中断, 此中断被连接到Cortex-M3的NMI的中断;与此同时CSS将内部RC 振荡器切换为STM32的系统时钟源。(对于STM32F103,时钟失效 事件还将被送到高级定时器TIM1的刹车输入端,用以实现电机保护
8MHz
控制)
HSI RC
÷2
SYSCLK
x2...x16 PLLCLK PLL up to
÷2 72 MHz
OSC_OUT OSC_IN 4 -16 MHz
HSE Osc
CSS
注意:一旦CSS被激活,当HSE时钟出现故障时将产生CSS中断,同时自动产生
NMI。NMI将被不断执行,直到CSS中断挂起位被清除。因此,在NMI的处理程序中 必须通过设置时钟中断寄存器(RCC_CIR)里的CSSC位来清除CSS中断。
3
STM32常见应用分析 arm 单片机 时钟 入门 深入
系统时钟的监控和切换(应用举例)
启动时钟安全系统CSS:
RCC_ClockSecuritySystemCmd(ENABLE);
(NMI中断是不可屏蔽的!)
外部振荡器实现时,产生中断,对应的中断程序:
void NMIException(void) {
if (RCC_GetITStatus(RCC_IT_CSS) != RESET)
// HSE、PLL已被禁止(但是PLL设置未变) {
// 客户添加相应的系统保护代码处
// 下面为HSE恢复后的预设置代码
RCC_HSEConfig(RCC_HSE_ON); // 使能HSE
RCC_ITConfig(RCC_IT_HSERDY, ENABLE); // 使能HSE就绪中断 RCC_ITConfig(RCC_IT_PLLRDY, ENABLE); // 使能PLL就绪中断
RCC_ClearITPendingBit(RCC_IT_CSS); // 清除时钟安全系统中断的挂起位 // 至此,一旦HSE时钟恢复,将发生HSERDY中断,在RCC中断处理程序里, 系统时钟可以设置到以前的状态 } }
在RCC的中断处理程序中,再对HSE和PLL进行相应的处理。
4
STM32常见应用分析 arm 单片机 时钟 入门 深入
实现软件的短时间延迟
在进行开发时,程序中常常需要延时一段时间,很多 人都会使用Delay(N),N为需要延时的时间(通常为 毫秒级)。
通常实现Delay(N)函数的方法为:
for(i = 0; i <= x; i ++);
x --- 对应于N毫秒的循环值
对于STM32系列微处理器来说,执行一条指令只有 几十个ns,进行for循环时,要实现N毫秒的x值非常 大,而且由于系统频率的宽广,很难计算出延时N毫 秒的精确值。
针对STM32微处理器,需要重新设计一个新的方法 去实现该功能,以实现在程序中使用Delay(N)。
5
STM32常见应用分析 arm 单片机 时钟 入门 深入
应用SysTick实现短时延迟
Cortex-M3的内核中包含一个SysTick时钟。SysTick 为一个24位递减计数器,SysTick设定初值并使能后, 每经过1个系统时钟周期,计数值就减1。计数到0时, SysTick计数器自动重装初值并继续计数,同时内部的 COUNTFLAG标志会置位,触发中断(如果中断使能)。
在STM32的应用中,使用Cortex-M3 内核的SysTick作为定时时钟,设定每 一毫秒产生一次中断,在中断处理函数 里对N减一,在Delay(N)函数中循环检 测N是否为0,不为0则进行循环等待; 若为0则关闭SysTick时钟,退出函数。
延迟时间将不随系统时钟频率改变。
6
STM32常见应用分析 arm 单片机 时钟 入门 深入
应 用SysTick 举 例
初始化相关模块:
SysTick_SetReload(9000); SysTick_ITConfig(ENABLE);
// 设定SysTick达到1ms计数结束 // 使能SysTick中断
中断处理:
void SysTickHandler (void) {
if (TimingDelay != 0x00) TimingDelay--; }
全局变量TimingDelay
必须定义为volatile
延时代码:
void Delay(u32 nTime) {
SysTick_CounterCmd(SysTick_Counter_Enable); TimingDelay = nTime;
while(TimingDelay != 0);
SysTick_CounterCmd(SysTick_Counter_Disable); SysTick_CounterCmd(SysTick_Counter_Clear); }
条件:外部晶振为8MHz,系统时钟为 72MHz,SysTick的频率9MHz, SysTick产生1ms的中断。
// 使能SysTick计数器 // 读取延时时间
// 判断延时是否结束 // 关闭SysTick计数器 // 清除SysTick计数器
应用代码:
Delay(300);
// 延时 300ms
7
STM32常见应用分析 arm 单片机 时钟 入门 深入
如何重新启动DMA传输
方案一:使用DMA的循环模式。
的寄存器,法如下
第一次DMA输配置为普通模式,然从第二次开①② ③④⑤STM32 方案二:重新配置部分DMA
始:
清除ENABLE位(DMA_CCRx寄存器),关闭DMA通道
如果DMA中的外设地址是递增的, 重新设置外设地址(DMA_CPARx寄存器)
如果DMA中的存储器地址是递增的, 重新存储器外设地址(DMA_CMARx寄存器)
重新设置数据传输数目(DMA_CNDTRx寄存器)
设置ENABLE位,从新使能DMA(DMA_CCRx寄存器)
全国巡回研讨会
常见应用解析
2008年9月 15
STM32常见应用分析 arm 单片机 时钟 入门 深入
DMA的概念
DMA是Direct Memory Access的首字母缩写。它的作用 是不需要经过CPU而进行数据传输。
DMA控制器可以代替CPU驱动产生数据访问的地址并执行数据的 读出和写入操作。
DMA传输有三大要素:
传输源:DMA控制器从传输源读出数据; 传输目标: DMA控制器将数据传输的目标;
触发信号:用于触发一次数据传输的动作,执行一个单位的传输源 至传输目标的数据传输;可以用来控制传输的时机。
STM32的DMA特征
传输源和传输目标可以分别是存储器和/或片上外设,源和目标可 以同为存储器或同为片上外设; 一次数据传输的单位可以为:8位、16位或32位 数据传输的触发信号由硬件确定,不能更改
STM32常见应用分析 arm 单片机 时钟 入门 深入
STM32 全国巡回研讨会
常见应用解析
2008年9月 16
STM32常见应用分析 arm 单片机 时钟 入门 深入
DMA触发源解读
设备
ADC1 SPI/I2S USART I2C TIM1 TIM2 TIM3 TIM4
TIM4_CH1 TIM2_CH3
通道1
ADC1
通道2
SPI1_RX USART3_TX
通道3
SPI1_TX USART3_RX
通道4 通道5 通道6 通道7
USART2_TX I2C1_RX
TIM1_CH1 TIM2_UP TIM3_CH3
TIM1_CH2
SPI/I2S2_RX SPI/I2S2_TX
USART1_TX USART1_RX USART2_RX I2C2_TX I2C2_RX I2C1_TX TIM1_CH4 TIM1_TRIG TIM1_UP TIM1_CH3 TIM1_COM
TIM2_CH1
TIM2_CH2 TIM2_CH4
TIM3_CH1 TIM3_TRIG
TIM3_CH4 TIM3_UP
TIM4_CH2
TIM4_CH3
TIM4_UP
ADC1、TIM2_CH3、TIM4_CH1的DMA请求复用同一个通道,他们 不能同时使用
定时器的各个通道不是使用的同一个DMA请求通道,而且不是所有通 道都能触发DMA请求,例如:
TIM4的通道1、2、3和更新事件才有DMA请求
TIM3的通道1、2、3、触发和更新事件才有DMA请求 STM32 全国巡回研讨会
常见应用解析
2008年9月 17
STM32常见应用分析 arm 单片机 时钟 入门 深入
DMA配置实例
在这个例子中使用了DMA通道6:
DMA请求(触发)源是定时器3
DMA数据源是GPIO输入寄存器/DMA目标是RAM中的缓冲区
设置外设地址:DMA_CPAR6 = (u32)&GPIOD->IDR
设置存储器地址 : DMA_CMAR6 = (u32) Parallel_Data_Buffer
设置数据传输数目 : DMA_CNDTR6 = 512
配置 DMA_CCR6 寄存器:
存储器数据宽度 = 半字 (16位) DMA 模式 = 循环 外设数据宽度 = 半字 (16位) 通道优先级 = 非常高 外设地址递增 = 无递增 中断 = 禁止 存储器地址递增 = 自动递增
传输方向 = 外设地址为传输的源地址
设置DMA_CCR6寄存器中的ENABLE位,启动传输通道
开启DMA请求:设置TIM3_DIER寄存器中的TDE位
STM32 全国巡回研讨会
常见应用解析
2008年9月 18
STM32常见应用分析 arm 单片机 时钟 入门 深入
STM32的内部温度传感器
STM32集成了片上的温度传感器,可以用来测量芯片内部 的温度;
STM32内部温度传感器与ADC的通道16相连,与ADC配 合使用实现温度测量; 测量范围-40~125℃,精度 ? 1.5℃。
TSVREFE控制位
内部地
址数
温度 传感器 内部 电源模块
VSENSE
ADC1_IN16
转换后的数据
ADC模块
VREFINT
ADC1_IN17
巡回研讨会
STM32 全国
STM32常见应用分析 arm 单片机 时钟 入门 深入
常见应用解析
2008年9月 19
STM32常见应用分析 arm 单片机 时钟 入门 深入
使用STM32的内部温度传感器
配置步骤:
1. 设置ADC相关参数
// ADC1 configuration ----------------------------- ADC_InitStructure.ADC_Mode = ADC_Mode_Independent; ADC_InitStructure.ADC_ScanConvMode = ENABLE;
ADC_InitStructure.ADC_ContinuousConvMode = ENABLE;
ADC_InitStructure.ADC_ExternalTrigConv = ADC_ExternalTrigConv_None; ADC_InitStructure.ADC_DataAlign = ADC_DataAlign_Right; ADC_InitStructure.ADC_NbrOfChannel = 1; ADC_Init(ADC1, &ADC_InitStructure);
2. 选中ADC1的通道16作为输入 3. 设置采样时间17.1 us
4. 设置寄存器ADC_CR2中的TSVREFE位激活温度传感器
Ncycle ?tADC = 17.1祍
// ADC1 regular channel16 Temp Sensor configuration
ADC_RegularChannelConfig(ADC1, ADC_Channel_16, 1, ADC_SampleTime_55Cycles5); // Enable the temperature sensor and vref internal channel ADC_TempSensorVrefintCmd(ENABLE);
STM32 全国巡回研讨会
常见应用解析
2008年9月 20
STM32常见应用分析 arm 单片机 时钟 入门 深入
温度数值计算
ADC转换结束以后,读取ADC_DR寄存器中的结果,通过
下面的公式计算
V25:温度传感器在25℃时 的输出电压,典型值1.43 V
VSENSE:温度传感器的当前输出电压,与ADC_DR 寄存器中的结果ADC_ConvertedValue之间的转换 关系为:
ADC_ConvertedValue * Vdd
VSENSE =
Vdd_convert_value(0xFFF)
25
SENSE
T(℃) = V - V
Avg_Slope 转换程序
+ 25
Avg_Slope:温度传感器输出电压和 温度的关联参数,典型值4.3 mV/℃
Vtemp_sensor = ADC_ConvertedValue * Vdd / Vdd_convert_value; Current_Temp = (V25 - Vtemp_sensor)/Avg_Slope + 25;
STM32 全国巡回研讨会
常见应用解析
2008年9月 21
STM32常见应用分析 arm 单片机 时钟 入门 深入
RTC系统框图
配置RTCCLK以及RTC_DIV,使得 预分频器产生频率为1秒的秒脉冲
(TR_CLK),作为RTC的时钟基准。 32位的RTC计数器,以1秒的频率进 行计数, 可以持续长达 32
2 = 4*1024*1024*1024 (秒) = 49710 (天) = 136 (年) RTC系统的供电
处于备份区域:即系统掉电后,只
要有外部电池供电,该区域的功能
可以继续工作;
只要一直有电池供电,RTC的计数
器持续计数,由此可以计算出
HSE晶振 LSI RC
LSE晶振 或 外部时钟
RTCSEL
RTC闹钟
[1:0]
1/128
RTC预分频 加载寄存器
=
RTC计数器
RTC分频器
实时 的时间。
RTC 控制器寄存器 (CR)
STM32常见应用分析 arm 单片机 时钟 入门 深入
备份供电区域
秒中断 溢出中断 闹钟中断
TR_CLK
STM32 全国巡回研讨会
常见应用解析
2008年9月 22
STM32常见应用分析 arm 单片机 时钟 入门 深入
使用RTC制作万年历
初始化系统时钟
上电后初始化系统时钟 配置RTC
使能PWR和BKP模块的时钟 使能对备份区域的访问
STM32 全国巡回研讨会
检查预定义的标记判断RTC是否曾经设置过
预定义的标记设置在备份区域的备份寄存器,不受系统 掉电的影响
如果RTC未曾设置过,则初始化RTC模块:
时钟源LSE
秒中断的产生
设置RTC计数器
以一个基准作为时间原点
例如RTC计数值为0时表示:2008年1月1日 0:0:0 输入当前年/月/日/时/分/秒 ? 计算离时间原点的秒数 显示时间
根据当前RTC计数器的值,得到现在距时间原点的秒
数,反算出当前的年/月/日/时/分/秒。
STM32常见应用分析 arm 单片机 时钟 入门 深入
和RTC时钟
否
第一次设置RTC?
(查询标记)
是
配置RTC(产生秒中断)
设置当前时间
(年/月/日/小时/分/秒) 以此作为RTC计数器的初值
设置标记
计算并 显示时间
秒中断 循环
2008年9月 23
STM32常见应用分析 arm 单片机 时钟 入门 深入
校准实时时钟RTC
需求
嵌入式系统使用的实时时钟精度要求高 RTC晶振精度远远高于传统振荡器,精度可达到ppm级 受到温度等因素影响,晶振的精度会出现波动
对MCU提出了RTC时钟校准的要求
传统校准手段:调节晶振的负载电容
缺点:需要外部器件,可能增加晶振的功耗
STM32中设置了BKP_RTCCR寄存器, 实现软件校准
优点:软件校准,灵活性高,易于使用
正在阅读:
STM32常见应用分析06-09
2013年03月广东省工商注册企业名录9234家(含东莞深圳)04-05
《分子间作用力与物质性质》习题303-06
某超高层写字楼 施工组织设计08-05
国庆同学聚会感言(推荐五篇)08-22
超级一键网克使用方法10-02
高中语文人教版选修中国古代诗歌散文欣赏散文之都第五单元自主赏析《伶官传序欧阳修》优质课公开课教案11-29
- 教学能力大赛决赛获奖-教学实施报告-(完整图文版)
- 互联网+数据中心行业分析报告
- 2017上海杨浦区高三一模数学试题及答案
- 招商部差旅接待管理制度(4-25)
- 学生游玩安全注意事项
- 学生信息管理系统(文档模板供参考)
- 叉车门架有限元分析及系统设计
- 2014帮助残疾人志愿者服务情况记录
- 叶绿体中色素的提取和分离实验
- 中国食物成分表2020年最新权威完整改进版
- 推动国土资源领域生态文明建设
- 给水管道冲洗和消毒记录
- 计算机软件专业自我评价
- 高中数学必修1-5知识点归纳
- 2018-2022年中国第五代移动通信技术(5G)产业深度分析及发展前景研究报告发展趋势(目录)
- 生产车间巡查制度
- 2018版中国光热发电行业深度研究报告目录
- (通用)2019年中考数学总复习 第一章 第四节 数的开方与二次根式课件
- 2017_2018学年高中语文第二单元第4课说数课件粤教版
- 上市新药Lumateperone(卢美哌隆)合成检索总结报告
- 常见
- 应用
- 分析
- STM32
- 三峡水库诱发地震的监测与探讨
- 年度工作总结及工作计划
- 湖北省荆州市《教育教学知识与能力》教师教育最新版
- 中国新闻传播史课后题答案(仅供参考)
- 2015年度广州地区化工实验室研究员岗位薪酬调查报告(招聘版)
- 北方地区修改上课用
- 17.1.2反比例函数的图像和性质第3课时
- XXXX年第一次生产技能人员标准化岗位考试(答案)试卷
- 设计院给房产商做的初步设计1-请在放映模式下欣赏
- 2014内蒙古选调生考试公共基础知识:民法的七条线
- 山东省实施《中华人民共和国工会法》办法 04.1.1起执行
- 2011走向高考,贾凤山,高中总复习,英语,必修三1-3综合
- 教育质量提升年活动方案
- 辽宁省56个县级档案馆建设列入国家建设规划
- 抱箍法盖梁施工、计算
- 防范医疗纠纷试卷
- 当代大学生如何培育和践行社会主义核心价值观
- 检测报告-联动闭门器(明达能)
- 沪科版全反射教学设计
- 湖南省长株潭城市群生态绿心地区保护条例