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

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

[复制链接]
STMCU小助手 发布时间:2021-12-12 21:55
和F1的一点区别:
  H" ]5 ^# s8 D- M1 Q5 y7 F
$ o1 X5 j, P) G( }  @- OGPIO_Initure.Alternate=GPIO_AF7_USART1;多了这么一个东西用来对复用端口进行复用功能选择,F1不用选择,刚看到目前还不知道为啥。, T# G2 }  }0 T* t
F7不支持位带操作
9 g" j3 f) N$ K# x; s**6 `. Z6 D: t0 |- X2 _8 C7 i, M+ q

# x* k* I- n3 {" x! g% B767中断
% p$ ^5 {2 `- l, F, F) Z- p7 |# LCM7内核支持256个中断,767使用了118个,包括10个内核中断和108个可屏蔽中断。具有16级可编程中断优先级。
5 v0 c- j+ a1 x' p8 ]
20210113172219789.png

+ ^0 m- F; _0 c, T* B- b* R7 D" Y2 V! {3 v
ISER[8]:中断使能寄存器组,8个32位寄存器来控制CM7的256个中断,767自由ISER【0-3】有用,要使能某个中断,相应位置一" G6 ^" ?. z' g
ICER[8]:中断除能寄存器组,和ISER相反的功能。* `: w8 T0 X- W1 Y8 T" j* ]) ~8 M
ISPR[8]:中断挂起寄存器组,将对应位中断挂起,执行其他同级或高级中断。
5 J, q8 a7 x' xICPR[8]:中断解挂控制寄存器组:
/ a; ?$ n" J) c  M- P( kIABR[8]:中断激活标志位寄存器组:对应位为1表对应位中断正在执行,通过它判断正在执行的中断,硬件清零。
. b, e+ J+ p# O7 s! d: }IP[240]:中断优先级控制寄存器组:240个八位寄存器组,767用108个。IP【109】-IP【0】(98,97没用),每个可屏蔽中断的8bit用了高4位,分抢占优先级和子优先级。
1 S9 B3 [4 Q8 F& T8 m9 {5 X; y& }; I2 p; x- S, p6 @

9 d  @  ~( _# _& S
2021011317321818.png
8 c% \) d$ L8 a) A1 k* v
, a2 v& P" \; o( @! q8 S) ?) T/ z
抢占优先级级别高于子优先级,数值低为高优先级。
" S. R. P' N/ p1 S2 O; V. r$ X7 Y) |8 n' s
1 ]! b' d! W; i
SYSTEM文件夹0 y3 M. h3 i( g. L- _& |; T
delay( }, A& q# _( U5 N0 z. F
# I1 n4 ]3 A6 ]. ~0 S: V
20210113212421444.png
9 H' ^. t: k1 h
使用SysTick定时器,24位倒计时,不占用中断和系统定时器。: @' U4 i$ S% f/ z& W! \$ c8 ?
在ucos操作系统中,有SysTick提供时钟节拍,这个时钟一般不能打断。7 ~9 d2 M. l: w) ?8 N; m
这里的延时只是抓取SysTick值得变化,不修改,所以不影响ucos时钟节拍。4 C0 _) I5 j' [8 f' w

7 G4 r6 l' U9 T. I# P1 A* w
20210113221828459.png

2 o3 f1 }# i* l- X/ P; x
/ c: U2 B( S5 B2 O% }' `9 \在这里插入图片描述这里delay_ostickspersec是用来设置os时钟节拍的,由注释可见时钟节拍最大为77.7ms,这里767的SYSCLK值为216,如果要设置时钟节拍为5ms则设置delay_ostickspersec值为200,216000000/200=1080000,每个值计时1/216us,1080000/216=5000,即为5ms的os时钟节拍。
7 _( W3 o8 t, I: Dreload*1000000计数值结束即为1s9 I2 _" a8 }1 s9 r  S9 s0 q1 X  S
) O" R. {- d+ e5 h3 G: Q: Z7 m8 V
fac_ms值为os能延时的最小单位,比这个值小delay_ms就不会使用OS延时,而使用delay_us()来实现延时。如这里delay_ostickspersec值为200,fac_ms就为5& v  {- r% U$ j/ f1 Q7 ?3 a

0 Y0 F  K2 y: f$ x; X. DSys0 |3 \$ t4 S' f5 ]1 c8 g6 h& s
8 J! \- v  i) B( H
20210114124733452.png
8 Y$ K, U4 f9 x) F  s

5 e# c! a+ S1 E, C! l6 a# b开启数据cache和指令cache,并保证D-Cache和SRAM的数据保持同步刷新,防止数据不一致。
& Z0 ]$ P2 U+ D. x$ I, C这个文件还负责重命名一些类型以及初始化时钟! I" y' Z9 ?9 k' ~5 ~6 W
4 A. f" \4 D8 e* j
Usart. Z, G. g! l& K& J
printf函数支持,如果要修改一般就修改相应的串口号。& |$ V# V9 u1 B
$ o7 L* z( i0 q5 W( e4 s% c
GPIO
: ]' K+ R" \. g! T4 [, |' |$ X开漏模式可以读IO输入电平变化,此模式可以把端口作为双向IO使用。
+ |8 K8 [. M' F8 ~, J' s, ?3 a. o: L% }
HAL_GPIO_TogglePin();取反输出电平,内部是ODR寄存器的值决定输出电平。
( c* p; I/ r7 ~3 _
: I* l- Q: @/ g* q2 \( BBSRR寄存器和ODR寄存器功能相似,低16位写1输出高电平,高16位写1输出低电平。
! U& G% w& [! @1 c, E3 ^HAL_GPIO_WritePin(GPIOx,GPIO_Pin,PinState);
" P( z; k9 O% d+ |0 A
: X, U! [5 {; Z* q2 E1 CIDR寄存器用来读取GPIO口状态/ s1 ~. u* \$ U- ^4 s: E4 d- C6 G
HAL_GPIO_ReadPin(GPIOx,GPIO_Pin);
! _, p% A$ v# z3 l. o
0 I4 w" @, C. w9 s3 j  H6 l: ?% w3 y& H' W) s
+ C5 {& q* j* s0 ~: I/ E
收藏 评论0 发布时间:2021-12-12 21:55

举报

0个回答

所属标签

相似技术帖

官网相关资源

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