各位大家好,stm32延时函数中断处理程序当中一般首先要关中断,但不知用哪一个函数去(关闭打开)该中断。

STM32如何关所有中断????_EEWorld电子工程世界搜索中心
搜索范围:
一周以内&&&&
搜索到约<span style="color:#项结果
STM32如何关所有中断???? jhhh999 52140 STM32如何关所有中断????
在ARM的一篇手册里有下面一段话是关于PRIMASK寄存器的,在ST提供的文件CortexM3_Macro.s文件中有对这个寄存器操作的宏定义。 toff 53303 关所有中断
STM32没有关闭所有中断的概念,但可以通过提高CPU响应中断的优先级别达到相同的目的...
.cn/thread--1.html 发布时间:
我一直没发现STM32有关所有中断的功能,想问一下大家是不是它不能实现。或者有什么办法来实现这个功能。一个个的关很麻烦! hwh 50744 STM32处理器如何实现关所有中断功能
有的吧,看看中断屏蔽寄存器..
好像有条指令是 CPSID I 什么的。。 寂寞就带我 54452
看了一遍手册还是没找到你说的这个指令 lsbhjl 53587
.cn/thread--1.html 发布时间:
我一直没发现STM32有关所有中断的功能,想问一下大家是不是它不能实现。或者有什么办法来实现这个功能。一个个的关很麻烦! aphonline 53029 STM32处理器如何实现关所有中断功能
有的吧,看看中断屏蔽寄存器..
好像有条指令是 CPSID I 什么的。。 tianweiming 54987
看了一遍手册还是没找到你说的这个指令...
.cn/thread--1.html 发布时间:
MCU关中断后,假如有中断发生,那么这中断是被丢弃还是被锁存?假如是锁存的话,那么如果来了两个相同类型的中断(比如都是上升沿的外部中断),,那么前一个中断是不是会被覆盖掉?恳请大神们指导一二,小弟感激不尽啊:congratulate: 月痕 462976 关于关中断的一些疑惑 我的理解:中断标志会被锁存,中断会被覆盖掉。 lcofjp 367757
这与MCU的内电路设计有关,也就是说...
.cn/thread--1.html 发布时间:
]] t_shaojun126 397627 定时器和中断怎么关不掉啊 CCIE = 0是中断disable
用TACTL = MC_0; 鸵鸟蝈蝈 381390
TA1CCTL0 &= ~CCIE; peter_zheng 381213 回复 楼主 t_shaojun126 的帖子 ...
.cn/thread--1.html 发布时间:
__bis_SR_register(GIE);
这个是开全局中断,求教怎么关的? 水货老手 339873 求教430中怎么关全局中断 找到了,_DINT(); 水货老手 339873
好像430进一个中断后如果不全局使能中断就不会进另一个中断的吧?不是很确定求高手回答 水货老手 339873
没错 sunow 353898 回复 板凳 水货老手 的帖子 这个可以确定:loveliness...
.cn/thread--1.html 发布时间:
STM32中的NVIC中断向量表 0xEXTI0的中断地址 保存了中断函数的入口地址
这个地址里面保存的是不是中断函数在STM32&& xxxflash中的首地址呢?
程序运行是xxxflash的内容要调入内存中 这两个地址的映射关系是怎样的 duzhiming 410782 STM32中断 ...
.cn/thread--1.html 发布时间:
在嵌入式开发中,经常看到如下的代码(现在使用的是threadx):
TX_INTERRUPT_SAVE_AREA
TX_DISABLE
尤其是在对硬件寄存器操作时基本上都要关中断。
我的理解是,关中断用来防止系统调度,保证对寄存器操作的原子性。但是如果仅仅是为了保证原子性,用信号量应该也可以,为什么非要用这么强烈的手段呢?
另外,关中断的作用都有...
.cn/thread--1.html 发布时间:
版主,咨询个问题。STM32如何关闭中断嵌套,操作哪一寄存器,谢谢!
因为目前TIM中使用PWM捕获的时候,很有可能受外界干扰,导致当进入捕获中断的时候,还未完成所有寄存器的读,未出中断时,来了一个干扰脉冲,让TIM再次进入中断。 kwyxp 54340 版主---STM32的中断嵌套问题
我也不知道,没有听说有这样的功能。 scliujun 50664
.cn/thread--1.html 发布时间:
daicheng 于
13:43 编辑 [/i]] daicheng 78216 STM32入门的所有资料! 都是很好的资料,收藏了 hamiltoncai 95065 Re: [下载] STM32入门的所有资料! 很不错 谢谢啦 guhong Re: [下载] STM32入门的所有资料! 非常感谢楼主啦,近来也是在搞这个,多多学习...
.cn/thread-.html 发布时间:
接收使能后,高速数据传输的情况下(tftp 传输10M 文件)40%情况会出现整个网卡模块错误不断的重启。
采用第二种方式的话,由于关中断的时候cpu 能记住中断 pending,所以完全正确。 jorya_txj 428397 关于关cpu总中断还是关硬件使能模块的答案! ...
.cn/thread--1.html 发布时间:
跪求大神给我讲讲STM32中断优先级分组是怎么回事………… renliang25 447481 STM32中断优先级分组 ...
.cn/thread--1.html 发布时间:
一个简单的按键中断,EXTI0 ,优先级 使能 怎么设置 请用 寄存器 秒速,谢谢! zk53 关于STM32中断
你找个库函数实现的方法,自己把它翻译成寄存器的方式不就行了。 爱情呼叫转移 48115
32位用寄存器来操作很繁琐的,你要习惯库函数不然若代码大了用寄存器操作很烦人 ywang 55670
应该有例程的 毅通客服...
.cn/thread--1.html 发布时间:
函数UARTIntEnable(UART0_BASE, UART_INT_RX|UART_INT_RT|UART_INT_TX)设置UART的RX和TX中断。
我想在发送时开TX中断,发送完关TX中断,是不是这样调用:UARTIntEnable(UART0_BASE, UART_INT_RX|UART_INT_RT);//关TX中断
由于不清楚API的内部工作情况,不知道运行...
.cn/thread--1.html 发布时间:
我是初学嵌入式
看有一本书上说“保护共享数据的方法有1)关中断2)使用信号量3)禁止任务切换”
(1)其中关中断是不是就是禁止中断啊?
我问了很多人有的说“关中断 ,是中端结束后,将中端关闭:禁止中断,是不可 以中端”还有的说“是一样的,关中断就是禁止中断”这我就弄不明白了,感觉两种说法都对似的?
(2)老师提了一句说“关中断在不同的系统里不一样,关中断任务切换的时机与算法有关”这是...
.cn/thread--1.html 发布时间:
嵌入式系统的中的加琐是不是就是一条关中断的指令,还是有什么区别?请教了哈! sunnyzeng1 52572
潜入式系统,锁是不是就是关中断? 嵌入式中有加锁这个概念吗? wangshaolei
intlock就是关中断。当然具体实现和芯片有关。 beijibear 52116
irqLockNum = intLock...
.cn/thread--1.html 发布时间:
stm32串口485的中断,我打开的是接收中断,然后一直用这个485口发送数据,但是发到一定时候突然进入接收中断是怎么回事?相当不解呀 yyup 424235 stm32的485中断 ...
.cn/thread--1.html 发布时间:
谢了! chenyu STM32中断
首先,不同的产品肯定有不同的处理方式,但都可以完成相同的任务。区别是有可能效率不同。其次,STM32使用的Cortex-M3核心使用了内置的中断控制器,与以前的ARM7或ARM9的那种外置中断控制器的设计相比,中断处理更快更有效。第三,STM32的通用定时器中有中断标志寄存器,每个中断源都有对应的标志状态位,可以十分方便地判断中断...
.cn/thread--1.html 发布时间:
中断寄存器和中断控制器如何相互工作?定时器中断和P1,2的中断有什么不同? guosiyuan 358746 大虾们来分享下有关中断的看法 先帮你顶到前面
:) deweyled 332900
:lol 嗯嗯 guosiyuan 358746 回复 沙发 deweyled 的帖子 [url].cn/my/space.php?uid=241610...
.cn/thread--1.html 发布时间:
这学期学校开了嵌入式的基础课 讲到关中断的知识点 想了解深入一些 大家能不能推荐点儿有用的资料呢?或者加我QQ再交流
先谢谢大家啦 ssssssss 53107 嵌入式初学 请教大家关中断的问题 要是真的要很详细的讲,估计要开个专题了。不过,对于中断的理解,你可以自己在实验板上试试,开个中断,写个中断函数,看它是如何工作的。。 Joseph.Z 55899
.cn/thread--1.html 发布时间:
相关结果约46,284个查看: 2668|回复: 18
STM32移植GUI遇到的问题
大家好,我在stm32上移植GUI,按照网上的教程写的程序,也可以编译通过,可就是用JLINK调试的时候有问题,进入调试之后程序要不就进入void HardFault_Handler(void),要么就是进入void MemManage_Handler(void),开发板是没问题的,我用源码测试了的,望大虾们指点一下这是怎么一回事?两天了,一直这种情况....
我也经常遇到这样的问题,应该跟GUI消息循环机制有关系。可能用了多个有冲突的GUI_EXCE(),问题解决了,但我没搞清楚,
回复【1楼】wers_l&&
-----------------------------------------------------------------------
大哥,能发来你的源码我研究一下吗? 谢谢!!
公益广告:本论坛不得使用、宣传Q群。 有讨论请在论坛里进行。 违者将封锁ID.
你就是cstack溢出。heap不够。
GUI_ALLOC改大,stack改道0x400就够了。
公益广告:发表招聘帖子需要缴费,有需要可以联系网站工作人员王小姐:.
回复【3楼】ayours&&.faith
-----------------------------------------------------------------------
大哥,小弟新手,能讲详细点吗?
GUI_ALLOC_SIZE我知道怎么改,stack怎么改?ucos里面的吗?我只是裸奔的GUI
公益广告:广告只能发在本论坛的广告区,否则将封锁ID。
你的IAR的icf文件里面改
回复【5楼】ayours&&.faith
-----------------------------------------------------------------------
不好意思 忘记说了 我用的是MDK350 该改哪里? 大哥,详细说下行吗? 不胜感激!!
stm32f10x_startup.s
Stack_Size& && &EQU& &&&0x0001000
& && && && && & AREA& & STACK, NOINIT, READWRITE, ALIGN=3
Stack_Mem& && & SPACE& &Stack_Size
__initial_sp
;// &h& Heap Configuration
;//& &&o&&&Heap Size (in Bytes) &0x0-0xFFFFFFFF:8&
Heap_Size& && & EQU& &&&0x
回复【7楼】ayours&&.faith
-----------------------------------------------------------------------
谢谢您了 我试试
回复【7楼】ayours&&.faith
-----------------------------------------------------------------------
大哥,我按照您说的改了 可还是不行
点debug之后进去就是这个画面
(原文件名:GUI.jpg)
点红线那的任何一个就直接进入MemManage_Handler()这个函数里
stm32移植GUI程序 裸奔的 工具:MDK350 (原文件名:TFT液晶屏.zip)
把我的文件上传了,哪位好心人有空的话就帮我看看到底是怎么一回事吧,三天了...我一直在找到底是什么原因,实在无能为力了
文件下载失败。下载不了。
你把GUIConf.h
还有startup.s关于stack和heap那块贴出来看看。
我查看了一下汇编程序 发现程序走到这的时候
0x6& && &LDR& && &r0,[pc,#216]&&; @0x08000AE0
0x0& && &LDR& && &r0,[r0,#0x00]
0x08000A0A F0400001&&ORR& && &r0,r0,#0x01
0x34& && &LDR& && &r1,[pc,#208]&&; @0x08000AE0
0x8& && &STR& && &r0,[r1,#0x00]
就直接跳到 MemManage_Handler里面去了,我不懂汇编,不知道什么意思,各位前辈能否指点一下啊?!!!
回复【11楼】ayours&&.faith
-----------------------------------------------------------------------
您好,这是截图
(原文件名:GUIConfig.jpg)
(原文件名:stack.jpg)
方便告诉我一下QQ号或者您的邮箱吗? 我想让您帮我看看源码 我的QQ: 谢谢!
感谢ayours .faith的帮助,使问题得到解决!
回复【14楼】w
感谢ayours .faith的帮助,使问题得到解决!
-----------------------------------------------------------------------
怎么解决的?我没有照ayours .faith的方法改,是我在回调函数里用了对话框,我把对话框放在其他地方就可以了。具体原因我也不清楚。
回复【15楼】wers_l&&
-----------------------------------------------------------------------
我发的截图里有这么两句:
#define GUI_ALLOC_SIZE 5000
5000 = 0x1388 & heap SIZE
ayours .faith前辈告诉我的是stack SIZE改为0x400,heap size改为0x2000,我的就可以调试了
他说其实可以看进入错误中断函数来看哪里有问题,可惜我不懂怎么看....
ayours 发表于
你就是cstack溢出。heap不够。
GUI_ALLOC改大,stack改道0x400就够了。
你好,我在IAR中也遇到这个问题,总是跳到void HardFault_Handler(void)这个中断中,我按照你的方在icf中改了相应的stack和heap的值,但是也不行,能帮忙解答下吗,纠结好久了,谢谢。
阿莫电子论坛, 原"中国电子开发网"当前访客身份:游客 [
苦心励胆,热血依旧。
:非常好 谢谢
:引用来自“周星_开心白日梦”的评论斯坦福,mit...
:斯坦福,mit,遥不可及的梦
今日访问:12
昨日访问:8
本周访问:34
本月访问:204
所有访问:1906
STM32系统滴答_及不可不知的延时技巧 - (上)
发表于1年前( 17:51)&&
阅读(920)&|&评论()
0人收藏此文章,
尤应强调注意的是SysTick 中断优先级。
我想每个单片机爱好者及工程开发设计人员都有过点灯的经历。流水灯是个好东西,尤其是在调试资源有限的环境中,有时会帮上大忙。
然在最初入门时,如何让这些小灯们按照我们的想法欢快地跑起来呢,绝大多数小朋友的做法是:在一个while循环里加上延时程序,让小灯在每个状态下停留一段时间,再进入下一个状态,这样小灯们就会在不同的状态中切换,就可以根据我们设计的程序闪烁了。
这样这里就会涉及到一个延时程序的编写的问题,而一般的做法是一个for循环里去减一个很大的数,直到为0,则延时完成,那个数的值则是根据时钟频率和指令运行周期,估算出来的,还记得较久以前看过一篇帖子介绍51单片机精确延时的几种方法,有一种方法是在keil中设定好时钟频率,然后通过软件仿真试来算延时时间,以达到较精确定时。
但这些方法一般都不够方便,延时也不够精确,更高阶一点的方法便是开一个定时器,在定时中断里面计数达到精确延时的目的。
在STM32的应用中,可考虑利用SysTick系统嘀嗒定时器来实现。但在STM32开发手册中对它的介绍却很少,几乎到没有的程度。因为它是Cortex内核的部分,CM3为它专门开出一个异常类型,并且在中断向量表中占有一席之地(异常号15),这样它可以很方便的移植到不同厂商出CM3内核的芯片上,并且对于有实时操作系统的软件,它一般会作为整个系统的时基,这个对操作系统非常重要。有关SysTick的详细介绍可参考《Cortex-M3 权威指南》第133 页第八章及第179页第十三章。
SysTick总共有四个寄存器:
对应于软件中 SysTick-&CTRL;
对应于软件中&SysTick-& LOAD;
对应于软件中&SysTick-& VAL;
对应于软件中 SysTick-& CALIB& (如上图),没有用过,也不常用,暂不作介绍。
这几个寄存器的偏移量如下图所示:
?寄存器结构体的定义在 \CMSIS\CM3\CoreSupport& core_cm3.h中,如下?
/**&@addtogroup&CMSIS_CM3_SysTick&CMSIS&CM3&SysTick
&&memory&mapped&structure&for&SysTick
typedef&struct
&&__IO&uint32_t&CTRL;&&&&&&&&&&&/*!&&Offset:&0x00&&SysTick&Control&and&Status&Register&*/
&&__IO&uint32_t&LOAD;&&&&&&&&&&&/*!&&Offset:&0x04&&SysTick&Reload&Value&Register&&&&&&&*/
&&__IO&uint32_t&VAL;&&&&&&&&&&&&/*!&&Offset:&0x08&&SysTick&Current&Value&Register&&&&&&*/
&&__I&&uint32_t&CALIB;&&&&&&&&&&/*!&&Offset:&0x0C&&SysTick&Calibration&Register&&&&&&&&*/
}&SysTick_T
?SysTick? 是一个24 位的定时器,即一次最多可以计数 224个时钟脉冲,这个脉冲计数值被保存到SysTick-&VAL 当前计数值寄存器中,它只能向下计数,每接收到一个时钟脉冲SysTick-&VAL 的值就向下减 1,直至0,然后由硬件自动把重载寄存器SysTick-&LOAD 中的值到SysTick-&VAL重新计数,并且当SysTick-&VAL值计数到0时,触发异常,调用void SysTick_Handler(void)函数,可以在此中断服务函数中处理定时中断事件了,一般是对设定值进行递减计数操作。只要不把它在SysTick控制及状态寄存器SysTick-&CTRL中的第0位使能位清除,就永不停息。
SysTick 中断优先级问题这里需要强调下。
&它属于系统异常,是内核级中断,并且优先级是可以设置的,具体设置也是在& core_cm3.h中
&*&@brief&&Initialize&and&start&the&SysTick&counter&and&its&interrupt.
&*&@param&&&ticks&&&number&of&ticks&between&two&interrupts
&*&@return&&1&=&failed,&0&=&successful
&*&Initialise&the&system&tick&timer&and&its&interrupt&and&start&the
&*&system&tick&timer&/&counter&in&free&running&mode&to&generate&
&*&periodical&interrupts.
static&__INLINE&uint32_t&SysTick_Config(uint32_t&ticks)
&&&&if&(ticks&&&SysTick_LOAD_RELOAD_Msk)&&return&(1);&&&&&&&&&/*&Reload&value&impossible&*/
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
&&&&SysTick-&LOAD&&=&(ticks&&&SysTick_LOAD_RELOAD_Msk)&-&1;&&&/*&set&reload&register&*/
&&&&NVIC_SetPriority&(SysTick_IRQn,&(1&&__NVIC_PRIO_BITS)&-&1);&&
&&&&SysTick-&VAL&&&=&0;&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
&&&&SysTick-&CTRL&&=&SysTick_CTRL_CLKSOURCE_Msk&|&
&&&&&&&&&&&&&&&&&&&SysTick_CTRL_TICKINT_Msk&&&|&
&&&&&&&&&&&&&&&&&&&SysTick_CTRL_ENABLE_M&&&&&&&&&&&&&&&&&&&&
&&&&return&(0);&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&/*&Function&successful&*/
其中如下这句就是设置优先级的函数,此函数对内核中断优先级和外部中断优先级设置通吃,比较强大,但需要手动算出来抢占和从优先级,不太方便,当跳进此函数,我们可以算出Systick默认优先是最低的(效果相当于SCB-&SHP[11] = 0xF0;)
NVIC_SetPriority&(SysTick_IRQn,&(1&&__NVIC_PRIO_BITS)&-&1);
此时若其它外部中断优先级设置比它高时,可以剥夺它进而转向外部中断。
可以做如下实验验证:
先设置一事件中断,把优先级设置高一些,
void&Exti_Config(void)
&&&&EXTI_InitTypeDef&EXTI_InitS
&&&&NVIC_InitTypeDef&NVIC_InitS
&&&&EXTI_InitStructure.EXTI_Line&=&EXTI_Line1;
&&&&EXTI_InitStructure.EXTI_Mode&=&EXTI_Mode_E
&&&&EXTI_InitStructure.EXTI_LineCmd&=&ENABLE;
&&&&EXTI_Init(&EXTI_InitStructure);
&&&&NVIC_InitStructure.NVIC_IRQChannel&=&EXTI1_IRQn;
&&&&NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority&=&1;&&&&
&&&&NVIC_InitStructure.NVIC_IRQChannelSubPriority&=&1;&&&&&&&&&&&&&&&&
&&&&NVIC_InitStructure.NVIC_IRQChannelCmd&=&ENABLE;
&&&&NVIC_Init(&NVIC_InitStructure);
注:中断分组我在实验中,最初初始化设置为如下:
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
设为第二组。
void&SysTick_Handler(void)
&&&&EXTI_GenerateSWInterrupt(EXTI_SWIER_SWIER1);&
&&&&LED_1&=&ON;
&&&&Delay();
系统滴答中断里触发外部中断事件,并点亮LED1 。
外部中断处理函数如下
void&EXTI1_IRQHandler(void)
&&&&if&(EXTI_GetITStatus(EXTI_Line1)&!=&RESET)&
&&&&&&&&EXTI_ClearITPendingBit(EXTI_Line1);&&&&&
&&&&&&&&LED_0&=&ON;
&&&&&&&&Delay();
此延时函数为阻塞延时如下:
void&Delay(void)
&&&&u32&i;
&&&&for(i=0&&;&i&&&0xFFFFF;&i++){}
加入延时是为了看出来哪个灯先亮。
当外部中断优先级比较高时,它可以抢占Systick中断先执行,以上代码实验结果为,LED0先点亮后,再回到LED1再点亮。
当把外部中断设置为与systick相同的优先级时,则systick优先级就会相对较高,例如把上面的优先级改为
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority&=&3;&&&&
NVIC_InitStructure.NVIC_IRQChannelSubPriority&=&3;
则会LED1先亮,执行完SysTick_Handle函数后才轮到EXTI1_IRQHandler执行。
个人认为,若要实现systick精确延时,最好把systick优先级设置高一些,例如
NVIC_SetPriority&(SysTick_IRQn,&0);
即把SCB-&SHP[11] = 0x00;则可达到systick优先级高于任合外部中断的效果,此时延时会比较精准。
另外对于SysTick的时钟源的选择,要注意它的时钟源可选择内部时钟(FCLK,CM3上的自由运行时钟,STM32中对应是AHB),或者是外部时钟(& CM3处理器上的STCLK信号,STM32中对应是AHB/8)
可参考如下图
它是在SysTick-&CTRL第二位CLKSOURCE时钟源选择中设置。
有关systick延时函数的编写可参考野火《零死角玩转stm32-初级篇》。
至此我们可以简单的实现一流水灯程序
&&&&LED_0&=OFF;
&&&&LED_1&=&ON;
&&&&Delay_ms(500);
&&&&LED_0&=OFF;
&&&&LED_1&=&ON;
&&&&Delay_ms(500);
然而这样做真的好吗 ?这里用的是 阻塞延时哦,CPU的效率很大一部分就耗在了空转上了,太浪费资源。
?假设系统时钟频率为72MHZ或者几十上百MHZ时,当完成一个循环只需要几十或十几纳秒级或者更短,而在这个循环之中阻塞延时个几十至几百毫秒的话,就像是在高速公路上突然横出一条坑坑洼洼的泥泞路,那可想整条路都会因此而慢下来,甚至会出现灾难性的后果,个人认为,一般在系统初始化过程中,各芯片的时序对时间有要求,可以用下阻塞延时,只需要系统启动时运行一下,当系统跑起来之后,最好就别再傻呼呼的这么做了。?
这时主要采用的是在定时器里计数,在外部循环中对变量查询,达到某个值时再执行某个动作,达到延时的效果,而在时间未到时,系统还可以不停的跑圈圈,做别的事情去。
?&gticks在定时中断里每毫秒计数一次
&&&&if(500&==&gticks)
&&&&&&&&LED_0&=OFF;
&&&&&&&&LED_1&=&ON;
&&&&if(1000&==&gticks)
&&&&&&&&LED_0&=OFF;
&&&&&&&&LED_1&=&ON;
&&&&&&&&gticks&=&0
&&&&Do_others();&
??以上需要在事件处理过程中对gticks进行处理,增加了代码的耦合度,更容易出错,如果在一个事件处理中对gticks清除了,而下个事件中又需要查询它,这样就可能导致处理时序的错乱,相互干扰。??
能否在事件处理中只提供查询功能,而定时的事情就交给定时自己去做?
下节高手将登场了,为大家介绍个我曾在一项目中学到的,非阻塞延时的精妙设计。
1)">1)">1" ng-class="{current:{{currentPage==page}}}" ng-repeat="page in pages"><li class='page' ng-if="(endIndex<li class='page next' ng-if="(currentPage
相关文章阅读

我要回帖

更多关于 stm32中断管理函数 的文章

 

随机推荐