STMCU小助手
发布时间:2022-1-23 15:34
|
配置完之后[见前面的文章],就可以写个简单的gpio程序了,但是在此之前还要了解一些基本知识。 最起码应该知道stm32的电源与时钟的相关知识,下面就针对此简单絮叨一番。 ![]()
关于电源部分在此不多叙述,相关的知识应该补充待机模式的切换,pvd的控制等,但目前要实现的是gpio的控制,还是有目的性的看,要不然太多也太繁琐。 4 O2 J$ s- Z! ^ 下面还是用张图介绍下时钟树,# o9 u* o% i* u$ M+ J, J6 O ![]()
图中红色部分是主要的几个时钟源, HSE , HSI , LSE , LSI , PLL [用作倍频之用] 其实从英文就可理解它们的用途,如HSE代表High Speed External. HSE就不用说了,和传统的51,avr之类的外部晶振一个道理。 HSI 则是内部时钟源,是内部的相对不精准晶振,avr等单片机也有,对晶振要求不严格的场合或者低功率时可以用此。复位时默认用的是此晶振,需通过配置切换到其它晶振。 LSE 是低频率时钟源是供内部RTC用的,和DS1302或HT1380等类似一般都用32.768KHZ的,当然stm32也允许使用内部的clk经过分频后作RTC的clk用。 LSI 是内部低频率晶振为40khz,多作为看门狗的clk用。 PLL 就不用多说了,仅仅是为了倍频用的,想获得72mhz的频率,少了它是不行的。 ( L N6 P+ Y6 V" l c! jArm整了个叫做AMBA的总线,不过对我来说就是一学术名词,具体内部有多复杂暂不知道也不过分关心。一般来说,只要知道AHB[advanced highspeed bus]上是高速的东西【诸如flash,dma什么的】,时钟对应HCLK,其上通过一个所谓的桥【bridge】连接到APB【p对应peripheral 】,其上连接的是一些外设【诸如gpio,串口什么的】,时钟对应PCLK。当然stm32的APB分成了两个,用1和2区分,GPIO挂在了APB2上了。 G- D' m1 v6 R! p& {: n5 O# G3 ?在知道了上面的知识知识之后就不难明白为啥stm32程序开始都要有个RCC_Configuration的函数了,其实里面就是要对RCC进行一番配置。6 O% `7 \5 N0 ]' {" u" B: u" S' ] 我们可以很简单的实现这一函数 void RCC_Configuration(void){ ( z/ C0 _- K( y/ l8 L: F8 w SystemInit();1 q) }# p+ h) i' v$ I } SystemInit是一个库函数,下面将其展开具体研究下[针对103系列],5 _6 P0 X5 L6 h) V, I% Z% `
关于a&=… 和 a|=…这样的赋值操作我就不说啥了, 里面RCC->CR这样的使用还是比较有意思的 RCC是一个指针型,其类型是RCC_TypeDef类型的,对于103的器件其具体如下0 W( d4 ]9 h, Y+ {4 H& h4 U
__IO 就是volatile ,而后面那个uint32_t就是告诉要占32位的长度这样RCC指向的其实就是RCC相关寄存器的基地址,然后通过->便可取到相应的寄存器。下面简要说明下配置步骤【103系列】1 Set HSION bit 5 v" q7 D5 I# ~7 |2 _/ \ 2. Reset SW, HPRE, PPRE1, PPRE2, ADCPRE and MCO bits 3. Reset HSEON, CSSON and PLLON bits 4. Reset HSEBYP bit 5. Reset PLLSRC, PLLXTPRE, PLLMUL and USBPRE/OTGFSPRE bits ; q" |8 W+ h8 p 6. Disable all interrupts and clear pending bits }9 Y" p* T" P* E( D& O 7. sysclock的配置* P3 |' o+ D( `7 b. b | 第9部需要借助于如下函数【以72MHZ为例】5 d4 a S- i) N. T5 V static void SetSysClockTo72(void); 具体以后有时间再做分析。; C* a% C1 V3 q' a3 {8 L |
实战经验 | 基于STM32G0B1的全桥移相+同步整流PWM解决方案
DMA 原理从 0 到 1:为什么它能解放 CPU?一文讲透 DMA 的工作流程
【福利三:逢7发帖赢大礼】8、基于STM32G070板子的Ymodem串口协议IAP Bootloader开发
【福利三:逢7发帖赢大礼】7、基于STM32G070板子TF卡的FATFS移植
【福利三:逢7发帖赢大礼】6、基于STM32G070板子spiflash的FATFS移植
【福利三:逢7发帖赢大礼】5、基于STM32G070板子IRDA红外遥控接收解码
【福利三:逢7发帖赢大礼】4、基于STM32G070板子SPI flash 移植SFUD库
【福利三:逢7发帖赢大礼】基于STM32G070板子的uart shell移植设计
【福利三:逢7发帖赢大礼】3、基于STM32G070板子的YModem串口协议通信
【福利三:逢7发帖赢大礼】2、基于STM32G070板子的OLED移植U8G2库
微信公众号
手机版