电子发烧友网 > 嵌入式技术 > 编程语言及工具 > 正文

简析STM32的启动过程

2017年04月18日 16:08 次阅读

  当前的嵌入式应用程序开发过程里,C语言已成为了绝大部分场合的最佳选择。如此一来main函数似乎成为了理所当然的起点——因为C程序往往从main函数开始执行。但一个经常会被忽略的问题是:微控制器(单片机)上电后,是如何寻找到并执行main函数的呢?很显然微控制器无法从硬件上定位main函数的入口地址,因为使用C语言作为开发语言后,变量/函数的地址便由编译器在编译时自行分配,这样一来main函数的入口地址在微控制器的内部存储空间中不再是绝对不变的。相信读者都可以回答这个问题,答案也许大同小异,但肯定都有个关键词,叫“启动文件”,用英文单词来描述是“Bootloader”。

  无论性能高下,结构简繁,价格贵贱,每一种微控制器(处理器)都必须有启动文件,启动文件的作用便是负责执行微控制器从“复位”到“开始执行main函数”中间这段时间(称为启动过程)所必须进行的工作。最为常见的51,AVR或MSP430等微控制器当然也有对应启动文件,但开发环境往往自动完整地提供了这个启动文件,不需要开发人员再行干预启动过程,只需要从main函数开始进行应用程序的设计即可。

简析STM32的启动过程

  关于“启动模式”

  话题转到STM32微控制器,无论是keil uvision4还是IAR EWARM开发环境,ST公司都提供了现成的直接可用的启动文件,程序开发人员可以直接引用启动文件后直接进行C应用程序的开发。这样能大大减小开发人员从其它微控制器平台跳转至STM32平台,也降低了适应STM32微控制器的难度(对于上一代ARM的当家花旦ARM9,启动文件往往是第一道难啃却又无法逾越的坎)。 相对于ARM上一代的主流ARM7/ARM9内核架构,新一代Cortex内核架构的启动方式有了比较大的变化。ARM7/ARM9内核的控制器在复位后,CPU会从存储空间的绝对地址0x000000取出第一条指令执行复位中断服务程序的方式启动,即固定了复位后的起始地址为0x000000(PC =0x000000)同时中断向量表的位置并不是固定的。而Cortex-M3内核则正好相反,有3种情况:

  1、 通过boot引脚设置可以将中断向量表定位于SRAM区,即起始地址为0x2000000,同时复位后PC指针位于0x2000000处;

  2、 通过boot引脚设置可以将中断向量表定位于FLASH区,即起始地址为0x8000000,同时复位后PC指针位于0x8000000处;

  3、 通过boot引脚设置可以将中断向量表定位于内置Bootloader区,本文不对这种情况做论述;

  Cortex-M3内核规定,起始地址必须存放堆顶指针,而第二个地址则必须存放复位中断入口向量地址,这样在Cortex-M3内核复位后,会自动从起始地址的下一个32位空间取出复位中断入口向量,跳转执行复位中断服务程序。对比ARM7/ARM9内核,Cortex-M3内核则是固定了中断向量表的位置而起始地址是可变化的。

  细说STM32的启动过程

  下面就从ST的启动文件说起,由于库中的startup_stm32f10x_md.s与编译环境有关,所以针对的是库中的

  STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x\startup\TrueSTUDIO路径下的文件进行分析。

  system_stm32f10x.c

  SystemInit():在“startup_stm32f10x_xx.s”文件中被调用,功能是设置系统时钟(包括时钟源,PLL系数,AHB/APBx的预分频系数还有 flash的设定),这个函数会在系统复位之后首先被执行。文件中默认的一些设置:允许HSE(外部时钟),FLASH(允许预取缓冲区,设置2个等待周 期),PLL系数为9,开启PLL并选择PLL输出作为时钟源(SYSCLK),后续设置SYSCLK = HCLK = APB2 = 72MHz,APB1 = HCLK/2 = 36MHz,HCLK即AHB的时钟。

  SystemCoreClockUpdate():在系统时钟HCLK变化的时候调用,以更新一个全局变量SystemCoreClock,这个变量可以为应用程序使用,必须保证正确。默认不调用这个函数,因为SystemCoreClock默认被设置为设定的频率了(72MHz)

  另外,下面这种设置寄存器的方法值得借鉴,先用位名清除相应的位,再进行设置,例如:

  #define RCC_CFGR_PLLSRC ((uint32_t)0x00010000) /*!《 PLL entry clock source */

  #define RCC_CFGR_PLLXTPRE ((uint32_t)0x00020000) /*!《 HSE divider for PLL entry */

  #define RCC_CFGR_PLLMULL ((uint32_t)0x003C0000) /*!《 PLLMUL[3:0] bits (PLL mulTIplicaTIon factor) */

  #define RCC_CFGR_PLLSRC_HSE ((uint32_t)0x00010000) /*!《 HSE clock selected as PLL entry clock source */

  #define RCC_CFGR_PLLMULL9 ((uint32_t)0x001C0000) /*!《 PLL input clock*9 */

  /* PLL configuraTIon: PLLCLK = HSE * 9 = 72 MHz */

  RCC-》CFGR &= (uint32_t)((uint32_t)~(RCC_CFGR_PLLSRC | RCC_CFGR_PLLXTPRE | RCC_CFGR_PLLMULL));

  RCC-》CFGR |= (uint32_t)(RCC_CFGR_PLLSRC_HSE | RCC_CFGR_PLLMULL9);

  startup_stm32f10x_md.s:(针对F103RBT6为中容量的产品)

  这个文件里面首先定义了复位中断(复位入口矢量被硬件固定在地址0x0000_0004)的处理函数:Reset_Handler,它的作用就是将保存于flash中的初始化数据复制到sram中,调用上面说到的SystemInit来初始化时钟,接着跳转到main执行。

  接着定义了Default_Handler, 这个是作为其他所有中断的默认处理函数,作用就是死循环,所以你假如开启了某个中断,请按照这里面的中断函数名给它写中断处理函数,例如串口中断处理函数名是 USART1_IRQHandler,你开了串口中断,如果不重写USART1_IRQHandler,就默认执行Default_Handler,死循环了。而如果你有重写,那么中断向量表中的处理函数的地址就会更新为你自己写的那个函数的地址了。为什么会这样呢?因为此文件的末尾用了类似这样的语句:

  .weak USART1_IRQHandler

  .thumb_set USART1_IRQHandler,Default_Handler

  它给中断处理函数提供了弱(weak)别名(Default_Handler),如果不重写,中断了默认执行Default_Handler,如果重写了,因为是弱别名,所以会被你写的同名函数覆盖。

  最后定义了一个中断向量表的段(.secTIon .isr_vector,“a”,%progbits),这个表将会放置在0x0000 0000那里,第二个字(0x0000 0004)是复位向量,复位之后从这地址所指的函数执行。

  那么,如何保证.isr_vector这个段将放在flash的最开始(0x08000000)呢?这就需要链接脚本了,即我们用的那个stm32_flash.ld文件了,查看一下就知道了,里面先定义了堆栈的地址:

  _estack

  /* Highest address of the user mode stack */

  _estack = 0x20005000; /* end of 20K RAM */

  接着定义了堆和栈的大小:

  /* Generate a link error if heap and stack don‘t fit into RAM */

  _Min_Heap_Size = 0; /* required amount of heap */

  _Min_Stack_Size = 0x100; /* required amount of stack */

  接着声明了各个内存的区域(定义了几个代表某个线性空间的名字,如下面的FLASH):

  /* Specify the memory areas */

  MEMORY

  {

  FLASH (rx) : ORIGIN = 0x08000000, LENGTH = 128K

  RAM (xrw) : ORIGIN = 0x20000000, LENGTH = 20K

  MEMORY_B1 (rx) : ORIGIN = 0x60000000, LENGTH = 0K }

  接着下面再介绍上面这三个名字里面都放了什么东西,首先是FLASH的:

  /* Define output sections */

  SECTIONS

  {

  /* The startup code goes first into FLASH */

  .isr_vector :

  {

  。 = ALIGN(4); KEEP(*(.isr_vector)) /* Startup code */

  。 = ALIGN(4); } 》FLASH

  /* The program code and other data goes into FLASH */

  .text :

  {

  。 = ALIGN(4); *(.text) /* .text sections (code) */

  *(.text*) /* .text* sections (code) */

  *(.rodata) /* .rodata sections (constants, strings, etc.) */

  *(.rodata*) /* .rodata* sections (constants, strings, etc.) */

  *(.glue_7) /* glue arm to thumb code */

  *(.glue_7t) /* glue thumb to arm code */

  KEEP (*(.init))

  KEEP (*(.fini))

  。 = ALIGN(4); _etext = 。; /* define a global symbols at end of code */

  } 》FLASH

  可以看到startup_stm32f10x_md.s中定义的这个段.isr_vector确实放在了最开头的位置。

  但是我们前面说复位向量在0x0000 0004,现在其地址是在flash中,所以地址是0x0800 0004,这个怎么回事呢?原来,stm32可以通过boot0、boot1引脚的配置将flash映射到0x0000 0000处。具体可参考stm32的用户手册2.4节。

  从主闪存存储器启动(BOOT0 = 0,BOOT1 = X):主闪存存储器被映射到启动空间(0x0000 0000),但仍然能够在它原有的地址(0x0800 0000)访问它,即闪存存储器的内容可以在两个地址区域访问,0x0000 0000或0x0800 0000。

  至此,整个STM32的启动过程以及程序结构都可以比较清晰了。

技术专区

关注电子发烧友微信

有趣有料的资讯及技术干货

下载发烧友APP

打造属于您的人脉电子圈

关注发烧友课堂

锁定最新课程活动及技术直播
收藏 人收藏
分享:

评论

相关推荐

Keil MDK3.20的stm32调试方法

要点: (1)程序的下载地址改到RAM空间中 (2)程序的debug之前要设定SP,PC指针到R...

发表于 2018-04-04 11:49 22次阅读
Keil MDK3.20的stm32调试方法

基于STM32的数字PDA系统软件系统设计

数字PDA系统整体由硬件电路和软件系统2部分组成,硬件电路由低功耗ARM微控制器STM32ZET6控...

发表于 2018-04-04 11:25 34次阅读
基于STM32的数字PDA系统软件系统设计

stm32 LCD12864 串口无显示

发表于 2018-04-03 23:41 67次阅读
stm32   LCD12864 串口无显示

请问像4054那样的充电ic,如何用单片机读取chrg端口充电状态

发表于 2018-04-03 15:57 93次阅读
请问像4054那样的充电ic,如何用单片机读取chrg端口充电状态

Alexa语音服务软件扩展STM32Cube

X-CUBE-AVS扩展套件包含一组用于STM32F7系列微控制器的库和应用示例,充当支持Alexa...

发表于 2018-04-03 13:41 632次阅读
Alexa语音服务软件扩展STM32Cube

STM32进入和退出睡眠模式

要求系统按如下方式进入和退出睡眠模式:在系统启动2秒后,将RTC在3秒钟之后配置为产生一个报警事件,...

发表于 2018-04-03 11:43 36次阅读
STM32进入和退出睡眠模式

STM32开放式开发环境手册

发表于 2018-04-03 10:50 75次阅读
STM32开放式开发环境手册

用于STM32Cube的Alexa语音服务软件扩展

发表于 2018-04-03 10:44 67次阅读
用于STM32Cube的Alexa语音服务软件扩展

开始使用STM32Cube的Alexa语音服务软件扩展

发表于 2018-04-03 10:43 88次阅读
开始使用STM32Cube的Alexa语音服务软件扩展

单片机STM32时钟图文理解

如输出到称为HCLK、FCLK的时钟,还直接输出到SDIO外设的SDIOCLK时钟、存储器控制器FS...

发表于 2018-04-03 08:45 83次阅读
单片机STM32时钟图文理解

RT-Thread Nano 3.0.3 的基本...

RT-Thread是一个高度可配置的嵌入式实时操作系统,配置文件是rtconfig.h。Nano就是...

发表于 2018-04-02 15:58 73次阅读
RT-Thread Nano 3.0.3 的基本...

求Labview开发STM32的工具包和licence

发表于 2018-04-01 11:29 85次阅读
求Labview开发STM32的工具包和licence

适配Nano-PCB的 便携式口袋ARM开发板 3D打印数据及机加工数据

发表于 2018-03-30 16:21 228次阅读
适配Nano-PCB的 便携式口袋ARM开发板 3D打印数据及机加工数据

STM32三种BOOT模式介绍

内置SRAM,既然是SRAM,自然也就没有程序存储的能力了,这个模式一般用于程序调试。假如我只修改了...

发表于 2018-03-30 16:09 287次阅读
STM32三种BOOT模式介绍

STM32_IAP详解(有代码,有上位机)

 和app中分别放置两套中断向量表,当iap代码中将app烧写到flash中之后,跳转到app的中断...

发表于 2018-03-30 15:58 120次阅读
STM32_IAP详解(有代码,有上位机)

stm32如何制作一个读取U盘文件系统的工程

发表于 2018-03-30 15:29 236次阅读
stm32如何制作一个读取U盘文件系统的工程

STM32内存管理以及STM32中的堆栈

这个是MDK编译之后能够得到的每个段的大小,也就能得到占用相应的FLASH和RAM的大小,但是还有两...

发表于 2018-03-29 13:45 260次阅读
STM32内存管理以及STM32中的堆栈

AD通用的三维后备箱

发表于 2018-03-28 16:35 254次阅读
AD通用的三维后备箱

基于stm32的PWM输出呼吸灯(包括stm32...

本文主要介绍了基于stm32的pwm呼吸灯设计与实现。使用定时器来控制I/O口输出PWM波形,从而驱...

发表于 2018-03-28 16:23 277次阅读
基于stm32的PWM输出呼吸灯(包括stm32...

stm32之串口工作在DMA模式下有时接收异常

发表于 2018-03-28 13:32 287次阅读
stm32之串口工作在DMA模式下有时接收异常

STM32学习—如何选择各个电路部分的主要芯片

最小系统:考虑到小车的主控板可以作为今后做四轴或其他更高级的机器人的基础电路,所以主控选择了STM3...

发表于 2018-03-27 09:59 348次阅读
STM32学习—如何选择各个电路部分的主要芯片

STM32片内FLASH被异常改写的问题分享

到此问题毫无进展,只好求助ST芯片设计人员做进一步确认,看看芯片是否真的坏了。同时,又请客户的硬件工...

发表于 2018-03-26 11:24 226次阅读
STM32片内FLASH被异常改写的问题分享

STM32的存储器映射详解

存储器映射是指把芯片中或芯片外的FLASH,RAM,外设,BOOT,BLOCK等进行统一编址。

发表于 2018-03-23 15:24 290次阅读
STM32的存储器映射详解

IAR在STM32的配置方法

FWLib-用来存放所需固件库的头文件;2).StartUp-用来存放STM32的启动代码,添加co...

发表于 2018-03-20 15:52 305次阅读
IAR在STM32的配置方法

(纯干货)使用STM32测量频率和占空比的几种方...

本文详细介绍了使用STM32测量频率和占空比的几种方法。

发表于 2018-03-13 15:43 718次阅读
(纯干货)使用STM32测量频率和占空比的几种方...

用STM32测量频率和占空比的几种方法

在内存复制过程中,面对大数据量的转移时利用DMA。所以,我们使用输入捕获事件触发DMA来搬运寄存器而...

发表于 2018-03-13 10:02 1495次阅读
用STM32测量频率和占空比的几种方法

stm32使用中出现的警告

发表于 2018-03-09 09:45 64次阅读
stm32使用中出现的警告

基于STM32的三轴数字罗盘HMC5883L模块...

最近买了个数字罗盘模块,调通后发现很不错,非常灵敏,测试的时候精度在1°以内。连续测量模式下,最快测...

发表于 2018-03-08 08:40 252次阅读
基于STM32的三轴数字罗盘HMC5883L模块...

意法半导体的新STM32让物联网设备快速连接云服...

意法半导体的新STM32探索套件简化移动网至云端连接,并提供免费试用的第三方服务,让物联网设备能够通...

发表于 2018-03-02 16:44 323次阅读
意法半导体的新STM32让物联网设备快速连接云服...

一文了解stm32使用DMA模块的相关操作

CPU最重要的工作室进行数据运算,从加减乘除到一些高级的运算,包括浮点、积分、微分、FFT等。CPU...

发表于 2018-02-27 11:18 3293次阅读
一文了解stm32使用DMA模块的相关操作

关于STM32的 一个TIM1 的PWM程序和P...

高级定时器与通用定时器比较类似,下面是一个TIM1 的PWM 程序,TIM1是STM32唯一的高级定...

发表于 2018-02-24 14:39 471次阅读
关于STM32的 一个TIM1 的PWM程序和P...

STM32定时器产生PWM彻底应用

这次学习STM32花了很长时间,一个礼拜多,也有颇多收获,学习过程也有颇多曲折。这次的任务是:用ST...

发表于 2018-02-11 11:26 405次阅读
STM32定时器产生PWM彻底应用

STM32基础PWM输出

目的:基础PWM输出,以及中断配合应用。输出选用PB1,配置为TIM3_CH4,是目标板的LED6控...

发表于 2018-02-10 16:47 192次阅读
STM32基础PWM输出

STM32的GPIO输入编程实例之读取按键状态

按键的一端与STM32的GPIO(PH15)相连,另外一端接地,且PH15外接一个1K电流大小的上拉...

发表于 2018-02-10 11:08 908次阅读
STM32的GPIO输入编程实例之读取按键状态

stm32寄存器版矩阵键盘库函数(附详细注释)

新系列采用LQFP64、LQFP100和LFBGA100三种封装,不同的封装保持引脚排列一致性,结合...

发表于 2018-02-09 11:48 169次阅读
stm32寄存器版矩阵键盘库函数(附详细注释)

stm32矩阵键盘原理图及程序介绍

STM32F0 系列产品基于超低功耗的 ARM Cortex-M0 处理器内核,整合增强的技术和功能...

发表于 2018-02-09 11:30 1131次阅读
stm32矩阵键盘原理图及程序介绍

STM32的GPIO输出编程实例之点亮三色LED

本实验通过STM32的三个GPIO口驱动三色LED的三个通道,将GPIO设置为推挽输出模式,采用灌电...

发表于 2018-02-07 11:14 1984次阅读
STM32的GPIO输出编程实例之点亮三色LED

串口通信协议stm32

串口通信指串口按位(bit)发送和接收字节。尽管比按字节(byte)的并行通信慢,但是串口可以在使用...

发表于 2018-02-01 16:22 288次阅读
串口通信协议stm32

基于STM32实现孤立词语音识别系统

语音识别是机器通过识别和理解过程把人类的语音信号转变为相应文本或命令的技术,其根本目的是研究出一种具...

发表于 2018-01-31 19:23 446次阅读
基于STM32实现孤立词语音识别系统

一款基于stm32的毕业设计方案

设计选用STM32单片机作控制器,设计温度单反馈的控制系统,对电加热水器内水的温度进行控制。通过PT...

发表于 2018-01-29 14:22 896次阅读
一款基于stm32的毕业设计方案

基于stm32的电子秤方案大全(二款stm32的...

 电子秤(英文名:electronic balance)是衡器的一种,是利用胡克定律或力的杠杆平衡原...

发表于 2018-01-29 12:05 640次阅读
基于stm32的电子秤方案大全(二款stm32的...

基于stm32的8m晶振不起振的原因解析

晶振不起振原因分析: (1) PCB板布线错误; (2) 单片机质量有问题; (3...

发表于 2018-01-26 15:41 1725次阅读
基于stm32的8m晶振不起振的原因解析

提供多主机功能,STM32的I2C通信简析

在传输数据的时候,SDA线必须在时钟的高电平周期保持稳定,SDA的高或低电平状态只有在SCL 线的时...

发表于 2018-01-26 09:37 3204次阅读
提供多主机功能,STM32的I2C通信简析

基于STM32的高性能低功耗的中文人机界面系统

本文选用了意法半导体公司基于ARM最新Cortex—M3内核的STM32F103RB作为主控芯片,通...

发表于 2018-01-25 22:53 379次阅读
基于STM32的高性能低功耗的中文人机界面系统

每一个GPIO如何配置成一个外部中断触发源

1STM32中断分组STM32 的每一个GPIO都能配置成一个外部中断触发源,这点也是 STM32 ...

发表于 2018-01-25 08:44 2028次阅读
每一个GPIO如何配置成一个外部中断触发源

基于STM32F103的水动力测控系统设计的解决...

测控系统是水动力实验中的重要测试设备。在实验中有压力、拉力、加速度等物理量通过传感器转换成电压值,需...

发表于 2018-01-25 05:40 298次阅读
基于STM32F103的水动力测控系统设计的解决...

介绍如何通过意法的STM32 MCU实现用DMA...

在嵌入式产品中有时候需要实现对外部的模拟量进行采样处理和记录,而这就需要使用到ADC功能,将外部的模...

发表于 2018-01-24 15:41 1462次阅读
介绍如何通过意法的STM32 MCU实现用DMA...

高集成度编程工具软件STM32代码烧录编程实战

如今ST推出了新的高集成度编程工具软件STM32CubeProgrammer,以后就不用这么麻烦了,...

发表于 2018-01-23 09:22 1977次阅读
高集成度编程工具软件STM32代码烧录编程实战

STM32F407总线存储框架及应用设计

在使用过程中发现DMA1无法把GPIO的IDR数据传输到内存,调试过程中出现DMA1的数据流传输错误...

发表于 2018-01-22 09:22 2373次阅读
STM32F407总线存储框架及应用设计

使用STM32快速开发AliOS Things硬...

AliOS Things 是 AliOS 家族旗下的、面向 IoT 领域的、轻量级物联网嵌入式操作系...

发表于 2018-01-22 09:17 2323次阅读
使用STM32快速开发AliOS Things硬...

STM32调试SP3485技术总结

本文主要对STM32调试SP3485技术总结。使用的STM32芯片是STM32F103RB,使用的资...

发表于 2018-01-17 15:56 325次阅读
STM32调试SP3485技术总结

STM32的调试方式、更新程序、仿真以及补救措施

STM32支持JTAG和SWD两种调试方式,且默认状态下这两种调试功能都是开启的。

发表于 2018-01-17 14:55 1173次阅读
STM32的调试方式、更新程序、仿真以及补救措施

用stm32控制4位数码管_stm32控制共阴数...

本文主要介绍了stm32控制4位共阳数码管输出计数程序设计和stm32控制共阴数码管程序设计。首先我...

发表于 2018-01-16 17:07 731次阅读
用stm32控制4位数码管_stm32控制共阴数...

对STM32基本知识的详细剖析

STM32是一种功能比较强大的32位单片机,广泛应用于各种嵌入式设备中,由于它的普及性及丰富的资源,...

发表于 2018-01-16 14:29 1199次阅读
对STM32基本知识的详细剖析

max7219驱动数码管程序(51单片机+STM...

本文主要介绍了max7219驱动数码管:STM32硬件SPImax7219驱动8位数码管显示模块程序...

发表于 2018-01-15 16:51 534次阅读
max7219驱动数码管程序(51单片机+STM...

详细解析STM32中的堆栈机制

这下明白了吧,STM32在启动的时候,RAM首先分配给使用到的全局变量,还有调用库占用的一些数据(不...

发表于 2018-01-15 15:03 1047次阅读
详细解析STM32中的堆栈机制

分享STM32定时器输出比较模式的理解

初学STM32,我这个地方卡了很久,现在终于有些明白了,现在把我的理解写下与大家共享,如果有不对的地...

发表于 2018-01-15 08:49 1071次阅读
分享STM32定时器输出比较模式的理解

stm32看门狗复位技巧编辑

本文主要介绍了stm32看门狗复位技巧,包括三个方面:判断是否需要使用、保证看门狗工作正常、保证看门...

发表于 2018-01-14 15:51 488次阅读
stm32看门狗复位技巧编辑

LED光源实现植物生长动态补光控制的几大要点

在番茄的各个生长期,弱光环境都会对番茄的生长造成很大影响,所以需要对番茄的各个生长期进行补光,至于怎...

发表于 2018-01-13 07:25 1929次阅读
LED光源实现植物生长动态补光控制的几大要点

STM32+MS5611测气压温度例程详解

MS5611气压传感器是集合SPI和I²C(高达20 MHz)总线接口的高分辨率气压传感器,分辨率可...

发表于 2018-01-12 15:31 524次阅读
STM32+MS5611测气压温度例程详解

STM32通过I2C与BMP280通信

BMP280对温度和气压的测量是通过一堆补偿数据然后根据自己的算法算出来的,要注意这些数据是什么类型...

发表于 2018-01-12 13:14 858次阅读
STM32通过I2C与BMP280通信

基于stm32的GPIO寄存器学习解析

GPIO即通用输入/输出 (General Purpose Input Output) 包括:...

发表于 2018-01-11 09:03 1274次阅读
基于stm32的GPIO寄存器学习解析

STM32中断优先级谁更高 主要根据两个方面来判...

STM32(Cortex-M3)中有两个优先级的概念——抢占式优先级和响应优先级,有人把响应优先级称...

发表于 2018-01-10 14:12 674次阅读
STM32中断优先级谁更高 主要根据两个方面来判...

STM32 系列MCU 不同型号的移植步骤解析

STM32 系列MCU 不同型号的移植!

发表于 2018-01-10 10:45 1743次阅读
STM32 系列MCU 不同型号的移植步骤解析

多合一烧写几种接口及编程模式

如今ST推出了新的高集成度的编程工具软件STM32CubeProgrammer,以后就不用这么麻烦了...

发表于 2018-01-10 09:23 2805次阅读
多合一烧写几种接口及编程模式

基于STM平台中五大嵌入式操作系统

基于STM平台且满足实时控制要求操作系统,有以下5种可供移植选择。分别为μClinux、μC/OS-...

发表于 2018-01-10 09:17 2771次阅读
基于STM平台中五大嵌入式操作系统

意法半导体推最新软体工具让烧录STM32程式更方...

据报道,意法半导体推处理一款最新软体工具,可以支持多平台可配置环境让烧录STM32程式更方便,还可以...

发表于 2018-01-08 13:20 371次阅读
意法半导体推最新软体工具让烧录STM32程式更方...

NUCLEO-F767ZI开发板评测

本文主要介绍了NUCLEO-F767ZI开发板评测,NUCLEO-F767ZI是意法半导体ST公司推...

发表于 2018-01-05 17:16 463次阅读
NUCLEO-F767ZI开发板评测

STM32单片机的串口波特率计算方法

不管是什么单片机,在使用串口通信的时候,有一个非常重要的参数:波特率。什么是波特率:波特率就是每秒传...

发表于 2018-01-05 09:59 2615次阅读
STM32单片机的串口波特率计算方法

基于STM32自码DS18B20驱动程序

根据DS18B20的通信协议,DS18B20只能作为从机,而单片机系统作为主机,单片机控制DS18B...

发表于 2018-01-05 09:03 609次阅读
基于STM32自码DS18B20驱动程序

做单片机设计,STM32 GPIO外部中断你必须...

STM32 的每一个GPIO都能配置成一个外部中断触发源,这点也是 STM32 的强大之处。STM3...

发表于 2018-01-05 07:01 1901次阅读
做单片机设计,STM32 GPIO外部中断你必须...

详细图文剖析STM32单片机串口一键下载电路与操...

在此介绍STM32单片机串口一键下载电路与操作方法详解。

发表于 2017-12-31 23:07 2041次阅读
详细图文剖析STM32单片机串口一键下载电路与操...

STM32 Nucleo-F746ZG开发板入门...

STM32 Nucleo-F746ZG开发板是很好的入门开发板,和经典的Nucleo-64相比,Nu...

发表于 2017-12-29 17:09 291次阅读
STM32 Nucleo-F746ZG开发板入门...

基于STM32步进电机多细分控制的设计

本文介绍了基于STM32F103和A3988的步进电机多细分控制系统,较传统的利用DA转换芯片的方案...

发表于 2017-12-29 16:03 623次阅读
基于STM32步进电机多细分控制的设计

基于STM32的人行通道智能控制与管理系统设计

本文主要介绍了基于STM32的人行通道智能控制与管理系统设计,主要包括中央控制模块、电机控制模块、人...

发表于 2017-12-28 14:40 264次阅读
基于STM32的人行通道智能控制与管理系统设计

基于STM32的多路电压采集的设计与实现

本文主要介绍了一种基于STM32的多路电压采集的设计与实现,主要包括STM32模块,LCD模块,SD...

发表于 2017-12-28 14:19 1265次阅读
基于STM32的多路电压采集的设计与实现

基于STM32微处理器的GPRS数据传输技术的研...

本文介绍了一种基于STM32微处理器的GPRS数据传输技术的研究。对STM32微处理器串口的设置以及...

发表于 2017-12-28 14:06 487次阅读
基于STM32微处理器的GPRS数据传输技术的研...

基于STM32+FPGA的全彩LED显示屏系统的...

本文主要介绍了一种基于STM32+FPGA的全彩LED显示屏系统的设计,STM32作为主控芯片,通过...

发表于 2017-12-28 13:59 783次阅读
基于STM32+FPGA的全彩LED显示屏系统的...

基于STM32的新型电力数据采集系统的设计与实现

本文主要介绍了基于STM32的新型电力数据采集系统的设计与实现,本系统由模拟量与开关量采集模块、通讯...

发表于 2017-12-28 11:45 528次阅读
基于STM32的新型电力数据采集系统的设计与实现

带有LED警示灯的骑行夜服设计

本文主要介绍了一款带有LED警示灯的骑行夜服设计,能够在夜晚自主发光。以STM32单片机为主控制核心...

发表于 2017-12-28 09:23 517次阅读
带有LED警示灯的骑行夜服设计

一种基于STM32和GSM的网络防盗门的设计

本文主要对一种基于STM32和GSM的网络防盗门的设计进行了分析,利用红外对射装置感知门的开关,出现...

发表于 2017-12-27 16:56 330次阅读
一种基于STM32和GSM的网络防盗门的设计

基于STM32的跑马灯实验的详细解析

我们用C语言来再学习STM32,以加深理解,并且应用相关资料和官方固件标准库。因此,我们来编写一个跑...

发表于 2017-12-27 16:31 1488次阅读
基于STM32的跑马灯实验的详细解析

一种基于STM32的高精度程控电流源设计

本文主要介绍了一种基于STM32的高精度程控电流源设计,由T频变压器、单相桥式整流滤波、一次稳压、线...

发表于 2017-12-27 16:27 616次阅读
一种基于STM32的高精度程控电流源设计

一种基于STM32的智能采油控制系统的设计与实现

本文主要介绍了一种基于STM32的智能采油控制系统的设计与实现,采油控制系统主要是三部分构成:动液面...

发表于 2017-12-27 15:55 173次阅读
一种基于STM32的智能采油控制系统的设计与实现

基于STM32的重力感应无线智能遥控小车设计

本文主要介绍了基于STM32的重力感应无线智能遥控小车设计,小车以nRF24L01和L298N为基础...

发表于 2017-12-27 14:03 562次阅读
基于STM32的重力感应无线智能遥控小车设计

一种基于STM32和PPG技术的腕戴式心率计设计

本文主要介绍了一种基于STM32和PPG技术的腕戴式心率计设计,系统包括电源系统模块、PPG信号检测...

发表于 2017-12-27 11:30 450次阅读
一种基于STM32和PPG技术的腕戴式心率计设计

一款基于STM32的心电采集及分析处理系统的设计

本文主要哦介绍了一款基于STM32的心电采集及分析处理系统,系统中采用STM32的内部采用的是ADC...

发表于 2017-12-27 11:16 406次阅读
一款基于STM32的心电采集及分析处理系统的设计

基于STM32芯片和TFT-LCD的便携式心电图...

本文主要介绍了一种基于STM32芯片和TFT-LCD的便携式心电图仪设计,心电信号由电极获取,送入心...

发表于 2017-12-27 11:05 820次阅读
基于STM32芯片和TFT-LCD的便携式心电图...

基于STM32的红外光通信装置的设计

本文主要介绍了基于STM32的红外光通信装置的设计,红外光通信装置包括语音发送模块、中继转发节点模块...

发表于 2017-12-27 10:51 329次阅读
基于STM32的红外光通信装置的设计

基于STM32和HC-SR501智能家居的智能照...

本文主要介绍了基于STM32和HC-SR501智能家居的智能照明系统设计,系统主要由APDS-900...

发表于 2017-12-27 10:15 583次阅读
基于STM32和HC-SR501智能家居的智能照...

stm32最小系统原理及结构组成

本文为大家带来stm32最小系统原理及结构组成的介绍。

发表于 2017-12-27 09:38 1102次阅读
stm32最小系统原理及结构组成

基于STM32的自动气象站控制模块设计

本文主要介绍了基于STM32的自动气象站控制模块设计,采用STM32F103VET6单片机驱动7寸触...

发表于 2017-12-27 09:37 276次阅读
基于STM32的自动气象站控制模块设计

基于STM32数据传输转换接口器的设计与实现

本文主要介绍了一种基于STM32数据传输转换接口器的设计与实现,系统由电源管理模块,实时时钟模块,大...

发表于 2017-12-27 09:17 415次阅读
基于STM32数据传输转换接口器的设计与实现

STM32的串口空闲中断及接受数据

STM32的串口空闲中断就是检测到接收数据后,在数据总线上的一个字节时间内,没有接收到数据触发空闲中...

发表于 2017-12-27 09:02 891次阅读
STM32的串口空闲中断及接受数据

一种基于STM32的最小系统及串口通信的实现

本文主要介绍了一种基于STM32的最小系统及串口通信的实现,包括3.3V电源、8MHz晶振时钟、复位...

发表于 2017-12-27 08:58 750次阅读
一种基于STM32的最小系统及串口通信的实现

基于STM32芯片的指纹识别系统设计与实现

本文主要介绍了基于STM32芯片的指纹识别系统设计与实现,通过指纹传感器采集指纹数据,指纹算法处理指...

发表于 2017-12-25 16:34 1045次阅读
基于STM32芯片的指纹识别系统设计与实现

基于STM32的直流电机PID调速系统设计与实现

本文主要介绍了一种基于STM32的直流电机PID调速系统设计与实现,该调速系统能够实现对电机的启动、...

发表于 2017-12-25 15:20 1798次阅读
基于STM32的直流电机PID调速系统设计与实现

一种基于STM32的温室远程监测和控制系统的设计

本文主要介绍了一种基于STM32的温室远程监测和控制系统的设计,通过利用STM32单片机作为温室内的...

发表于 2017-12-25 15:05 567次阅读
一种基于STM32的温室远程监测和控制系统的设计

一种基于STM32单片机的视频遥控小车的设计

本文主要介绍了一种基于STM32单片机的视频遥控小车的设计,采用STM32单片机作为主制器,通过一款...

发表于 2017-12-25 14:52 765次阅读
一种基于STM32单片机的视频遥控小车的设计

一种基于STM32和LabVIEW的无线温湿度检...

本文主要介绍了一种基于STM32和LabVIEW的无线温湿度检测系统的设计,主控制器采用STM32,...

发表于 2017-12-25 14:13 633次阅读
一种基于STM32和LabVIEW的无线温湿度检...