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

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

[复制链接]
STMCU小助手 发布时间:2021-12-12 21:55
和F1的一点区别:
$ ^- m" L: Q& ?& W
, O2 o$ ?6 i7 U( bGPIO_Initure.Alternate=GPIO_AF7_USART1;多了这么一个东西用来对复用端口进行复用功能选择,F1不用选择,刚看到目前还不知道为啥。
* b6 @# K: C' q# O" M4 c8 r% c0 ?F7不支持位带操作' d0 V9 Y2 f  P3 k8 N7 b+ Y6 [+ t
**
/ ^7 ~0 F% t) Q. {; Y; _( h1 Q% y& x2 V4 u7 ?& ]6 b
767中断+ d( b8 F  ~- L9 [
CM7内核支持256个中断,767使用了118个,包括10个内核中断和108个可屏蔽中断。具有16级可编程中断优先级。
2 E1 S: s) E& {6 R
20210113172219789.png

" @) r: w1 o7 T7 T9 [
# F7 D0 b1 H$ a5 jISER[8]:中断使能寄存器组,8个32位寄存器来控制CM7的256个中断,767自由ISER【0-3】有用,要使能某个中断,相应位置一* c+ \* B/ O  t& E( ^  {% I
ICER[8]:中断除能寄存器组,和ISER相反的功能。6 Y( a9 A0 X1 I- T8 p
ISPR[8]:中断挂起寄存器组,将对应位中断挂起,执行其他同级或高级中断。
/ J, h1 k7 E9 [! y+ h3 l" ?- m6 eICPR[8]:中断解挂控制寄存器组:
# a( G1 T0 s% yIABR[8]:中断激活标志位寄存器组:对应位为1表对应位中断正在执行,通过它判断正在执行的中断,硬件清零。
# `3 \  m& g9 H! x* L! v- aIP[240]:中断优先级控制寄存器组:240个八位寄存器组,767用108个。IP【109】-IP【0】(98,97没用),每个可屏蔽中断的8bit用了高4位,分抢占优先级和子优先级。4 p; U& K: f7 V

/ O) K- C2 j0 ?3 f+ z  Y9 V6 ~5 H0 F# j# d9 P/ {6 M' o
2021011317321818.png
+ G0 f- I' S) |( y$ r& E
7 Q: i: C) z  e! K$ v
抢占优先级级别高于子优先级,数值低为高优先级。8 }! _) {& j- Z+ r1 S: |3 V9 C. `
& {& G; M, O& l
3 E5 z5 e0 H" {% [; B3 B( S5 o" u
SYSTEM文件夹! q  F$ B6 A! ~- {
delay
4 ]& M( z% w* T' X0 W
' t6 K2 J; i0 ?
20210113212421444.png

3 c+ i9 T. r5 m. K3 N3 ~使用SysTick定时器,24位倒计时,不占用中断和系统定时器。+ D5 r* y5 n  X0 o% w
在ucos操作系统中,有SysTick提供时钟节拍,这个时钟一般不能打断。. ?" e9 @9 ?7 G8 J; l
这里的延时只是抓取SysTick值得变化,不修改,所以不影响ucos时钟节拍。
. g( J0 V" ?- F, k# ]3 I* d" N* q9 U5 |/ Y! G9 x
20210113221828459.png

  _( G' v8 X+ P$ Y3 h9 _! s1 i) j( {" c
在这里插入图片描述这里delay_ostickspersec是用来设置os时钟节拍的,由注释可见时钟节拍最大为77.7ms,这里767的SYSCLK值为216,如果要设置时钟节拍为5ms则设置delay_ostickspersec值为200,216000000/200=1080000,每个值计时1/216us,1080000/216=5000,即为5ms的os时钟节拍。3 v: V% L# y1 \7 u, K8 h
reload*1000000计数值结束即为1s
) M, l0 L5 q: w/ |( e% m1 D
! h1 Q$ ~( ^# l8 x# c# rfac_ms值为os能延时的最小单位,比这个值小delay_ms就不会使用OS延时,而使用delay_us()来实现延时。如这里delay_ostickspersec值为200,fac_ms就为57 k* A% P! I8 K( r/ W2 N9 Q

. ], E" A4 z1 D8 d' {+ E4 k3 O; tSys* O! W' `9 [$ O& m
3 @! i) s# r. a! O+ j* s: y; _7 W
20210114124733452.png

7 n( f/ I8 n9 P1 y) c! k, z- ~3 Z# d% U. r5 m
开启数据cache和指令cache,并保证D-Cache和SRAM的数据保持同步刷新,防止数据不一致。$ ~! I, q, z5 r: ?; c
这个文件还负责重命名一些类型以及初始化时钟5 K2 N$ b( x2 V2 T& J
& t* o# x9 |+ _# W7 j; H
Usart
3 L# _: O- D3 Z# }printf函数支持,如果要修改一般就修改相应的串口号。
2 e; Q7 V. q/ k% K' O- J
% G1 ]2 y* W2 `' R4 p, w) k( ZGPIO4 f* x" O: A; ]
开漏模式可以读IO输入电平变化,此模式可以把端口作为双向IO使用。- J4 o: R  C: E/ X( @0 x# ^

; z. U* k0 s3 ?$ T4 HHAL_GPIO_TogglePin();取反输出电平,内部是ODR寄存器的值决定输出电平。
) }, A: q) n3 \, F2 J' s; c' j0 u& _- k, e
BSRR寄存器和ODR寄存器功能相似,低16位写1输出高电平,高16位写1输出低电平。
$ a: {% u. j8 V8 CHAL_GPIO_WritePin(GPIOx,GPIO_Pin,PinState);: {# d6 m! J7 G% V/ N
8 d7 n, Z# Y2 ^" h8 m6 G
IDR寄存器用来读取GPIO口状态* {/ z* p* w+ b8 h' v* B
HAL_GPIO_ReadPin(GPIOx,GPIO_Pin);
+ w4 p- l. n7 M# S, U
+ _8 }. R+ H) \: U" f  }# ^) {
7 D7 e8 M7 Y% L- J* F- j( X/ q5 M* h
收藏 评论0 发布时间:2021-12-12 21:55

举报

0个回答
关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版