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

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

[复制链接]
STMCU小助手 发布时间:2021-12-12 21:55
和F1的一点区别:# F( q, H3 |6 P- U5 s
4 ^& o# z5 }3 m
GPIO_Initure.Alternate=GPIO_AF7_USART1;多了这么一个东西用来对复用端口进行复用功能选择,F1不用选择,刚看到目前还不知道为啥。
+ U" }/ h( H5 O# BF7不支持位带操作
* |5 l* s; ~, e: q( r**
! ]# W; T3 m/ L9 ]0 o5 \- O* [  k8 ^7 |& G5 h
767中断6 A8 Z+ I$ F2 r1 u$ n; v
CM7内核支持256个中断,767使用了118个,包括10个内核中断和108个可屏蔽中断。具有16级可编程中断优先级。
! J& i( G5 M3 I: \. U  o/ V0 O9 B
20210113172219789.png

' u: I( z; p  f- s! ]
" |* E0 c$ l' x# n4 R. T; WISER[8]:中断使能寄存器组,8个32位寄存器来控制CM7的256个中断,767自由ISER【0-3】有用,要使能某个中断,相应位置一2 B# {. t. E# K
ICER[8]:中断除能寄存器组,和ISER相反的功能。
- L5 ]3 ?. f! ~. n/ C9 CISPR[8]:中断挂起寄存器组,将对应位中断挂起,执行其他同级或高级中断。
) [" M3 e0 `# ^+ \9 B" oICPR[8]:中断解挂控制寄存器组:
/ _  E' J( Q& e0 V& D. ]% yIABR[8]:中断激活标志位寄存器组:对应位为1表对应位中断正在执行,通过它判断正在执行的中断,硬件清零。
: f' l" y& ^* g# n% BIP[240]:中断优先级控制寄存器组:240个八位寄存器组,767用108个。IP【109】-IP【0】(98,97没用),每个可屏蔽中断的8bit用了高4位,分抢占优先级和子优先级。
. `5 ^* R/ z+ f2 W2 f
$ ~+ q1 s. c( q6 v
7 m$ a# X* j6 H. v. U( O- z
2021011317321818.png

5 i( e9 ]$ ~6 L3 d. M) w! C
! `4 x' m3 H* s& |抢占优先级级别高于子优先级,数值低为高优先级。
# S1 {+ b1 f7 {' s: w) @# C$ W% H6 v! Y! d; N6 e
) U4 W8 s8 p# i- |8 ?+ R: }% ~
SYSTEM文件夹
; s% ]! m9 H: w9 [0 E1 O# Idelay5 v4 S9 h7 [$ Q3 J  p

( z6 |  i' w- X
20210113212421444.png
% x; n' o. v$ H2 }3 A9 A2 T% _; ~: _
使用SysTick定时器,24位倒计时,不占用中断和系统定时器。
' k3 W9 g: i7 g( b. B4 S- t( g在ucos操作系统中,有SysTick提供时钟节拍,这个时钟一般不能打断。( O7 b- B- {. l' J- D! W3 W
这里的延时只是抓取SysTick值得变化,不修改,所以不影响ucos时钟节拍。& q- G% G4 g) P# g- z7 k+ z4 s) r
6 t2 X6 T3 o3 z' `# `! a
20210113221828459.png

( k' q3 f) ]0 q1 f, e- R
( A6 W! m; `" P8 F* h在这里插入图片描述这里delay_ostickspersec是用来设置os时钟节拍的,由注释可见时钟节拍最大为77.7ms,这里767的SYSCLK值为216,如果要设置时钟节拍为5ms则设置delay_ostickspersec值为200,216000000/200=1080000,每个值计时1/216us,1080000/216=5000,即为5ms的os时钟节拍。
; I  j% G0 ^" Preload*1000000计数值结束即为1s" K, i. I8 J& P3 r$ V1 u9 v
2 Z5 Y$ b( X9 S. u" o! C
fac_ms值为os能延时的最小单位,比这个值小delay_ms就不会使用OS延时,而使用delay_us()来实现延时。如这里delay_ostickspersec值为200,fac_ms就为5$ A5 U$ j3 [0 e# m0 f2 W. L- X

0 [7 _, E4 ]- g0 |6 }! ^Sys; f& H. F) m( ^* ?) W

' m! l# }- O* G4 r  P( q% y8 a, P
20210114124733452.png

. x! l2 e  H7 J+ m2 U' k7 c6 ?. j
1 v5 K/ n6 D& X1 K, z! Q开启数据cache和指令cache,并保证D-Cache和SRAM的数据保持同步刷新,防止数据不一致。9 }; j: G7 l8 H
这个文件还负责重命名一些类型以及初始化时钟
$ D+ G( b* {1 e9 A& I. d4 M" f: t$ k+ y, w
Usart" ?+ |1 p* a9 ]" [7 m/ @" ~
printf函数支持,如果要修改一般就修改相应的串口号。
) ?% ^3 I+ `5 K7 T! |
, A$ J/ [# t8 `) H  VGPIO
8 G; L4 n8 r/ V& {开漏模式可以读IO输入电平变化,此模式可以把端口作为双向IO使用。* N3 H+ Q! \. M) j6 Y6 A. @
. m' G  f( m1 R8 c9 G0 G
HAL_GPIO_TogglePin();取反输出电平,内部是ODR寄存器的值决定输出电平。
& P* A, |/ |: V# x# l  y
" F9 H7 W6 P6 d$ z0 \6 r- M* C) oBSRR寄存器和ODR寄存器功能相似,低16位写1输出高电平,高16位写1输出低电平。
3 E. H# {* Z; x" }) s/ F3 U- jHAL_GPIO_WritePin(GPIOx,GPIO_Pin,PinState);
5 S' w4 H; b9 R4 b: G8 i8 Q+ p& ~4 s* d1 |( [
IDR寄存器用来读取GPIO口状态
+ W' |# D3 ?; SHAL_GPIO_ReadPin(GPIOx,GPIO_Pin);( J" H. U# F/ w1 h; t

) B6 u) u9 e" U7 p# q: m/ }! ~1 d( _" y3 q
  q0 f9 \  }3 x/ Z
收藏 评论0 发布时间:2021-12-12 21:55

举报

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