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

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

[复制链接]
STMCU小助手 发布时间:2021-12-12 21:55
和F1的一点区别:! V! W# w7 T+ c3 L$ J7 h
9 p8 f, n# O4 I* w2 J. e2 B
GPIO_Initure.Alternate=GPIO_AF7_USART1;多了这么一个东西用来对复用端口进行复用功能选择,F1不用选择,刚看到目前还不知道为啥。$ G2 V5 P, \, _/ S1 T+ D8 a% Q
F7不支持位带操作
& w# w, O) D9 Z6 X$ f) b! T**
. o' A3 X) X; s0 S5 n
" Y* P- {0 u1 f6 |" M767中断
7 h. Q; h+ ]5 H9 L, R' CCM7内核支持256个中断,767使用了118个,包括10个内核中断和108个可屏蔽中断。具有16级可编程中断优先级。
8 k6 A% r2 b6 O) l  I4 n
20210113172219789.png

8 A2 t9 ^4 g, D5 s; j( D4 @/ ^( b
ISER[8]:中断使能寄存器组,8个32位寄存器来控制CM7的256个中断,767自由ISER【0-3】有用,要使能某个中断,相应位置一
3 M  J2 b: ~# w+ QICER[8]:中断除能寄存器组,和ISER相反的功能。) b/ e  w3 f4 n3 ~, V( V& g
ISPR[8]:中断挂起寄存器组,将对应位中断挂起,执行其他同级或高级中断。4 h. y- Q/ o0 ]+ m& D! ]8 u
ICPR[8]:中断解挂控制寄存器组:' ?$ t4 ~# ]8 ~3 N1 A# |
IABR[8]:中断激活标志位寄存器组:对应位为1表对应位中断正在执行,通过它判断正在执行的中断,硬件清零。
( |. W7 m* T  |0 v% T- W8 sIP[240]:中断优先级控制寄存器组:240个八位寄存器组,767用108个。IP【109】-IP【0】(98,97没用),每个可屏蔽中断的8bit用了高4位,分抢占优先级和子优先级。+ w; b" b) W) x; i# w1 }+ O& f

  S9 E! ^) v7 @3 f, p  c: Z( {. A6 ~) ^% _, W; N0 u4 S
2021011317321818.png
- W$ i- N1 r5 J; a% v& p- j

  |( C2 |; ~, l4 \抢占优先级级别高于子优先级,数值低为高优先级。
, ?3 r2 V3 n8 G4 G0 _5 O
8 t1 X: H) v% D" V. ~' i. K  b$ ?+ f2 i' @* Y; f
SYSTEM文件夹
, q2 y7 X. F; U8 a! ]delay
5 P- K* _  M/ W. @
! }9 g' G8 o8 F- e2 w- ~
20210113212421444.png

3 G3 p6 N& c5 Q使用SysTick定时器,24位倒计时,不占用中断和系统定时器。3 Y6 ~2 g9 x$ o2 c' F! E7 ?
在ucos操作系统中,有SysTick提供时钟节拍,这个时钟一般不能打断。+ ?' m4 G* \9 P! G
这里的延时只是抓取SysTick值得变化,不修改,所以不影响ucos时钟节拍。
0 }! S8 U( x4 Y3 D8 c0 a
6 n' |+ B* G4 B; H* Y% x
20210113221828459.png

. @8 Z% d! v* j# k8 j0 r5 e. t
0 N, m& q# j7 \在这里插入图片描述这里delay_ostickspersec是用来设置os时钟节拍的,由注释可见时钟节拍最大为77.7ms,这里767的SYSCLK值为216,如果要设置时钟节拍为5ms则设置delay_ostickspersec值为200,216000000/200=1080000,每个值计时1/216us,1080000/216=5000,即为5ms的os时钟节拍。1 f. x! U/ f; @& ]" X0 w
reload*1000000计数值结束即为1s
) ?0 O6 J9 H0 ~& E0 m5 H$ A/ t; ~3 m' W
fac_ms值为os能延时的最小单位,比这个值小delay_ms就不会使用OS延时,而使用delay_us()来实现延时。如这里delay_ostickspersec值为200,fac_ms就为5
2 l% V4 k0 b9 h3 y, r* n: M7 {
, v* i7 I9 D! P- l8 `Sys
0 L, W! X% `7 C. T6 F2 l
- J2 y& V8 o/ v# m
20210114124733452.png

" t5 @; R$ Z/ s5 }9 J+ J% e5 n6 g+ Z- h2 U0 A0 ^
开启数据cache和指令cache,并保证D-Cache和SRAM的数据保持同步刷新,防止数据不一致。/ h" V2 o- H3 q: I# \$ V
这个文件还负责重命名一些类型以及初始化时钟
  a) z, `7 l; |6 l+ `7 |. R5 M
* r9 _: R/ Z, m' v9 ^& t) ZUsart6 K/ W- X0 }9 `/ o' ]
printf函数支持,如果要修改一般就修改相应的串口号。/ u1 e; R1 B6 n* e( s, E4 t

$ `3 s7 n0 n: U/ m* R' U, ZGPIO
! y" |  [, Z" _开漏模式可以读IO输入电平变化,此模式可以把端口作为双向IO使用。( g, G9 I7 Y- }5 ?+ m& B$ _

. |# E+ N3 `; c/ c. `2 E- L1 K- mHAL_GPIO_TogglePin();取反输出电平,内部是ODR寄存器的值决定输出电平。. H: V) ]# P( H+ R6 `

+ M# G% s3 p8 P. y# I# ^BSRR寄存器和ODR寄存器功能相似,低16位写1输出高电平,高16位写1输出低电平。
* A; d" U0 M0 sHAL_GPIO_WritePin(GPIOx,GPIO_Pin,PinState);8 U$ H' `) l. V" I
( k5 ]* [" j; r  D
IDR寄存器用来读取GPIO口状态
3 q: m& I4 W; `HAL_GPIO_ReadPin(GPIOx,GPIO_Pin);$ Y) p& f: F& A: t4 u; a" p( t8 t
. t) X2 F) f  Z1 A. Y6 r4 v7 E

% l) i6 v- D$ H2 Y% l# f% H3 P, z
) u( q5 w2 o7 Q/ d$ \* D9 _4 z
赞 收藏 评论0 发布时间:2021-12-12 21:55

举报

0个回答

所属标签

相似技术帖

官网相关资源

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