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

Firmware Lib在EK_STM32F上的学习体会(FLASH/GPIO)

[复制链接]
qazwsx-19104 发布时间:2008-9-3 19:11
Exemple 1
2 ^. y  s. |- V3 E1 O% Z3 O
) w& C- V) d6 p本例展示了如何对STM32的FLASH写入数据。& ^( E# E1 L& p3 E# a! Z
  @% e8 D; }6 x: _- k* W' Q
在RESET以后,FLASH存储器的写/擦控制器(Flash memory Program/Erase Controller)是被锁住的,为了能够写入数据,首先要求对控制器解锁(FLASH_Unlock())。# ]4 ^* g3 h& J# b+ _. u
5 ?4 U9 x! q8 a  Q9 B; r- T
在写入数据前,程序首先擦除所有要编辑的页面。擦除程序首先计算需要的页面数目,然后通过不断调用FLASH_ErasePage函数进行逐页擦除。之后,程序不断调用FLASH_ProgramWord函数对FLASH写入数据。待整个过程完成以后,检查FLASH中的数据是否已被正确写入,检查结果放在变量MemoryProgramStatus中。
6 f( Z2 f8 M- x3 ?2 c- @5 J5 P4 s+ s6 K& F* x
Exemple 1" {: M; H" R! M. j0 \1 W9 }

( y5 I' M# }( p" R本例展示了如何开启/关闭STM32 FLASH存储器的写保护功能。1 J  _- |9 `& q' S- `' I8 V
8 N& t& {0 M, C( ?
打开写保护功能:* T- k& W- l4 t  A# R. t; L
在程序中,取消“#define WriteProtection_Enable”前的注释符号,即可打开写保护功能。想要对一系列页面进行写保护的话,用户可以调用FLASH_EnableWriteProtection函数,通过设置该函数的参数,我们可以对任意页面进行写保护。在本例中,我们想要对24 — 31这八个页面进行保护,因此,参数为"FLASH_WRProt_Pages24to27 | FLASH_WRProt_Pages28to31"。, P: Q; x5 X' v; i% O9 m

+ D9 r8 v4 }# A0 `为了对载入新的option byte 值,需要对系统进行复位,因此,我们调用函数 NVIC_GenerateSystemReset()。
: z4 D8 T% m/ ?7 o8 E. J, Q5 l* O, ~  [, E
关闭写保护功能:( K" V8 n* X* K: U  w- C
在程序中,取消“##define WriteProtection_Disable”前的注释符号,即可关闭写保护功能。为了关闭写保护,用户必须擦除小信息模块(small information block)。此操作可以通过调用函数FLASH_EraseOptionBytes来实现。% q& s% G( S( x% M; n# C1 K

  ~/ y; M0 K* A+ z- \: l  L同样的,为了对载入新的option byte 值,需要对系统进行复位,因此,我们调用函数 NVIC_GenerateSystemReset()。
5 E3 u/ z1 {7 O  k
. W7 w- ^; |) \: i$ Y+ ^在本例中,程序将对被保护页面进行一次擦-写的操作,并在最后检查操作的完成情况,并把检查结果放在变量MemoryProgramStatus中。显然,如果打开了写保护功能,那么结果将是FAILED,如果没有,结果将是PASSED。+ d- e0 o; `2 C

5 e/ b* m. S7 }Exemple 16 I& n/ b6 r6 e8 V

& y2 d, H' ^1 `7 n6 n, ^3 j5 v本例展示了如何通过设置GPIO BSRR寄存器(Port bit set/reset registe)和GPIO BRR寄存器 (Port bit reset register)来翻转IO的状态。( ]8 q( w3 o$ b7 Z$ n( [4 i* }
1 y) H3 o3 \0 W4 w5 V
通过设置这两个寄存器,我们可以利用单比特操作(single atomic write access)来改变一个或者几个IO端口的状态。
( f2 f+ q6 x, V1 u. a7 V" b- k1 z& m$ U7 P
这个例子原本应用于STM32评估板(STM3210B-EVAL),为了使本例能在EKSTM32F上运行,我们应当把使用端口PC.06 – PC.09改为使用PC.04 – PC.07。) d! u9 T; \: r) X0 L/ N5 v) X

0 ?: S8 A0 h6 U; y: w6 `$ cExemple 2" w: M. Q7 Y% D) O" [1 n

% W0 }) O0 O2 x( y本例展示了如何把JTAG专用管脚设置为标准的GPIO。. t' `; _) P: ?6 d
8 u0 R6 O5 U; G
首先,关闭SWJ-DP,把SWJ-DP管脚设置为标准的push-pull输出。然后,循环地改变PA.13(JTMS/SWDAT), PA.14(JTCK/SWCLK), PA.15(JTDI), PB.03(JTDO) 和PB.04(JTRST)这五个管脚的状态。使与之相连的LED闪耀。在EKSTM32F板上,不存在这样的五个LED,要观察效果的话,需要自己连上去。& x' Y" h8 d; r! L
& p- P( S  \- n; n/ L
注意,一旦JTAG管脚被用作它用,将无法再使用debug工具。为了避免这个问题,程序将检查PB.09上的数据,它与一个按钮相连,当输入为低电平时,JTAG专用管脚被设为标准的IO。当输入为高电平时,这些管脚仍然用作JTAG。
) M" u; X" b" B# h6 \$ Y. [+ T" b
' p- a: L. S2 h* s9 k出处:barboon
收藏 评论2 发布时间:2008-9-3 19:11

举报

2个回答
nokoyu-113155 回答时间:2009-6-10 16:38:40

RE:Firmware Lib在EK_STM32F上的学习体会(FLASH/GPIO)

heishadow-13786 回答时间:2010-11-9 18:44:40

RE:Firmware Lib在EK_STM32F上的学习体会(FLASH/GPIO)

!

所属标签

相似分享

关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新和工艺
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版