不太会用中断,给点建议呗,亲们
同样建议看样例,其实坛里有很多有图有真相的小例子,你可以看一下!
这个童鞋应该是不理解中断的机制!
通俗的说一下我自己的理解吧:
每个单片机都有一个无限循环的task在跑,但是跑的时候有时候会被高优先级的事件(比如中断)打断,等高优先级的事件处理完了再回来继续跑(包括睡眠)
我以前就不了解中断是怎么触发的:
中断有很多种,IO中断,定时器中断....
当有设定的事件发生时,就会触发相应的处理程序(这个处理程序是在中断响应函数里写好的)如下:
#pragma vector = INTTM00_vect
__interrupt static void r_tau0_channel0_interrupt(void)
{
/* Start user code. Do not edit comment generated here */
/* End user code. Do not edit comment generated here */
}
当然在定义中断处理函数时要把所有的处理函数都挂到一个表上:
如下:
/*----------------------------------------------
* Interrupt vector addresses
*--------------------------------------------*/
。。。。
#define INTDMA1_vect (0x1C)
#define INTCSI00_vect (0x1E)
#define INTIIC00_vect (0x1E)
#define INTST0_vect (0x1E)
#define INTCSI01_vect (0x20)
#define INTIIC01_vect (0x20)
#define INTSR0_vect (0x20)
#define INTSRE0_vect (0x22)
#define INTTM01H_vect (0x22)
#define INTCSI10_vect (0x24)
#define INTIIC10_vect (0x24)
#define INTST1_vect (0x24)
#define INTCSI11_vect (0x26)
#define INTIIC11_vect (0x26)
#define INTSR1_vect (0x26)
#define INTSRE1_vect (0x28)
#define INTTM03H_vect (0x28)
#define INTIICA0_vect (0x2A)
#define INTTM00_vect (0x2C)
往下面的东西就要好好研究一下了!
不过理解了以上的,用起来就没问题了!
多多交流!
楼上是IAR平台的
CubeSuite+下RL78中断函数的声明:
#pragma vect(or interrupt) interrupt-request-name function-name
interrupt-request-name 在UM的interrupt function那章找
#pragma interrupt INTP0 r_intc0_interrupt
__interrupt void r_intc0_interrupt(void)
{
/* Start user code. Do not edit comment generated here */
/* End user code. Do not edit comment generated here */
}
进中断要保存现场,出中断要恢复现场,这都是常识,不过对用户来说不用考虑,CPU会帮你做好
此外,进中断函数后系统中断是禁止的(DI),如果要中断嵌套,需要在中断函数里EI
回复
有奖活动 | |
---|---|
【有奖活动】分享技术经验,兑换京东卡 | |
话不多说,快进群! | |
请大声喊出:我要开发板! | |
【有奖活动】EEPW网站征稿正在进行时,欢迎踊跃投稿啦 | |
奖!发布技术笔记,技术评测贴换取您心仪的礼品 | |
打赏了!打赏了!打赏了! |
打赏帖 | |
---|---|
vscode+cmake搭建雅特力AT32L021开发环境被打赏30分 | |
【换取逻辑分析仪】自制底板并驱动ArduinoNanoRP2040ConnectLCD扩展板被打赏47分 | |
【分享评测,赢取加热台】RISC-V GCC 内嵌汇编使用被打赏38分 | |
【换取逻辑分析仪】-基于ADI单片机MAX78000的简易MP3音乐播放器被打赏48分 | |
我想要一部加热台+树莓派PICO驱动AHT10被打赏38分 | |
【换取逻辑分析仪】-硬件SPI驱动OLED屏幕被打赏36分 | |
换逻辑分析仪+上下拉与多路选择器被打赏29分 | |
Let'sdo第3期任务合集被打赏50分 | |
换逻辑分析仪+Verilog三态门被打赏27分 | |
换逻辑分析仪+Verilog多输出门被打赏24分 |