你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

STM32F0DISCOVERY 外设固件示例

[复制链接]
STMCU小助手 发布时间:2022-7-18 14:31
简介8 H1 @- @( A$ m  v+ d
本应用笔记介绍了为 STM32F0DISCOVERY 套件提供的一些外设固件示例。5 N8 ?) S# X: X+ c2 r( _
这些示例可立即使用,可帮助用户快速了解 STM32F0xx 外设和 STM32F0DISCOVERY 板硬件。每个示例都备了一些预配置项目,涵盖到 EWARM (IAR Embedded Workbench®for ARM®)、MDK-ARM™、Atollic TrueSTUDIO® 和 Altium TASKING® 工具。; {6 z9 u: W! J* w
建议用户首先阅读 STM32F0DISCOVERY 套件 的软件和固件环境入门 (UM1523) 以熟悉STM32F0DISCOVERY 套件。
2 u% Y& h5 w1 u6 `表 1 列出了本应用笔记所涉及的微控制器和开发工具。* d& M& l2 Z5 u, ]2 J; R# n

( C1 G7 z0 g3 N' |$ C
9Q%_~W{_(Y}EI1UUTENCT5K.png , U3 o( \/ y: `
$ U* }6 S$ K! `2 ^
1 外设固件示例结构概述
& `: r- R1 ]. j( j# T8 J3 ]在 STM32F0DISCOVERY 固件应用程序软件包中提供了一些外设固件示例,这些示例位于\Project 文件夹下,如图 1 中所示。
  U$ s7 x8 v- I+ @8 l

+ E' B2 P# k& E: ]! d1 @% c; d KSF8E_6$W8I7YT3DULR73QJ.png
( r1 g, c2 n  p$ I/ ^' g9 @
, Y( T4 P$ i# w) U+ l) P

: _: ~" g8 v" {2 K0 q8 M5 i- m2 时钟配置; d& Z/ h6 M0 j( @( b$ _- [" ^
STM32F0-Discovery 套件固件软件包中提供的外设示例以 48 MHz 运行,且使用 HSI 作为时钟源。
" x( t. X& J8 H/ D用户可以修改配置以使用 HSE(晶振模式或旁路模式)作为时钟源,但是这需要改变 Discovery套件硬件。
/ k8 m0 x) j9 w( b+ R+ |2 n0 b每个示例中提供的“system_stm32f0xx.c”文件都进行了定制,用户可以选择以下三个配置之一(通过取消注释 adequate define)来配合 Discovery 使用。
$ r5 `: Z7 ~  ]
6 E1 f. x# a4 h/ m( k0 H: m
2.1 PLL_SOURCE_HSI
+ l6 I* f1 Z  b5 qHSI 时钟信号通过内部 8 MHz RC 振荡器来生成,可直接用作系统时钟,或者经 2 分频用作PLL 输入。
* M+ Q! I. ?9 L! l& GHSI RC 振荡器的优点是时钟源成本较低(无外部元件),而且启动时间也比 HSE 晶振的启动时间更快。但是,即使是经过了校准,其频率的精度仍然低于外部晶振或陶瓷谐振器。3 m- k0 e# v3 G  F( r! w
注: 此配置为默认配置。  z9 R) Z( c4 D' x1 k8 W
2.2 PLL_SOURCE_HSE
. p" I& r* p7 X( P2 c可以通过两种时钟源来生成高速外部时钟信号 (HSE): % I# J+ r) F" N' @
• HSE 外部晶振/陶瓷谐振器6 S' L8 h4 {% |* I
• HSE 用户外部时钟
& [0 Q2 R) E# M6 LDiscovery 套件未随附 HSE 晶振。要连接到该晶振需要进行一些硬件改造。& _& }- J, h: i% |$ l; d, y! [2 Z
有关更多详细信息,请参见“STM32F0 Discovery 套件用户手册 (UM1525)”中的“4.7 OSC时钟”一节。
6 Q% g. a7 m# Y7 h7 p: |# I/ R4 H; E* f& r+ s, `" W; e$ m
2.3 PLL_SOURCE_HSE_BYPASS. H$ |0 U# H3 n* T. @
在此模式中,将通过外部时钟(频率固定为 8 MHz,来自于 ST-Link 电路)来旁路 HSE。它用于对 PLL 进行时钟控制,并且 PLL 用作系统时钟源。' A8 k% r3 W7 r) k0 z6 Q
要通过来自 ST-Link 电路的时钟来旁路 HSE,必须进行某些硬件改造。
5 {8 \+ r; h9 S$ C6 z有关更多详细信息,请参见“STM32F0 Discovery 套件用户手册 (UM1525)”中的“4.7 OSC 时钟”一节。4 e* G6 n% D4 [, n# u! s% a
* m* k9 @% P% x0 T$ Q
3 外设固件示例说明. W5 k1 L5 y+ d) u7 m" E, t
3.1 GPIO 翻转示例
4 F0 `* ]1 @  A$ {目的1 o9 _" h$ k2 T' h! e
此示例说明如何使用 BSRR 和 BRR(端口位设置/复位寄存器高电平与低电平)以最快速度翻转 I/O。0 P; h" I3 d' M- M# z5 o
GPIO 端口连接到 AHB 总线;使用 BSRR 和 BRR 寄存器时,需要两个周期来拉高一个引脚,并需要另外两个周期来拉低该引脚。因此,GPIO 引脚能够以 AHB 时钟的 1/4 进行切换。0 e8 }/ ]- H' j- v( D4 `; W0 Q

+ w0 a! `4 ~6 p. p- S
说明3 Y' e6 w. R# ]/ ~3 `. F
在此示例中,PC8 和 PC9(以推挽输出模式配置)不停地翻转:
+ a4 p5 e2 ?9 J( \• 通过在 BSRR 寄存器中设置对应的位来拉高 PC8 和 PC9。 7 G/ w5 O$ y! ?' ]( a6 k  q1 r
• 通过在 BRR 寄存器中设置对应的位来拉低 PC8 和 PC9。" q9 k" y  Q% C$ n( b2 d- b. m0 a
在本示例中,HCLK 配置为 48 MHz,因此 PC8 和 PC9 以 12 MHz 翻转。/ |! m. n4 S* g0 W; [
要实现 I/O 最大翻转频率,必须配置编译器选项进行高速优化。8 b3 T+ h3 H) }6 Y6 a& U% d
5 f' J: x4 f: o
3.2 EXTI 示例, u% |7 q! `2 ]! a
目的. q' W$ k8 `+ e
本示例表明如何配置外部中断线。
& v" q: U; P7 z  b3 C说明  D. }( S2 u6 p
在本示例中:
* I4 n5 U: o3 ~% m• PA0 引脚在悬空输入状态下配置。5 r. |9 b/ R' L( d/ F. Q* O; d
• PA0 配置为外部中断源线 0 (EXTI0)。 0 T7 O' k* f8 X- n5 m
• EXTI 线 0 配置为在 PA0 引脚上检测到的每个上升沿上生成一个中断。每次按 User(用户)按钮时都会触发中断。! T7 I6 S# K* j/ D; n' @# G$ q4 z
• 在 NVIC(嵌套向量中断控制器)中,配置了 EXIT 线 0 中断优先级并且使能了中断。
* N0 s' y! p; G7 m当执行程序并且用户按 User(用户)按钮(EXTI0 中断程序)时,将切换 LED3(与 PC9 连接)和 LED4(与 PC8 连接)。
: l  T( e; O9 E& o8 I
& I+ H1 T5 l8 C; ]% l. Q: I
3.3 SysTick 示例
* e5 g4 k: Q4 ?) K' C2 c目的
3 a( L$ y( ]% k4 c; I4 q! }本示例说明如何配置系统节拍定时器以及如何将其用于生成 1 ms 时基。$ n$ I  h# O9 F8 O' Z
0 e  Y, h2 z* q* U
说明% l# s4 v8 q3 F' Q* u6 J1 e
在本示例中:& \8 v' z. G, l! r" k9 l
• 系统节拍定时器初始化。
, m% g! v0 ~! J( ~• 系统节拍定时器中断在 NVIC 中使能。* L) i  U! B% b2 N: |
• 系统节拍定时器/计数器以自由运行模式启动以产生周期中断。$ V$ z" M# t2 H& y$ K5 C) m
•每隔 1 ms 触发一次系统节拍定时器中断。
9 J( F( y, h* C, x0 ?. e• 根据系统节拍定时器计数结束事件,实现延迟函数。
/ H! _( J9 X7 c两个 LED(LED3 和 LED4)通过延迟函数定义的计时来切换。) [  o3 G# g) R

3 U# |' A2 ]* [0 r  i
3.4 待机模式示例
6 k& y- l( H8 M. _' f目的
; O, F  v6 @  T% l: w: o0 j2 W% w8 L本示例说明如何将系统置于待机模式以及如何使用外部复位(RTC 闹钟 A)将系统从该模式中唤醒。
" O; _' E, ~6 Y% x7 @5 I, v说明3 Y4 D  ^7 T- s* W$ Q8 v  u% P/ J  o
在本示例中:
* T: M2 F: D1 u• 系统节拍定时器初始化。' O5 Q, K0 m$ C5 [
• 系统节拍定时器中断在 NVIC 中使能。% U2 u4 v/ H4 A1 A& q
• 系统节拍定时器 / 计数器以自由运行模式启动以产生周期中断。系统节拍计时器中断每隔250 ms 触发一次。在 SysTick 中断处理器中,将闪烁 LED3;这用于指示 MCU 是处于待机模式还是运行模式。+ b( q; A  u3 \, B+ d
• EXTI 线 0 配置为在 PA0 引脚上检测到的每个上升/下降沿上产生一个中断。每次 PA0 更改电平(GND 或 VDD)时,都将产生外部中断。- f" Z4 L& _  d
– 在 EXTI 行上检测到下降或上升沿时,将产生一个中断。在 EXTI 处理器程序中,RTC配置为在 3 秒内产生闹钟事件,3 秒后,系统将进入待机模式并且 LED3 熄灭。7 |$ Y, I% z9 j, k+ J
从待机模式中唤醒后,程序执行将按照复位后的方式来重新启动,RTC 配置(时钟源和预分频器)得到保留且 LED3 再次切换。因此,不需要重新配置 RTC。( ~2 ]$ v/ t( ]9 R* P
LED3 用于监视系统状态,如下所示:" c7 y) F0 r, {; O! n6 T: c
• LED3 闪亮:系统处于运行模式
4 g7 _* u$ |; r# d! N/ }* u. p• LED3 熄灭:系统处于待机模式
  y- b9 W4 P4 M* |4 F1 V- [& `• LED3 闪亮:系统从待机模式中恢复! B! I  [) i6 \$ X
这些步骤以无限循环方式重复。; s3 m( e% b2 f0 L7 D, A2 D$ b

8 t/ E+ T+ s# M3 W! M
& E( k. R/ q$ S1 A; R3 h& v完整版请查看:附件
# M4 n$ R1 H) B9 p) a* p( I4 a2 H: y+ y  q/ i: ]

DM00049931_ZHV3.pdf

下载

644.42 KB, 下载次数: 0

赞 收藏 评论0 发布时间:2022-7-18 14:31

举报

0个回答

所属标签

相似技术帖

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
人形机器人运动控制、感知与智能配电
半导体创新技术与应用方向
EE架构与软件定义汽车
12V/48V 汽车智能配电(SPD)
区域控制单元(ZCU)与分区架构
关注我们
st-img 微信公众号
st-img 手机版