历史上的今天
今天是:2024年12月26日(星期四)
2018年12月26日 | STM32之系统中断处理
2018-12-26 来源:eefocus




点击(此处)折叠或打开
/*******************************************************************************
* Function Name : SysTickHandler
* Description : This function handles SysTick Handler.
* Input : None
* Output : None
* Return : None
*******************************************************************************/
void SysTickHandler(void)
{
__SVC();
/* Toggle PC.04 pin */ LED4
GPIO_WriteBit(GPIOC, GPIO_Pin_4, (BitAction)(1 - GPIO_ReadOutputDataBit(GPIOC, GPIO_Pin_4)));
}
/*******************************************************************************
* Function Name : SVCHandler
* Description : This function handles SVCall exception.
* Input : None
* Output : None
* Return : None
*******************************************************************************/
void SVCHandler(void)
{
/* Set the PSV system handler pending bit */
NVIC_SetSystemHandlerPendingBit(SystemHandler_PSV);
/* Toggle PC.05 pin */ LED3
GPIO_WriteBit(GPIOC, GPIO_Pin_5, (BitAction)(1 - GPIO_ReadOutputDataBit(GPIOC, GPIO_Pin_5)));
}
/*******************************************************************************
* Function Name : PendSVC
* Description : This function handles PendSVC exception.
* Input : None
* Output : None
* Return : None
*******************************************************************************/
void PendSVC(void)
{
/* Set the NMI system handler pending bit */
NVIC_SetSystemHandlerPendingBit(SystemHandler_NMI);
/* Toggle PC.06 pin */ LED2
GPIO_WriteBit(GPIOC, GPIO_Pin_6, (BitAction)(1 - GPIO_ReadOutputDataBit(GPIOC, GPIO_Pin_6)));
}
/*******************************************************************************
* Function Name : NMIException
* Description : This function handles NMI exception.
* Input : None
* Output : None
* Return : None
*******************************************************************************/
void NMIException(void)
{
/* Toggle PC.07 pin */ LED1
GPIO_WriteBit(GPIOC, GPIO_Pin_7, (BitAction)(1 - GPIO_ReadOutputDataBit(GPIOC, GPIO_Pin_7)));
}
本例展示了如何运用NVIC和系统Handler(system handler):
各个system handlers拥有如下的强制优先级(preemption priority):

- NMI preemption priority -2 固定优先级
- PSV preemption priority 0 可设置
- SVCall preemption priority 1 可设置
- SysTick preemption priority 2 可设置
首先把Systick定时器设定为每当其计数器为零,这里是1s产生一个Systick中断。
点击(此处)折叠或打开
/* SysTick interrupt each 1 Hz with Counter clock equal to 72MHz/8 = 9MHz */
SysTick_SetReload(9000000);
/* Enable the SysTick Interrupt */
SysTick_ITConfig(ENABLE);
/* Enable the SysTick Counter */
SysTick_CounterCmd(SysTick_Counter_Enable);
在Systick handler routine中,设置与PC.04相连的LED4以1秒为周期闪耀。随后执行_SVC(System Service Call)指令。这个指令在cortexm3_macro.h中

执行_SVC()会激活SVCall handler来打断当前的指令流。在SVCall handler routine中,设置与PC.05相连的LED3闪耀,同时设置PSV handler的pending比特。由于PSV(Pendable request for system service)的优先级更高,因此他又会打断SVCall handler。在PSV handler routine中,设置与PC.06相连的LED2闪耀,并设置NMI(Non maskable interrupt)pending比特,进一步由NMI handler打断当前handler。
最后,在NMI handler中设置与PC.07相连的LED1闪耀。
下一篇:STM32 SVCall
史海拾趣
|
ASIC、FPGA和DSP的应用领域呈现相互重迭的趋势,使设计人员必须在软件无线电架构设计中重新考虑组件选择策略问题。本文从可程序性、整合度、开发周期、性能和功率五个方面论述了选择ASIC、FPGA和DSP的重要准则。 软件无线电(Software Defined Ra ...… 查看全部问答> |
|
rt 自己写了个程序,想一开机全屏自动运行。 有没有比较详细的说明、操作步骤,刚接触不久,以前一点都没有做过。是用PB自己定制系统吗?如何做? 感谢啊!… 查看全部问答> |
|
问DeviceEmulatorBSP.msi模拟器支持不知道directdrawCreate 感谢大家来看我的问题: 我想问的问题,标题已经说了 现在我的环境如下: 1.用pb5.0定制了sdk,并安装完成。并添加了directdraw组件 2.vs2005可以正常使用该sdk,并建立项目运行调试正常。 现在调用ddraw里的函数 directdrawcreate直接返回失 ...… 查看全部问答> |
|
【急】xpe无法启动,提示“lsass.exe 当试图更新密码时本返回状态表示所提供的当前密码不正确” 一台升腾的8600,所用系统为Windows XP Embedded,就用了C盘一个分区,加过一层保护。那天装某个软件 ,安装驱动时提示更新几个系统文件,没怎么注意就更新掉了。结果重启后就进不去系统了, 在XP启动画面滚动 条之后用户名密码登录提示框出来前 ...… 查看全部问答> |
|
我用的西门子mc35i gprs modem 与pc机连接上之后 通过串口调试助手 发送at指令给它 当发送 atd*99***1#时 先返回 connect 然后持续不断出现大概四排乱码!@¥#!%……%……&~!~#¥¥#%@#@%%之类的 然后再显示:no carrier 我不知道是怎么回 ...… 查看全部问答> |
|
开发板上的lm1117-1.8不发烫,我自己做的板上为什么很烫啊,也能正常使用,就是很烫。 哪位高手指点一下,该怎么处理阿 未命名.JPG (35.01 KB) 2009-7-23 05:02 椭圆内的100欧姆的电阻 ...… 查看全部问答> |
|
前天就收到了soso姐寄来的开发板,但直到今天也没能成功安装驱动,如附件所示: 自己试了许多方法,比如:安装了光盘里的所有软件,如IAR For MSP430 V4.09A、 ...… 查看全部问答> |
|
使用的是TI官方PSP20.0.0.07包里的Uboot-1.3.3,SDRAM该如何配置? 我看davinci系列以及s3c2440的lowlevel_init.s文件都有用汇编配置sdram时序、管脚之类的,但是OMAP-L137的Uboot的lowlevel_init.s文件却几乎是空的,是需要自己用汇编写上,还是C ...… 查看全部问答> |




