电子发烧友网 > 嵌入式技术 > 嵌入式软件/开发板 > 正文
  1. 嵌入式开发
    +关注
    关注
    文章 153
    浏览量 17353
  2. 中断
    +关注
    关注
    文章 136
    浏览量 16691
  3. STM32
    +关注
    关注
    文章 2297
    浏览量 206753

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

2018年01月10日 14:12 次阅读

一:综述

STM32 目前支持的中断共为 84 个(16 个内核+68 个外部), 16 级可编程中断优先级 的设置(仅使用中断优先级设置 8bit 中的高 4 位)和16个抢占优先级(因为抢占优先级最多可以有四位数)。

二:优先级判断

STM32(Cortex-M3)中有两个优先级的概念——抢占式优先级和响应优先级,有人把响应优先级称作‘亚优先级’或‘副优先级’,每个中断源都需要被指定这两种优先级。 具有高抢占式优先级的中断可以在具有低抢占式优先级的中断处理过程中被响应,即中断嵌套,或者说高抢占式优先级的中断可以嵌套低抢占式优先级的中断。 当两个中断源的抢占式优先级相同时,这两个中断将没有嵌套关系,当一个中断到来后,如果正在处理另一个中断,这个后到来的中断就要等到前一个中断处理完之后才能被处理。如果这两个中断同时到达,则中断控制器根据他们的响应优先级高低来决定先处理哪一个;如果他们的抢占式优先级和响应优先级都相等,则根据他们在中断表中的排位顺序决定先处理哪一个。

三:优先级分组

既然每个中断源都需要被指定这两种优先级,就需要有相应的寄存器位记录每个中断的优先级;在Cortex-M3中定义了8个比特位用于设置中断源的优先级,这8个比特位在NVIC应用中断与复位控制寄丛器(AIRCR)的中断优先级分组域中,可以有8种分配方式,如下: 所有8位用于指定响应优先级 最高1位用于指定抢占式优先级,最低7位用于指定响应优先级 最高2位用于指定抢占式优先级,最低6位用于指定响应优先级 最高3位用于指定抢占式优先级,最低5位用于指定响应优先级 最高4位用于指定抢占式优先级,最低4位用于指定响应优先级 最高5位用于指定抢占式优先级,最低3位用于指定响应优先级 最高6位用于指定抢占式优先级,最低2位用于指定响应优先级 最高7位用于指定抢占式优先级,最低1位用于指定响应优先级 这就是优先级分组的概念。 Cortex-M3允许具有较少中断源时使用较少的寄存器位指定中断源的优先级,因此STM32把指定中断优先级的寄存器位减少到4位(AIRCR高四位),这4个寄存器位的分组方式如下: 第0组:所有4位用于指定响应优先级 第1组:最高1位用于指定抢占式优先级,最低3位用于指定响应优先级 第2组:最高2位用于指定抢占式优先级,最低2位用于指定响应优先级 第3组:最高3位用于指定抢占式优先级,最低1位用于指定响应优先级 第4组:所有4位用于指定抢占式优先级 可以通过调用STM32的固件库中的函数NVIC_PriorityGroupConfig()选择使用哪种优先级分组方式,这个函数的参数有下列5种: NVIC_PriorityGroup_0 => 选择第0组 NVIC_PriorityGroup_1 => 选择第1组 NVIC_PriorityGroup_2 => 选择第2组 NVIC_PriorityGroup_3 => 选择第3组 NVIC_PriorityGroup_4 => 选择第4组 中断优先级分组是为了给抢占式优先级和响应优先级在中断优先级寄丛器的高四位分配各个优先级数字所占的位数。在一个程序中只能设定一次。

四:中断源的优先级

接下来就是指定中断源的优先级,中断源优先级是在中断优先级寄存器中设置的,只能设置及高四位,必须根据中断优先级分组中设置好的位数来在该寄存器中设置相应的数值。假如你选择中断优先级分组的第3组:最高3位用于指定抢占式优先级,最低1位用于指定响应优先级,那么抢占式优先级就有000-111共八种数据选择,也就是有八个中断嵌套,而响应优先级中有0和1两种,总共有8*2=16种优先级。 中断源优先级具体的设置了该中断源的优先级别 在一个程序中可以设定多个(最多16个)优先级,每个中断源只能设定的一个。 每写一个关于中断优先级的程序必须包含下列两个函数: (1)void NVIC_PriorityGroupConfig(u32 NVIC_PriorityGroup)中断分组设置 (2)void NVIC_Init(NVIC_InitTypeDef* NVIC_InitStruct)中断优先级设置 具体设置: 可以通过调用STM32的固件库中的函数NVIC_PriorityGroupConfig()选择使用哪种优先级分组方式,这个函数的参数有下列5种: NVIC_PriorityGroup_0 => 选择第0组 NVIC_PriorityGroup_1 => 选择第1组 NVIC_PriorityGroup_2 => 选择第2组 NVIC_PriorityGroup_3 => 选择第3组 NVIC_PriorityGroup_4 => 选择第4组

五:举例

接下来就是指定中断源的优先级,下面以一个简单的例子说明如何指定中断源的抢占式优先级和响应优先级: // 选择使用优先级分组第1组 NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1); // 使能EXTI0中断 NVIC_InitStructure.NVIC_IRQChannel =EXTI0_IRQChannel; NVIC_InitStructure.NVIC_IRQChannelPreempTIonPriority = 1; //指定抢占式优先级别1 NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0; //指定响应优先级别0 NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; NVIC_Init(&NVIC_InitStructure); // 使能EXTI9_5中断 NVIC_InitStructure.NVIC_IRQChannel =EXTI9_5_IRQChannel; NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0; //指定抢占式优先级别0 NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1; //指定响应优先级别1 NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; NVIC_Init(&NVIC_InitStructure);

六:注意事项

1)如果指定的抢占式优先级别或响应优先级别超出了选定的优先级分组所限定的范围,将可能得到意想不到的结果; 2)抢占式优先级别相同的中断源之间没有嵌套关系; 3)如果某个中断源被指定为某个抢占式优先级别,又没有其它中断源处于同一个抢占式优先级别,则可以为这个中断源指定任意有效的响应优先级别。

七:开关总中断

在STM32/Cortex-M3中是通过改变CPU的当前优先级来允许或禁止中断。 PRIMASK位:只允许NMI和hardfault异常,其他中断/异常都被屏蔽(当前CPU优先级=0)。 FAULTMASK位:只允许NMI,其他所有中断/异常都被屏蔽(当前CPU优先级=-1)。 在STM32固件库中(stm32f10x_nvic.c和stm32f10x_nvic.h)定义了四个函数操作PRIMASK位和FAULTMASK位,改变CPU的当前优先级,从而达到控制所有中断的目的。 下面两个函数等效于关闭总中断: void NVIC_SETPRIMASK(void); void NVIC_SETFAULTMASK(void); 下面两个函数等效于开放总中断: void NVIC_RESETPRIMASK(void); void NVIC_RESETFAULTMASK(void); 上面两组函数要成对使用,不能交叉使用。 例如: 第一种方法: NVIC_SETPRIMASK(); //关闭总中断 NVIC_RESETPRIMASK(); //开放总中断 第二种方法: NVIC_SETFAULTMASK(); //关闭总中断 NVIC_RESETFAULTMASK(); //开放总中断 常常使用 NVIC_SETPRIMASK(); // Disable Interrupts NVIC_RESETPRIMASK(); // EnableInterrupts 补充 可以用 #define CLI() __set_PRIMASK(1) #define SEI() __set_PRIMASK(0) stm32优先级 1.优先级等级: STM32用户能分配的优先级有16级,也就是用优先级寄存器NVIC->IP[x]的高四位来表示莫个中断的优先级。 2.优先级组: 在STM32中将一个中断的优先级分为:抢占优先级和子优先级。 在进行优先级判断的时候先是比较抢占优先级然后比较子优先级。 在固件库中用变量分别表示抢占优先级和子优先级: NVIC_InitTypeDef.NVIC_IRQChannelPreemptionPriority;(抢占优先级) NVIC_InitTypeDef.NVIC_IRQChannelSubPriority;(子优先级) 优先级组就是对抢占优先级和子优先级进行的分界: 例如设置优先级组为0x05,那么表示的是莫个中断的优先级从第5位开始为界限,高两位[6:7]是抢占优先 级。第两位是[5:4]表示的是子优先级。 举例说明: //调用优先级组设置函数,设置优先级是0x05. ..... NVIC_SetPriorityGrouping(5); ..... //这里说明了一个优先级寄存器的(NVIC->IP[x])的7,6位表示的是抢占优先级。5,4表示的是优先级。 ...... NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority =0; NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1; NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; NVIC_Init(&NVIC_InitStructure); ....... //这里进行优先级的设置:通过上面的设置可以知道抢占优先级和子优先级的范围都是3~0; //那么这样就设置好了一个中断的优先级 //==================================================== // STM32 中断与嵌套NVIC 快速入门。 // netjob 2008-8-1 //==================================================== 我也是靠看这本书才弄懂的: Cortex-M3 权威指南 Joseph Yiu 著 宋岩 译 其实很简单。 //CM3 有 最多240个中断(通常外部中断写作IRQs),就是 软件上说的IRQ_CHANAELx(中断通道号x) 每个中断有自己的可编程的中断优先级【 有唯一对应的 中断优先级寄存器 】。 由于CM3支持 硬件中断嵌套,所以可以有 256 级的可编程优先级和 256级中断嵌套【书上称:抢占(preempt)优先级】 所以大家可以设: IRQ CHANAEL 0 通道 = 2 中断优先级 WWDG 窗口定时器中断 IRQ CHANAEL 1 通道 = 0 中断优先级 PVD 联到EXTI的电源电压检测(PVD)中断 IRQ CHANAEL 3 通道 = 255 中断优先级 RTC 实时时钟(RTC)全局中断 IRQ CHANAEL 6 通道 = 10 中断优先级 EXTI0 EXTI线0中断..... IRQ CHANAEL 239 通道 = (0 这个实在是太恐怖了! 是的,其实CM3 并没有这样做。 实在的芯片例如STM32等就只有设计来可用才64级可编程优先级和8级中断嵌套。 对 64级中断就是说:( INT0 到INT63)这个大家比较好理解,其它的64···239就不用了。 IRQ CHANAEL 0 。。。 IRQ CHANAEL 63 而8级中断嵌套这又是何解呢? 是这样的,上面说 一个 【中断】对应一个【中断优先级寄存器】,而这个寄存器是 8 位的。 当然就是256级了。而现在就用了 它其中的 BIT7,IT6,BIT5 三位来表示,而且是MSB对齐的。 用了3 个位来表达优先级(MSB 对齐的我们能够使用的8个优先级为:0x00(最高),0x20,0x40,0x60,0x80,0xA0,0xC0以及0xE0。) 这样我们在【中断优先级寄存器】就不能按理论的填0到255之间的数了,而只能填0x00(最高),0x20,0x40,0x60,0x80,0xA0,0xC0以及0xE0。) 所以大家可以设: IRQ CHANAEL 0 通道 = 0x20 中断优先级 WWDG 窗口定时器中断 IRQ CHANAEL 1 通道 = 0x40 中断优先级 PVD 联到EXTI的电源电压检测(PVD)中断 IRQ CHANAEL 3 通道 = 0x20 中断优先级 RTC 实时时钟(RTC)全局中断 IRQ CHANAEL 6 通道 = 0xA0 中断优先级 EXTI0 EXTI线0中断 ..... IRQ CHANAEL 63 通道 =【0x00(最高),0x20,0x40,0x60,0x80,0xA0,0xC0 以及0xE0。)】 大家注意到了,上面通道0和通道3 的优先级都是0X20, 这怎么办? // 如果优先级完全相同的多个异常同时悬起,则先响应异常编号最小的那一个。如IRQ#0会比IRQ #3先得到响应,而且文中还讲了【优先级分组】,这又是什么回事?其实我回头看来,这个【优先级分组】和【抢占优先级】【亚优先级】都毫无意义的。 如果当时用 256级即是把【中断优先级寄存器】的8位都全用上,就没这个必要了。还什么优先级分组呢! 就是因为厂家现在【偷工减料】,才搞出这个明堂来的。 是这样的,在应用程序中断及复位控制寄存器(AIRCR) 中的10:8位【3位】是表示【优先级分组】它作用主要是用于对【中断优先级寄存器】『我们现在中用了BIT7,BIT6,BIT5三位』的功能的说明。 有一个表,在《Cortex-M3 权威指南》的110页,例如我们把AIRCR的10:8位设为【5】,查表可得【抢占优先级】=【7:6】,【亚优先级】=【5:0】,对于【中断优先级寄存器】只用了BIT7,6,5,因此我们可以看作是【7:6】,【5】。那4-0 可以不管。 现在我们的 IRQ0=0X20, IRQ3=0X20, 也就是 【0 0 1 0】『bit7=0,bit6=0,bit5=1,bit4=0』因为大家(IRQ0/IRQ3)的【抢占优先级】=【7:6】都是0,说明它们的中断相应级别是一样的。再继续判断它们哪个更优先的责任就要看【5】,结果连【5】都是一样的! 那就按默认: // 如果优先级完全相同的多个异常同时悬起,则先响应异常编号最小的那一个。如IRQ#0会比IRQ #3先得到响应,由于CM3没有进中断【关全局中断相应】这事,只要是中断通道打开了,就会存在通道间的嵌套,即是会发生【抢占】的情况了。 上面就简短的说明,如果要详细理解,可以看《Cortex-M3权威指南》。有任何理解不当,请各位多多指教! 补充注意: “2)抢占式优先级别相同的中断源之间没有嵌套关系;” 所以大家可以设: IRQ CHANAEL 0 通道 = 0x20 中断优先级 WWDG 窗口定时器中断 IRQ CHANAEL 1 通道 = 0x40 中断优先级 PVD 联到EXTI的电源电压检测(PVD)中断 IRQ CHANAEL 3 通道 = 0x20 中断优先级 RTC 实时时钟(RTC)全局中断 IRQ CHANAEL 6 通道 = 0xA0 中断优先级 EXTI0EXTI线0中断 这样 0 通道和3 通道就不会有嵌套情况,而是0 通道按默认比3 通道优先高些。而0 通道与1通道就会有嵌套情况。 芯片复位后,默认的优先级分组 是 0, 就是 【7:1】表示抢占式优先级,【0】表示亚优先级, 这样对于MSB对齐的 8个优先级为:0x00(最高),0x20,0x40,0x60,0x80,0xA0,0xC0以及0xE0。) 使用就很方便了,建议大家就用默认的默认的优先级分组是0,也就是复位后的值,哈哈! 例如下面的两个按键,都使用外中断方式,使用了PD.3,和PD.4两个引脚。这两个中断的优先级都是0X20,按默认的优先级分组,它们之间不会发生中断嵌套。 STM32_Nvic_Regs->Priority[9].all=0x20; // 中断的优先级是0X20 STM32_Nvic_Regs->Enable[0].bit.INT9=1; // 开INT9 中断IRQ9 STM32_Nvic_Regs->Priority[10].all=0x20; // 中断的优先级是0X20 STM32_Nvic_Regs->Enable[0].bit.INT10=1; // 开INT10 中断IRQ10

物联网嵌入式系统设计之STM32实战开发



点击此处立即开始学习!


技术专区

  1. 低成本开发系统现在正处于物联网期望膨胀峰值期
  2. 因特尔Cyclone 10 LP FPGA评估板电路图集及PCB装配图
  3. 采用32位MCU系列对新型无磁水表设计
  4. 一个嵌入式或者X86的工业控制板上,少不了CAN口!
  5. 以MSP432主机微控制器的软件与硬件集成解决方案
关注电子发烧友微信
有趣有料的资讯及技术干货
下载发烧友APP
打造属于您的人脉电子圈
关注发烧友课堂
锁定最新课程活动及技术直播
收藏 人收藏
分享:

评论

相关推荐

嵌入式开发工具有哪些_五款嵌入式开发工具推荐

嵌入式开发就是指在嵌入式操作系统下进行开发,一般常用的系统有WinCE,ucos,vxworks,l...
发表于 2018-04-04 16:00 82次阅读
嵌入式开发工具有哪些_五款嵌入式开发工具推荐

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系统软件系统设计

学嵌入式开发难吗_学好嵌入式开发需要多久

你可能听说过嵌入式,但对于嵌入式技术到底是什么并不是很了解,其实嵌入式已经渗透到各个行业,小到手机、...
发表于 2018-04-04 10:39 41次阅读
学嵌入式开发难吗_学好嵌入式开发需要多久

学嵌入式开发入门_学嵌入式开发需要看哪些书籍

现在嵌入式开发越来越吃香,很多人都想要学习却不知道要从何下手。本文分析了学习嵌入式软件开发需要具备哪...
发表于 2018-04-04 10:25 49次阅读
学嵌入式开发入门_学嵌入式开发需要看哪些书籍

想学嵌入式开发必须要学哪些知识点

嵌入式开发就是指在嵌入式操作系统下进行开发,一般常用的系统有WinCE,ucos,vxworks,l...
发表于 2018-04-04 10:07 103次阅读
想学嵌入式开发必须要学哪些知识点

一文看懂嵌入式开发与c++开发有什么不同

嵌入式开发就是指在嵌入式操作系统下进行开发,一般常用的系统有WinCE,ucos,vxworks,l...
发表于 2018-04-04 09:12 53次阅读
一文看懂嵌入式开发与c++开发有什么不同

stm32 LCD12864 串口无显示

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

单片机入门 (5) 中断

发表于 2018-04-03 17:28 359次阅读
单片机入门 (5) 中断

请问像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盘文件系统的工程

嵌入式开发与单片机开发区别何在

嵌入式开发就是设计特定功能的计算机系统,手机,mp3、mp4,mp5,自动供水系统,洗衣机,油井监控...
发表于 2018-03-29 13:49 210次阅读
嵌入式开发与单片机开发区别何在

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学习—如何选择各个电路部分的主要芯片

最小系统:考虑到小车的主控板可以作为今后做四轴或其他更高级的机器人的基础电路,所以主控选择了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的存储器映射详解

MM32如何使用比较器产生中断

在实际应用过程中有时候我们需要去判断两个变化的电压大小,在不同变化时需要做出不同的反应,这时候我们就...
发表于 2018-03-21 17:01 361次阅读
MM32如何使用比较器产生中断

Vivado HLS嵌入式实时图像处理系统的构建...

拉普拉斯算子是图像处理技术中常见的一种增强算子,因为具有旋转不变性、实现简单等特点,被广泛地应用于图...
发表于 2018-03-21 14:04 74次阅读
Vivado HLS嵌入式实时图像处理系统的构建...

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测量频率和占空比的几种方法

手把手教你写单片机定时器中断程序

我们在学单片机时我们第一个例程就是灯的闪烁,那是用延时程序做的,现在回想起来,这样做不很恰当,为什么...
发表于 2018-03-12 16:02 570次阅读
手把手教你写单片机定时器中断程序

简便易行的Renesas Synergy™ 开发...

作为一个桌面工具,TraceX可以无缝集成 Synergy™ 软件,提供运行时性能信息,并可基于对象...
发表于 2018-03-12 14:54 521次阅读
简便易行的Renesas Synergy™ 开发...

stm32使用中出现的警告

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

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

最近买了个数字罗盘模块,调通后发现很不错,非常灵敏,测试的时候精度在1°以内。连续测量模式下,最快测...
发表于 2018-03-08 08:40 252次阅读
基于STM32的三轴数字罗盘HMC5883L模块...

学好嵌入式,轻松拿高薪

每个家庭,每个组织,构建万物互联的智能世界
发表于 2018-03-05 14:10 152次阅读
学好嵌入式,轻松拿高薪

意法半导体的新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...

解析单片机中断处理过程、中断返回、中断撤除

中断响应是CPU对中断源中断请求的响应,包括保护断点和将程序转向中断服务程序的入口地址(通常称矢量地...
发表于 2018-02-23 09:30 1724次阅读
解析单片机中断处理过程、中断返回、中断撤除

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输入编程实例之读取按键状态

详细介绍定时器和定时器中断

在测量控制系统中,常常需要实时时钟,以实现定时控制、定时测量或定时中断等。也常需要计数器以实现对外部...
发表于 2018-02-09 14:00 1218次阅读
详细介绍定时器和定时器中断

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

新系列采用LQFP64、LQFP100和LFBGA100三种封装,不同的封装保持引脚排列一致性,结合...
发表于 2018-02-09 11:48 169次阅读
stm32寄存器版矩阵键盘库函数(附详细注释)

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

STM32F0 系列产品基于超低功耗的 ARM Cortex-M0 处理器内核,整合增强的技术和功能...
发表于 2018-02-09 11:30 1131次阅读
stm32矩阵键盘原理图及程序介绍

对ARM异常中断的集中情况进行总结,并给出了一些...

ARM单片机是大多数新手选择的入门切入点,但由于知识的不足,在设计过程中新手们经常会遇到这样或那样的...
发表于 2018-02-08 09:29 1129次阅读
对ARM异常中断的集中情况进行总结,并给出了一些...

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

本实验通过STM32的三个GPIO口驱动三色LED的三个通道,将GPIO设置为推挽输出模式,采用灌电...
发表于 2018-02-07 11:14 1984次阅读
STM32的GPIO输出编程实例之点亮三色LED

裸机程序如何驱动硬件?看前辈是怎么说的

笔者从事安卓底层开发,工作一年,个人看法 ,处女答。个人感脚51就是就是搞嵌入式第一门技术。把c语言...
发表于 2018-02-06 16:17 1051次阅读
裸机程序如何驱动硬件?看前辈是怎么说的

ARM S3C4510B系统的异常中断机制解析

本文介绍A了RM S3C4510B系统 的 异常中断 机制,包括异常中断的分类,响应与返回;中断处理...
发表于 2018-02-03 05:32 221次阅读
ARM S3C4510B系统的异常中断机制解析

基于μC/OSII和ARM7 中断机制的IRQ中...

在嵌入式处理器芯片中,以 ARM7 为核心的处理器是应用较多的一种。它具有多种工作模式,并且支持两种...
发表于 2018-02-03 05:11 187次阅读
基于μC/OSII和ARM7 中断机制的IRQ中...

串口通信协议stm32

串口通信指串口按位(bit)发送和接收字节。尽管比按字节(byte)的并行通信慢,但是串口可以在使用...
发表于 2018-02-01 16:22 288次阅读
串口通信协议stm32

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

语音识别是机器通过识别和理解过程把人类的语音信号转变为相应文本或命令的技术,其根本目的是研究出一种具...
发表于 2018-01-31 19:23 446次阅读
基于STM32实现孤立词语音识别系统

针对初级工程师经常犯的一个小错误,做了针对性的纠...

1、将硬件系统区分为独立单元单独做成底层驱动函数和应用函数,并且函数正常应该有参数和返回值,其中返回...
发表于 2018-01-30 17:53 823次阅读
针对初级工程师经常犯的一个小错误,做了针对性的纠...

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

设计选用STM32单片机作控制器,设计温度单反馈的控制系统,对电加热水器内水的温度进行控制。通过PT...
发表于 2018-01-29 14:22 896次阅读
一款基于stm32的毕业设计方案

嵌入式开发就业前景分析_嵌入式领域的职业发展方向

嵌入式开发技术在物联网领域应用最为广泛,适合于各个领域,主要应用于消费类电子行业。嵌入式开发的入门门...
发表于 2018-01-29 14:09 1223次阅读
嵌入式开发就业前景分析_嵌入式领域的职业发展方向

嵌入式开发职业发展四大方向

嵌入式开发的发展方向有很多,门槛高低不一样。本文详细分析嵌入式开发职业发展四大方向。随着移动互联网、...
发表于 2018-01-29 13:39 3813次阅读
嵌入式开发职业发展四大方向

基于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的高性能低功耗的中文人机界面系统

对于ROM与RAM的深度解析

要回答这个问题,首先必须明确一条:ROM是只读存储器,CPU只能从里面读数据,而不能往里面写数据,掉...
发表于 2018-01-25 10:17 1086次阅读
对于ROM与RAM的深度解析

每一个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...

基于TIMER3发生捕获中断丢失问题分析与总结

在一洗衣机MC项目中,客户选择使用STM32F030作为主控芯片。使用TIMER3(CH3)来捕获电...
发表于 2018-01-15 15:11 498次阅读
基于TIMER3发生捕获中断丢失问题分析与总结

详细解析STM32中的堆栈机制

这下明白了吧,STM32在启动的时候,RAM首先分配给使用到的全局变量,还有调用库占用的一些数据(不...
发表于 2018-01-15 15:03 1047次阅读
详细解析STM32中的堆栈机制

详细剖析Cortex-M3处理器

线程模式(Thread mode):处理器复位或异常退出时为此模式。此模式下的代码可以是特权代码也可...
发表于 2018-01-15 11:07 1122次阅读
详细剖析Cortex-M3处理器

分享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寄存器学习解析

单片机中断系统介绍_51单片机中断系统结构

单片机中断就是当单片机正在执行程序的时候,突然某个按键按下了(产生外部中断),单片机就必须得去处理那...
发表于 2018-01-10 17:29 369次阅读
单片机中断系统介绍_51单片机中断系统结构

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数据传输技术的研...
鸿运国际手机版