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

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

[复制链接]
STMCU小助手 发布时间:2021-12-12 21:55
和F1的一点区别:
2 {  i$ u% X1 M- s3 I0 ?. `8 g8 m4 c
GPIO_Initure.Alternate=GPIO_AF7_USART1;多了这么一个东西用来对复用端口进行复用功能选择,F1不用选择,刚看到目前还不知道为啥。6 [& r. N$ t. d3 X! R$ a
F7不支持位带操作8 S4 R% a6 X! V
**
9 |0 @, ?1 h/ o* d# v% N
# a0 S" l2 D7 N* h. y# g% Q$ n4 B$ p2 W767中断0 W) `* k+ F) y! e( ^9 s" v8 F. R
CM7内核支持256个中断,767使用了118个,包括10个内核中断和108个可屏蔽中断。具有16级可编程中断优先级。
4 Q- e) z) Y; T
20210113172219789.png

8 W& s7 F2 ~, W+ r7 w- b7 S: ^; F) \
ISER[8]:中断使能寄存器组,8个32位寄存器来控制CM7的256个中断,767自由ISER【0-3】有用,要使能某个中断,相应位置一
2 Z: W9 ~  f( g+ h4 TICER[8]:中断除能寄存器组,和ISER相反的功能。3 a, k# l& N1 B3 I# W% }& w4 B6 x
ISPR[8]:中断挂起寄存器组,将对应位中断挂起,执行其他同级或高级中断。
* q4 d$ E3 T  e& [ICPR[8]:中断解挂控制寄存器组:  F7 g& R: X; S! |( p
IABR[8]:中断激活标志位寄存器组:对应位为1表对应位中断正在执行,通过它判断正在执行的中断,硬件清零。
6 C" i/ M  z! aIP[240]:中断优先级控制寄存器组:240个八位寄存器组,767用108个。IP【109】-IP【0】(98,97没用),每个可屏蔽中断的8bit用了高4位,分抢占优先级和子优先级。  S2 x& {* k2 G8 g3 s0 V4 z
% u- Z; C- V/ Z/ [2 f: Y
0 k1 i  M! S; `8 U, a2 Y
2021011317321818.png

' ^& }" Z  r7 ]& o3 F$ J. J$ c; S# h
  Y4 ?8 F& |( {, k6 [  J1 M抢占优先级级别高于子优先级,数值低为高优先级。
6 ^2 _  {: w* e7 C$ b2 V! `; U
% a) g5 B. s- W* h( S& t
* a% Y7 |  R2 b1 ^& D' ~$ X- r7 XSYSTEM文件夹3 P% Y2 b1 L  }6 T0 a0 S6 o3 A+ ]
delay+ v: n. w3 L* f: V/ V" X

+ V  {& l4 q+ C" p2 z! K: U+ x* ]
20210113212421444.png
; f6 ?, p& k* l* K
使用SysTick定时器,24位倒计时,不占用中断和系统定时器。
* v9 V1 ]$ C0 e3 p' ]9 {在ucos操作系统中,有SysTick提供时钟节拍,这个时钟一般不能打断。9 Y1 E1 ?8 i/ @9 r
这里的延时只是抓取SysTick值得变化,不修改,所以不影响ucos时钟节拍。
5 D: ^% E/ k9 d1 Y
* V2 Q+ M9 l3 U
20210113221828459.png
4 R' B8 y9 H" ^

" A4 c+ x, D/ w  N1 |在这里插入图片描述这里delay_ostickspersec是用来设置os时钟节拍的,由注释可见时钟节拍最大为77.7ms,这里767的SYSCLK值为216,如果要设置时钟节拍为5ms则设置delay_ostickspersec值为200,216000000/200=1080000,每个值计时1/216us,1080000/216=5000,即为5ms的os时钟节拍。# I6 n9 K# A! ]6 s) q: Q) J1 P
reload*1000000计数值结束即为1s
0 d7 Z5 g" P- I) }! Q4 n" j, L3 A0 `7 I
fac_ms值为os能延时的最小单位,比这个值小delay_ms就不会使用OS延时,而使用delay_us()来实现延时。如这里delay_ostickspersec值为200,fac_ms就为52 Y8 \: L2 \; s( Y5 M3 s
9 K/ ?/ `. H1 A2 G% d0 K) c
Sys' _, b9 q0 m$ x4 ~

& [4 X4 u3 B" I! I9 ]& K) L* [
20210114124733452.png

% a+ g/ @0 M. l+ c: O1 M  ~
5 x4 `* v/ B5 y% ?% d7 n  x) d8 H开启数据cache和指令cache,并保证D-Cache和SRAM的数据保持同步刷新,防止数据不一致。
0 b3 A1 r& V; c  Q. `8 r" v这个文件还负责重命名一些类型以及初始化时钟
! q4 ]9 Y3 B8 u- |7 j8 `( D& V& V
Usart6 s/ P, S" p! A- p( r1 r* Q
printf函数支持,如果要修改一般就修改相应的串口号。: z4 V) |* ^, u

, Z: F, i% Z+ N9 R) Z4 MGPIO
* B& }/ ]5 R/ E) `# p开漏模式可以读IO输入电平变化,此模式可以把端口作为双向IO使用。7 i+ d7 _6 \/ H

! H# p. S9 w' v/ _HAL_GPIO_TogglePin();取反输出电平,内部是ODR寄存器的值决定输出电平。
' z/ U. ]4 w4 q5 |" q) l" u5 l2 G/ t; G, `- Y2 y8 ]& ?" I
BSRR寄存器和ODR寄存器功能相似,低16位写1输出高电平,高16位写1输出低电平。
1 b4 c# Q6 W$ ?/ M. bHAL_GPIO_WritePin(GPIOx,GPIO_Pin,PinState);
2 O" q# Y3 @$ m* Q. U, }# t% \9 Y- k# J- \
IDR寄存器用来读取GPIO口状态
. i' h% H3 n5 n7 LHAL_GPIO_ReadPin(GPIOx,GPIO_Pin);
2 b, y9 g2 D5 N( ~0 G$ t. j' f' ^, y/ h1 l  X
- Y% D7 u1 O7 B5 x, A" M" I
- ]& H9 z' }1 I
赞 收藏 评论0 发布时间:2021-12-12 21:55

举报

0个回答

所属标签

相似技术帖

官网相关资源

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