关于STM8S中断函数
请问STM8S怎样写中断函数?不管是什么中断,有没有一个格式写法? struct interrupt_vector const _vectab[] = {{0x82, (interrupt_handler_t)_stext}, /* reset */
{0x82, NonHandledInterrupt}, /* trap*/
{0x82, TLI_Interrupt}, /* irq0*/
{0x82, NonHandledInterrupt}, /* irq1*/
{0x82, NonHandledInterrupt}, /* irq2*/
{0x82, NonHandledInterrupt}, /* irq3*/
{0x82, NonHandledInterrupt}, /* irq4*/
{0x82, NonHandledInterrupt}, /* irq5*/
{0x82, NonHandledInterrupt}, /* irq6*/
{0x82, NonHandledInterrupt}, /* irq7*/
{0x82, NonHandledInterrupt}, /* irq8*/
{0x82, NonHandledInterrupt}, /* irq9*/
{0x82, NonHandledInterrupt}, /* irq10 */
{0x82, NonHandledInterrupt}, /* irq11 */
//{0x82, TIM1_UPD_OVF_TRG_BRK_IRQHandler}, /* irq11 */
{0x82, NonHandledInterrupt}, /* irq12 */
{0x82, NonHandledInterrupt}, /* irq13 */
{0x82, NonHandledInterrupt}, /* irq14 */
{0x82, NonHandledInterrupt}, /* irq15 */
{0x82, NonHandledInterrupt}, /* irq16 */
{0x82, NonHandledInterrupt}, /* irq17 */
{0x82, NonHandledInterrupt}, /* irq18 */
{0x82, NonHandledInterrupt}, /* irq19 */
{0x82, NonHandledInterrupt}, /* irq20 */
{0x82, NonHandledInterrupt}, /* irq21 */
{0x82, NonHandledInterrupt}, /* irq22 */
{0x82, NonHandledInterrupt}, /* irq23 */
{0x82, NonHandledInterrupt}, /* irq24 */
{0x82, NonHandledInterrupt}, /* irq25 */
{0x82, NonHandledInterrupt}, /* irq26 */
{0x82, NonHandledInterrupt}, /* irq27 */
{0x82, NonHandledInterrupt}, /* irq28 */
{0x82, NonHandledInterrupt}, /* irq29 */
};
@far @interrupt void TLI_Interrupt (void)
{
//PD_ODR ^= 0x01;
pwm_duty+=8;
*((unsigned char*) add)=0x00;
*((unsigned char*) add)=pwm_duty;
TIM3_CCR2H= pwm_duty>>8; /* CC2 Dutycycle */
TIM3_CCR2L= pwm_duty;
return;
} 明白,谢谢! 回复【2楼】ffbiao
-----------------------------------------------------------------------
这个表和主程序是否要怎样连接起来的?中断的子程序一定是放在表里面吗?在表里面,但是我们没有办法用主程序的变量的!那是什么原因? STM8单片机,PD0口产生中断与PD2口产生中断都转向同一个中断服务函数吗?
若PD0口产生中断与PD2口产生中断都转向同一个中断服务函数,那么如何让单片机区别该中断是PD0口还是PD2口产生的? 回复【4楼】bioe
-----------------------------------------------------------------------
我遭遇和您相同的疑惑. 我PC.3/PC.6 都是falling edge trigger.
但不知如何得知,中斷是由誰引發的.
若您有解答,請分享給我.謝謝 ! 我也搞不清楚啊 IAR与STVD下面的语法不同 ,如下:
#pragma vector=0xD //TIM2
__interrupt void TIM2_UPD_OVF_BRK_IRQHandler(void)
{
} IAR不用库,只包含一个头文件就可以吗? BOLTNUT 发表于 2010-6-13 22:58 static/image/common/back.gif
回复【4楼】bioe
-----------------------------------------------------------------------
设计时两个外部中断最好不要放在同一端口。若没办法放在同一端口(如PB口),只能采取软件查询的方法,即进入中断后立即读取这两个引脚的电平状态来判断哪个引脚触发了中断。 zlutian 发表于 2012-6-2 12:14 static/image/common/back.gif
设计时两个外部中断最好不要放在同一端口。若没办法放在同一端口(如PB口),只能采取软件查询的方法,即 ...
很BT的用法,为何不搞个寄存器一一对应起来,搞得中断不像中断的,不伦不类。 我也一直没弄明白 huang1689 发表于 2010-4-1 11:51 static/image/common/back.gif
**** 作者被禁止或删除 内容自动屏蔽 ****
表里面对应中断的向量,入口地址。和中断子程序的名字要相同的 现在正准备学习 STM8 ,向大家讨教讨教~~~~~~ zlutian 发表于 2012-6-2 12:14 static/image/common/back.gif
设计时两个外部中断最好不要放在同一端口。若没办法放在同一端口(如PB口),只能采取软件查询的方法,即 ...
正解.......
页:
[1]