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

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

[复制链接]
STMCU小助手 发布时间:2021-12-12 21:55
和F1的一点区别:
" D. R/ E3 z/ X" w1 D* A' ^, Z: u' A/ o: X- l
GPIO_Initure.Alternate=GPIO_AF7_USART1;多了这么一个东西用来对复用端口进行复用功能选择,F1不用选择,刚看到目前还不知道为啥。
, O+ W% N: q/ {! Z8 b& BF7不支持位带操作
2 q, u5 b+ ~9 {: H, p2 w**4 m- h8 e/ a9 F5 S8 w" O
4 t* M; {) t4 W! G1 G
767中断
. U5 N& N) R) P% m9 J/ a! }CM7内核支持256个中断,767使用了118个,包括10个内核中断和108个可屏蔽中断。具有16级可编程中断优先级。
# S. a1 X7 s8 d
20210113172219789.png

! Y! E# w' K8 l4 H& L: |  W) `! ^0 E# b$ x7 S
ISER[8]:中断使能寄存器组,8个32位寄存器来控制CM7的256个中断,767自由ISER【0-3】有用,要使能某个中断,相应位置一
1 b% T5 ^7 T3 C0 F  O6 E' M7 TICER[8]:中断除能寄存器组,和ISER相反的功能。' R) u; O7 Z, d& Y5 @$ Z
ISPR[8]:中断挂起寄存器组,将对应位中断挂起,执行其他同级或高级中断。
, |$ E! b* R2 ^  R' G3 {ICPR[8]:中断解挂控制寄存器组:$ C' F: a. n3 o
IABR[8]:中断激活标志位寄存器组:对应位为1表对应位中断正在执行,通过它判断正在执行的中断,硬件清零。3 a; n3 p5 f$ ]( ~/ Q0 W
IP[240]:中断优先级控制寄存器组:240个八位寄存器组,767用108个。IP【109】-IP【0】(98,97没用),每个可屏蔽中断的8bit用了高4位,分抢占优先级和子优先级。
0 P4 E) S8 O/ `7 a6 p5 q8 E. V3 b* a3 n3 O  h
+ J/ ^- s7 I, p
2021011317321818.png
8 w3 j1 n% n5 O( d1 k+ Q
+ |+ e) g8 Z3 c1 }$ X: q
抢占优先级级别高于子优先级,数值低为高优先级。
& B! H7 u: x. y; T" g3 J$ q) t' t: Q8 ^( m- W. l
* y- F! @0 u7 P2 s5 j" g5 [' t# x
SYSTEM文件夹/ J/ e0 A9 Y/ V9 K# D
delay* r- U/ _* a8 H

8 M7 T4 F( Y' I# `. C
20210113212421444.png

7 `! @" ~) m+ M使用SysTick定时器,24位倒计时,不占用中断和系统定时器。
1 v  L  B* x8 K; Z2 o! _& s" F* W% F在ucos操作系统中,有SysTick提供时钟节拍,这个时钟一般不能打断。
4 c# _2 U* g/ Z* B( g) p3 ]这里的延时只是抓取SysTick值得变化,不修改,所以不影响ucos时钟节拍。: c+ s" B9 t" B

0 F- b& A7 h; ?6 M0 L" \2 g
20210113221828459.png
5 L3 o+ O- J" C3 W# A

4 A5 w6 T8 I$ z: R# F$ T在这里插入图片描述这里delay_ostickspersec是用来设置os时钟节拍的,由注释可见时钟节拍最大为77.7ms,这里767的SYSCLK值为216,如果要设置时钟节拍为5ms则设置delay_ostickspersec值为200,216000000/200=1080000,每个值计时1/216us,1080000/216=5000,即为5ms的os时钟节拍。
% n+ Q2 e- U" `* Breload*1000000计数值结束即为1s
' R+ a4 |: d. w% K' W0 D: y+ J/ y* W
fac_ms值为os能延时的最小单位,比这个值小delay_ms就不会使用OS延时,而使用delay_us()来实现延时。如这里delay_ostickspersec值为200,fac_ms就为5
# x; t* U8 p2 A7 P7 L% q; Z  z) m6 l+ S* h( b+ V$ f" J
Sys
" c& L6 a( C' j6 u* \
( M; g& i' X: u/ T' g) F
20210114124733452.png

+ K7 a* D3 d, u# ~5 q# f" F
! P( {' B& P, c: M2 s1 Z- A6 ]开启数据cache和指令cache,并保证D-Cache和SRAM的数据保持同步刷新,防止数据不一致。% p# p8 ]" M% T7 F0 p9 M5 B+ p3 T' b
这个文件还负责重命名一些类型以及初始化时钟/ m& T+ }( A3 U4 b0 ^
3 p+ h9 C. z6 n2 d8 ~2 `- N4 X
Usart
7 T4 v( g$ ?4 M$ `6 m/ Lprintf函数支持,如果要修改一般就修改相应的串口号。, @3 c1 o6 t/ H% j2 V. |! r
/ M/ C' E0 _/ B6 w0 b! e1 v
GPIO% B. g) V9 j8 Q. X
开漏模式可以读IO输入电平变化,此模式可以把端口作为双向IO使用。
" n) M3 ^# r+ o! f! Z
. A$ m* Q8 E  D4 I. IHAL_GPIO_TogglePin();取反输出电平,内部是ODR寄存器的值决定输出电平。4 V, M9 N, w# R8 X7 m

+ N4 C9 j  Q' _# ZBSRR寄存器和ODR寄存器功能相似,低16位写1输出高电平,高16位写1输出低电平。3 \1 M' f. w8 I- k% f* }3 N
HAL_GPIO_WritePin(GPIOx,GPIO_Pin,PinState);
9 D. v+ E& W  j& E1 K0 `+ R: s- T1 U+ f
IDR寄存器用来读取GPIO口状态
! \: s0 ~1 Q# r) q, sHAL_GPIO_ReadPin(GPIOx,GPIO_Pin);
* {1 P8 c, l$ |. o0 e# t; B6 v2 ~  z3 I/ e  ~2 h/ ~
9 u# _& c" v6 i5 B  V

+ u) e$ }/ g8 J' x
收藏 评论0 发布时间:2021-12-12 21:55

举报

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