
STM32那点事
文章平均质量分 92
以STM32F4系列为主,讲解各个模块
Huo的藏经阁
linux爱好者,平时喜欢阅读内核源码,从源码角度解开操作系统神秘面纱
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
STM32那点事(4)_DMA(下)
DMA按照其数据流传输可以分为存储器到外设、外设到存储器或者存储器到存储器的传输。外设到存储器模式 这种模式可以通过DMA_SxCR寄存器中的EN置1,每次产生外设请求,数据流都会启动数据源到FIFO传输。当达到FIFO的阈值级别是,FIFO的内容移出并存储到目标中。 如果DMA中的计数器DMA_SxNDTR寄存器达到零、外设请求传输终止或DMA_S...原创 2019-07-25 16:58:53 · 1367 阅读 · 0 评论 -
STM32那点事(4)_DMA(上)
前言DMA(直接存储器访问)主要用于外设与存储器之间以及存储器与存储器之间提高数据传输。主要作用:1:无需借助CPU操作,就可以通过DMA在两个外设或者存储器之间传递数据,速度较快。2:解放CPU资源,使CPU可以 有时间做其他事情。上图分别为有无DAM外设与存储器读写过程,无DMA数据流过程:外设->CPU->存储器,需要占用CPU资源软件读写。有DMA数据流...原创 2019-07-25 14:52:16 · 1182 阅读 · 0 评论 -
STM32那点事(3)_中断(下)
上节主要讲述了STM32 的中断基础知识以及一般配置过程。外部中断与其他模块中断相对要复杂一点。外部中断一般都是由GPIO触发,是在整个系统中需要经常用到。介绍STM32F4 有多达23个中断,每个中断都由相应的单独寄存器进行配置,也可以单独进行屏蔽相关不影响。每个GPIO都可以设置成中断输入线,占用Ext0 至 Exit1 15, 示意图如下:STM32 有多少达140个GPIO...原创 2019-07-18 11:22:42 · 1952 阅读 · 0 评论 -
STM32那点事(3)_中断(上)
中断是STM32核心模块之一,几乎所有的模块都需要和中断打交道。了解STM32运作机制非常重要。在《STM32那点事(1)_STM32F40_41xx启动文件详解》中讲解启动流程中提到,中断维护有一中断向量表。当中断发生时,将会由硬件自动跳转到相应的中断函数,中断函数地址是由硬件规定写死,以便硬件知道某个中断发生时跳转到相应软件中断函数地址。STM32 拥有10个系统异常中断,和82个其他模块...原创 2019-07-17 16:02:08 · 567 阅读 · 0 评论 -
STM32那点事(2)_时钟树(下)
上两篇主要讲述了系统时钟,APB1, APB2, AHB配置的整个过程,是系统启动的关键,剩余部门将单独介绍独立看门狗(IWDGCLK)独立看门够采用内部单独时钟LSIRC,用于与其他系统时钟隔离,以保证看门狗的稳定性以及独立性, 看门口首先要使能。RTC时钟RTC时钟来源可以配置为三个 LSI, LSE以及HSE, 其中HSE需要配置为2到31分频, LSE为32.768Khz高精度...原创 2019-07-15 16:17:36 · 387 阅读 · 0 评论 -
STM32那点事(2)_时钟树(中)
上篇主要介绍了外部时钟通过PLL分频或者倍频之后得到PLLCLK的整个流程,此流程是芯片启动过程中首先根据硬件需要进行相应配置。只有将上述流程搞清楚,系统才能正常启动。系统时钟系统频率为168Mhz,主要来源由以下三种,如下图所示:系统时钟分别来源于HSE,HSI以及经过PLL分频之后的PLLCLK,由于HSE和HSI频率都不能直接达到168Mhz,所以一般选择PLLCLK所谓系统时钟,...原创 2019-07-15 15:32:50 · 588 阅读 · 0 评论 -
STM32那点事(2)_时钟树(上)
时钟树属于STM32内部资源,是整个芯片内部模块种最难看懂的一部分,相对于其他高性能CPU芯片,STM32时钟树相对没有那么复杂,了解STM32时钟树对熟悉整个芯片内部架构非常有帮助,进一步学习其他高性能CPU芯片也不再话下。STM32整个时钟树图如下:整个时钟树第一次看起来比较复杂,可以按照分块进行一一介绍,将其进行拆解(复杂东西合理拆解,看起来就没那么复杂,哈哈)时钟来源STM32时...原创 2019-07-12 17:50:50 · 775 阅读 · 1 评论 -
STM32那点事(1)_STM32F40_41xx启动文件详解
STM32 官方为广大开发者提供一套统一开发固件,主要是屏蔽寄存器封装,提供初始化等功能,较少开发者负担。只需要调用相关模块封装,对相关结构提初始化即可,较少开发调试时间。本次主要以官方STM32F4xx_DSP_StdPeriph_Lib_V1.8.0固件版本为主,主要讲解各个模块主要作用以及使用方法,固件主要结构将在后面做介绍本次主要讲解开发过程中大家都会忽略的STM32 启动文件流程,ST...原创 2019-07-12 14:22:17 · 6831 阅读 · 2 评论 -
DMA双缓冲传输意义
双缓冲,也有人叫乒乓缓冲.因为一般情况下,串口的数据DMA 传输进BUF1 的过程中,是不建议对BUF1 进行操作的.但由于串口数据是不会等待的直传,所以你总不能等BUF1 满了,才往FLASH 上写,因为这时候串口数据依旧是源源不断.于是,使用双缓冲就变的理所当然了.当BUF1 满了的时候,就马上设置DMA的目标为BUF2,并且BUF1的数据往25F080上灌.当串口DMA写满了BUF2...转载 2019-07-09 11:35:43 · 2663 阅读 · 0 评论 -
STM32那点事(5)_ADC(下)
官方SDK中提供了ADC操作的相关主要接口,极大方便了对ADC的配置ADC数据结构ADC的主要数据结构有两个ADC_InitTypeDef 和 ADC_CommonInitTypeDefADC_CommonInitTypeDef主要提供ADC初始化配置包括模式,时钟分频,采样周期等ADC_CommonInitTypeDef结构成员 描述 uint32_t ADC_...原创 2019-09-19 19:56:30 · 3707 阅读 · 0 评论 -
STM32那点事(5)_ADC(中)
在上节得ADC转换规则中可以看到有两个规则:规则通道和注入通道,两个规则应用场景不太一样:规则通道是比较常用的转换规则,支持连续循环自动采集,不需要人工进行干预,可以由硬件自动触发进行采集,在同一个ADC内只有一个数据寄存器,例如当ADC1内在通道13和14有两个都需要连续采集,需要直接将采集的数据通过DMA传递到内容中,以防止采集到的数据相互影响,可以将其理解位为一个main函数循环主处理或...原创 2019-09-19 18:48:01 · 715 阅读 · 0 评论 -
STM32那点事(5)_ADC(上)
ADC介绍ADC顾名思义为模数转换,与之相对的是DAC为数模转换,AD/DA为电子元器件中的重要模块,主要负责模拟信号和数字信号之间的转换,因为我们计算机中使用到的主要是数字信息010101等,而我们人类常见的各种信息都是模拟信息,故要想计算机进行处理外界各种模拟信息,就需要使用AD转换将所需要采集的模拟信息转换成01的数字信息,这样计算机才能够进行处理。在嵌入式系统中,一般都需要外接各种传感...原创 2019-09-17 17:45:31 · 1350 阅读 · 0 评论 -
晶体(crystal、无源晶振)两端电容取值计算
数字电路中往往会需要一个时钟源,常用的比如晶体振荡器(oscillator、有源晶振)、晶体(crystal、无源晶振)等,一般晶体用的更多些。对于晶体来说,一般电路设计时会在晶体两端各接一个电容到地,如下图所示:上面电路中晶体两端的电容是用来匹配晶体的负载电容(CL:Load Capacitance)的,如果负载电容无法满足的话一般会使晶体频率产生偏差,严重的话晶体无法起振。电路设计中要...转载 2019-09-11 16:37:51 · 1560 阅读 · 0 评论 -
无源晶振(Crystal)的负载电容
晶振分为有源晶振(Oscillator)和无源晶振(Crystal),无源晶振有一个参数叫做负载电容(Load capacitance),负载电容是指在电路中跨接晶振两端的总的外界有效电容。负载电容是工作条件,即电路设计时要满足负载电容等于或接近晶振数据手册给出的数值才能使晶振按预期工作。负载电容计算公式CL=[Cd*Cg/(Cd+Cg)]+Cic+△CCd,Cg:分别接在晶振的两个...转载 2019-09-11 16:21:06 · 1806 阅读 · 0 评论 -
STM32的RTC晶振不起振的原因及解决方法
最近项目上遇到STM32晶振不起振问题,网上看到一篇帖子对该问题总结比较好STM32的RTC晶振经常出现不起振的问题,这已经是“业界共识”了。很多人在各种电子论坛上求助类似于“求高手指点!RTC晶振不起振怎么办”的问题,而其答案基本可以概括为“这次高手帮不了你了” 更有阴谋论者提出让人啼笑皆非的解释——STM32的RTC晶振不起振是ST与晶振厂商串通后故意搞出来的,目的是提高某晶振厂商高...转载 2019-09-11 16:11:44 · 5260 阅读 · 1 评论 -
STM32F4设置系统时钟源为内部HSI
最近项目需要在调试STM32时遇到外部晶振时钟不稳定,查看RCC_CR寄存器的第17位始终处于0,表示外部晶振始终处于不稳定状态:当HSE开启时,如果HSERDY一直处于0时,则芯片会启动内部16Mhz晶振,但是此时PLL分频无效,整个系统降到了16Mhz,无法忍受,立刻启动内部时钟源HSI为系统时钟, 同时通过配置PLL,将系统时钟配置到168Mhz,由于系统设置时钟源是在系统起来厚...原创 2019-09-10 11:33:36 · 4878 阅读 · 1 评论 -
STM32那点事之构建工程模板
1.新建一个文件夹,命名为工程的名字(例如:STM32_Demo),在此文件夹下建立5个文件夹,分别命名为。如下图:CORE,FWLIB,OBJ,SYSTEM,USER2.在ST官网下载最新标准固件库(STM32F4xx_DSP_StdPeriph_Lib_V1.8.0)并解压:https://www.st.com/en/embedded-software/stm32-em...转载 2019-09-06 07:52:50 · 472 阅读 · 0 评论 -
STM32那点事(6)_定时器(上)
STM32定时器是CPU中的基本功能模块之一,最基本的功能是提供定时,STM32定时器共用16个定时器,主要分为两个基本定时器,10个通用定时器,2个高级定时器,以及两个看门狗定时器。看门狗定时器后面再讨论,接用野火资料,其各个定时器特性列表如下:基本定时器(TIM6和TIM7)STM32的基本定时器为TIM6和TIM7,只提供基本定时功能,参考中文手册,其特性主要包含:● 16...原创 2019-10-09 09:44:23 · 1144 阅读 · 0 评论