和F1的一点区别: GPIO_Initure.Alternate=GPIO_AF7_USART1;多了这么一个东西用来对复用端口进行复用功能选择,F1不用选择,刚看到目前还不知道为啥。 F7不支持位带操作 ** 767中断 CM7内核支持256个中断,767使用了118个,包括10个内核中断和108个可屏蔽中断。具有16级可编程中断优先级。 , F5 o {- i: G# y4 V2 @& _ ISER[8]:中断使能寄存器组,8个32位寄存器来控制CM7的256个中断,767自由ISER【0-3】有用,要使能某个中断,相应位置一$ C" i& ~! C. ]% _ ICER[8]:中断除能寄存器组,和ISER相反的功能。 ISPR[8]:中断挂起寄存器组,将对应位中断挂起,执行其他同级或高级中断。 ICPR[8]:中断解挂控制寄存器组: IABR[8]:中断激活标志位寄存器组:对应位为1表对应位中断正在执行,通过它判断正在执行的中断,硬件清零。 IP[240]:中断优先级控制寄存器组:240个八位寄存器组,767用108个。IP【109】-IP【0】(98,97没用),每个可屏蔽中断的8bit用了高4位,分抢占优先级和子优先级。 6 E! k: W' [& f3 N : d, I& ?- D# m9 I( Y1 Z: R; t# N 抢占优先级级别高于子优先级,数值低为高优先级。: L/ S( k( `2 T( `. ~ 5 Y. I) d$ H& r" K7 r* [. x SYSTEM文件夹4 p/ V, d1 K5 @ delay a7 i$ ]8 G4 R 使用SysTick定时器,24位倒计时,不占用中断和系统定时器。7 l1 W2 [' a9 W6 v. C% r( j 在ucos操作系统中,有SysTick提供时钟节拍,这个时钟一般不能打断。) W* U# d# K4 z% r8 I8 v8 ~ 这里的延时只是抓取SysTick值得变化,不修改,所以不影响ucos时钟节拍。+ U; Q8 E5 u3 r7 A8 w6 [ 8 K6 j, W- ^( N. K; U " B8 A0 h- o N! V# j 在这里插入图片描述这里delay_ostickspersec是用来设置os时钟节拍的,由注释可见时钟节拍最大为77.7ms,这里767的SYSCLK值为216,如果要设置时钟节拍为5ms则设置delay_ostickspersec值为200,216000000/200=1080000,每个值计时1/216us,1080000/216=5000,即为5ms的os时钟节拍。 reload*1000000计数值结束即为1s fac_ms值为os能延时的最小单位,比这个值小delay_ms就不会使用OS延时,而使用delay_us()来实现延时。如这里delay_ostickspersec值为200,fac_ms就为5# y# t$ a1 R ~/ O . Z% d U! k0 f& N3 c, S7 @ Sys7 B1 x/ V' ^4 c u 开启数据cache和指令cache,并保证D-Cache和SRAM的数据保持同步刷新,防止数据不一致。 这个文件还负责重命名一些类型以及初始化时钟 Usart printf函数支持,如果要修改一般就修改相应的串口号。4 U9 D M+ }# X6 ?6 m) X m GPIO 开漏模式可以读IO输入电平变化,此模式可以把端口作为双向IO使用。 # p2 P' l* r6 f; @& X& S2 K7 s9 h HAL_GPIO_TogglePin();取反输出电平,内部是ODR寄存器的值决定输出电平。 - ^2 n2 P; k4 H. x3 r BSRR寄存器和ODR寄存器功能相似,低16位写1输出高电平,高16位写1输出低电平。( l9 x0 \9 J3 \& ?/ `' L9 I HAL_GPIO_WritePin(GPIOx,GPIO_Pin,PinState); IDR寄存器用来读取GPIO口状态 z A7 @% p' D2 p) s4 i* _* i HAL_GPIO_ReadPin(GPIOx,GPIO_Pin);5 y3 K' _0 c4 X3 A ' f' E+ b8 M7 b2 I 5 t* A% w7 A& O5 z! B |
【合集】STM32F7教程、资料大集合
基于STM32F746G-Discover的扩展电路板
F769 Discovery实现播放U盘音乐的播放器
STM32 VS Code Extension (在Ubuntu上开发STM32,ST官方vscode插件使用指南)
STM32F765@216MHz跑NES模拟器【代码】【视频】
基于STM32F7实现ADC软件触发+轮询采集
基于STM32F7进行ADC采集解决更新问题
基于STM32F7使用定时器经验分享
实现基于STM32F7中周期采集
基于STM32F7中实现采集和中断