- 1、本文档共7页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
STM32中断流程处理
STM32中断流程处理中断,首先要知道stm32f10x_it.c这个文件,一般情况下是和main文件在同一个目录下的。打开这个文件,我们可以看到xyz_IRQHandler函数的实现,虽然说是实现,但是几乎都是空的。对了,这些函数就是要用户填写的中断处理函数,如果你用到了哪个中断来做相应的处理,你就要填写相应的中断处理函数,需要根据各外设的实际情况来填写,但是一般都会有关闭和开启中断。在这个文件中还有很多系统相关的中断处理函数,例如系统时钟SysTickHandler。具体的实现可以参考stm32\fwlib\FWLib\examples下的各例子。到这里,我们也只不过看了中断的处理函数,而这些处理函数是如何被硬件中断调用的呢?嗯,说到这里就不得不提一下stm32f10x_vector.c这个文件了。内容如下:typedef void( *intfunc )( void );typedef union { intfunc __fun; void * __ptr; } intvec_elem;/**************************************************************__sfe是IAR的“段操作符”segment operator。表示取某个段的后一个字节的地址。比如CSTACK定义为00x20001fff。那__sfe( CSTACK ) 就得到0个值,刚好用来初始化msp堆栈指针。注意使用segment operator前,需要先定义段名如下: #pragma segment=CSTACKRSTACK 程序返回用的,保存的是程序调用函数的返回地址 , 你填写的数值 X 2才是占用的字节数CSTACK 函数局部变量用的区域,所有的功能函数使用的局部变量都是从这个堆栈申请使用的,用完了再还回去。子函数里面用到的局部变量都是在这里面取来用的. *****************************************************************///IAR对所用语言(这里是C)做的一些扩展,也就是说这里可以用扩展的功能#pragma language=extended#pragma segment=CSTACKvoid __iar_program_start( void );/*****************************************************************把中断向量表放到中断向量表该放的地方。如果没有次句,中断向量被当作普通常变量处理,被放置的位置由编译器连接后确定。在.icf文件中有place at address mem:__ICFEDIT_intvec_start__ { readonly section .intvec };******************************************************************/#pragma location = .intvec/* STM32F10x Vector Table entries */const intvec_elem __vector_table[] ={{ .__ptr = __sfe( CSTACK ) },__iar_program_start,NMIException,HardFaultException,MemManageException,BusFaultException,UsageFaultException,0, 0, 0, 0,??????????? /* Reserved */vPortSVCHandler,DebugMonitor,0,????????????????????? /* Reserved */xPortPendSVHandler,xPortSysTickHandler,WWDG_IRQHandler,PVD_IRQHandler,TAMPER_IRQHandler,RTC_IRQHandler,FLASH_IRQHandler,RCC_IRQHandler,EXTI0_IRQHandler,EXTI1_IRQHandler,EXTI2_IRQHandler,EXTI3_IRQHandler,EXTI4_IRQHandler,DMAChannel1_IRQHandler,DMAChannel2_IRQHandler,DMAChannel3_IRQHandler,DMAChannel4_IRQHandler,DMAChannel5_IRQHandler,DMAChannel6_IRQHandler,DMAChannel7_IRQ
文档评论(0)