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

【经验分享】STM32F7学习第一次笔记--一些混杂知识点

[复制链接]
STMCU小助手 发布时间:2021-12-12 21:55
和F1的一点区别:. P2 R9 y4 I# X6 G% y5 n9 Z

- r: K/ |% J0 ~$ l1 FGPIO_Initure.Alternate=GPIO_AF7_USART1;多了这么一个东西用来对复用端口进行复用功能选择,F1不用选择,刚看到目前还不知道为啥。
8 L( j! R+ R: n  m* _3 y1 }F7不支持位带操作
5 Y- [7 Q  I: M) n( |+ p6 E. V0 A! x**
* f/ b0 `2 ^8 k9 r: Y( `/ a5 m" t
: ?/ w5 n. e" _8 O! [767中断) }( j9 F6 J- D' ~. A. T$ @' ^6 G+ k
CM7内核支持256个中断,767使用了118个,包括10个内核中断和108个可屏蔽中断。具有16级可编程中断优先级。
/ W( ~5 W0 C+ ^- O: x  W' ?5 d6 p
20210113172219789.png
$ ~# b+ `2 F7 [
, H, d, D, O1 F! y
ISER[8]:中断使能寄存器组,8个32位寄存器来控制CM7的256个中断,767自由ISER【0-3】有用,要使能某个中断,相应位置一
) A3 x  y8 {6 A& }& Z" ^ICER[8]:中断除能寄存器组,和ISER相反的功能。
* c+ b* ?6 N2 G3 z+ Q& m. W" AISPR[8]:中断挂起寄存器组,将对应位中断挂起,执行其他同级或高级中断。
7 y, ^* T/ e! H, r; @% S% ^ICPR[8]:中断解挂控制寄存器组:1 w: D. J! q) \) U: C; V
IABR[8]:中断激活标志位寄存器组:对应位为1表对应位中断正在执行,通过它判断正在执行的中断,硬件清零。) v3 u5 N4 Z9 O7 G( f& v, i' N
IP[240]:中断优先级控制寄存器组:240个八位寄存器组,767用108个。IP【109】-IP【0】(98,97没用),每个可屏蔽中断的8bit用了高4位,分抢占优先级和子优先级。  H! T6 p  V5 N' Z6 c

2 ^- |6 N$ l8 N+ W; S! N8 o6 `3 t. V: K: B3 g
2021011317321818.png

: x6 E& @( H% H7 E; N0 i% U4 N! Z
抢占优先级级别高于子优先级,数值低为高优先级。7 {4 {: i# p+ N! W2 T, x- s

- _' b  r" l! B. i! V7 o
' }0 \: c  Y( r9 u5 R* u3 D  fSYSTEM文件夹
* o) v: e! k2 C1 i' R) |; vdelay
% S# b* m7 |8 D9 u5 W/ W0 @- k# o! x9 {- x/ a
20210113212421444.png

3 t5 M( c) J! E) Z3 \+ t% p使用SysTick定时器,24位倒计时,不占用中断和系统定时器。0 V% c) s/ r, X4 t0 Y% g
在ucos操作系统中,有SysTick提供时钟节拍,这个时钟一般不能打断。
: D( h0 i/ n+ v这里的延时只是抓取SysTick值得变化,不修改,所以不影响ucos时钟节拍。
& y4 d% [" W! ~# f' g, J3 N4 C8 N4 P0 ?0 X+ W7 k$ k
20210113221828459.png
2 W9 X% R9 Y4 ~- i
5 y8 P' l; `% S, o0 Z
在这里插入图片描述这里delay_ostickspersec是用来设置os时钟节拍的,由注释可见时钟节拍最大为77.7ms,这里767的SYSCLK值为216,如果要设置时钟节拍为5ms则设置delay_ostickspersec值为200,216000000/200=1080000,每个值计时1/216us,1080000/216=5000,即为5ms的os时钟节拍。
, w- f: h! Q6 P+ W3 ]1 D3 N2 jreload*1000000计数值结束即为1s+ W% j' j2 Q3 h& a
- ^' F& U& t2 |/ B
fac_ms值为os能延时的最小单位,比这个值小delay_ms就不会使用OS延时,而使用delay_us()来实现延时。如这里delay_ostickspersec值为200,fac_ms就为5. w, {* ^7 H- {3 M/ R
" B' ^) L* `) n. r. S
Sys
* \* X4 O( ]: R6 |- U- r5 o& A8 j1 J0 D6 a9 x  h; v# v
20210114124733452.png

+ S0 ~( V# H) q2 Z/ `1 z# q; R
开启数据cache和指令cache,并保证D-Cache和SRAM的数据保持同步刷新,防止数据不一致。
( j2 f3 C7 V4 N$ u8 `这个文件还负责重命名一些类型以及初始化时钟
/ y7 f$ e% d/ V, Q& ~  @7 L3 Y* d  C5 S
Usart
( Z4 ~* S0 N6 D# p0 k. s* |+ b2 D( jprintf函数支持,如果要修改一般就修改相应的串口号。; u1 D: D" D" `' D% x, }& r

( b/ K7 a6 d2 ~$ e; q# V1 ], uGPIO  l' A, A( G4 V. J
开漏模式可以读IO输入电平变化,此模式可以把端口作为双向IO使用。
, v; M4 R0 ]( ^1 n, K2 T7 t8 A/ S" C1 c8 N" T
HAL_GPIO_TogglePin();取反输出电平,内部是ODR寄存器的值决定输出电平。4 j% C/ ?9 F! a- h* o. Y9 D

8 C: d: D9 V! u/ Z: ?BSRR寄存器和ODR寄存器功能相似,低16位写1输出高电平,高16位写1输出低电平。
: k$ \/ d- F/ ]0 K$ O/ O: _; Q/ v4 ^HAL_GPIO_WritePin(GPIOx,GPIO_Pin,PinState);4 J+ R+ K3 H! i( H4 n( }8 [$ b
: s7 H9 b. [% R& B2 G  z* Z
IDR寄存器用来读取GPIO口状态
) Y. C4 _- O3 F+ I0 b+ P1 oHAL_GPIO_ReadPin(GPIOx,GPIO_Pin);
8 f$ U3 Q* v. O, H$ ?4 w8 g% `7 q9 A0 W& @3 }6 O2 S
% v, W, P; N. _" E: A5 P3 s

- G/ g. H' A' R) f5 b+ S6 `# x
收藏 评论0 发布时间:2021-12-12 21:55

举报

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