打印
[STM8]

TIM2中断函数有错?完全看不出来啊,帮忙看看吧

[复制链接]
3577|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
tim4146|  楼主 | 2013-8-9 21:08 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
函数功能是通过TIM2这个16位的计数器的溢出中断实现PE5引脚上的LED改变状态(亮或灭)。

编译错误
#error cpstm8 stm8_interrupt_vector.c:38(8+19) invalid pointer initializer
指向中断向量:{0x82, TIM2_UPD_IRQHandler}, /* irq13 */
网上也说改成{0x82, (interrupt_handler_t)TIM2_UPD_IRQHandler}, /* irq13 */
依旧没用,错误依旧,之前做过TIM4的中断实验,也没出现这样的错误。

中断函数我已经改过了,如下:
#ifdef STM8S903
/**
  * @brief Timer5 Update/Overflow/Break/Trigger Interrupt routine.
  * @param  None
  * @retval None
  */
INTERRUPT_HANDLER(TIM5_UPD_OVF_BRK_TRG_IRQHandler, 13)
{
  /* In order to detect unexpected events during development,
     it is recommended to set a breakpoint on the following instruction.
  */
}

/**
  * @brief Timer5 Capture/Compare Interrupt routine.
  * @param  None
  * @retval None
  */
INTERRUPT_HANDLER(TIM5_CAP_COM_IRQHandler, 14)
{
  /* In order to detect unexpected events during development,
     it is recommended to set a breakpoint on the following instruction.
  */
}

#else /*STM8S208, STM8S207, STM8S105 or STM8S103 or STM8AF62Ax or STM8AF52Ax or STM8AF626x */
/**
  * @brief Timer2 Update/Overflow/Break Interrupt routine.
  * @param  None
  * @retval None
  */
@far @interrupt void TIM2_UPD_IRQHandler (void)
{   
    i++;
                TIM2_SR1 = 0x00;      // 清除更新标志
                if(i==10)
                {
    i=0;
    PE_ODR = PE_ODR ^ 0x20;  // LED驱动信号取反
                }
}

大家给我看看吧,我已经查看对比了很久了....



沙发
tim4146|  楼主 | 2013-8-9 21:13 | 只看该作者
MAIN.C忘记给了,也比较简单:
/* MAIN.C file
*
* Copyright (c) 2002-2005 STMicroelectronics
*/
#include<STM8S105k4.h>
#include<stm8s.h>
main()
{
GPIO_Init(GPIOE, GPIO_PIN_5, GPIO_MODE_OUT_PP_LOW_FAST);
GPIO_WriteHigh(GPIOE, GPIO_PIN_5);
TIM2_IER = 0x00;// 禁止中断
TIM2_PSCR = 0x02;// 计数器时钟=主时钟/128=2MHZ/2=1uS

// 设定重装载时的寄存器值
// 注意必须保证先写入高8位,再写入低8位
TIM2_ARRH = 0xEA;
TIM2_ARRL = 0x60;
// 定时周期=1*60000=60000uS=60ms

TIM2_CR1 = 0x01;// b0 = 1,允许计数器工?
TIM2_IER = 0x01;//允许中断
_asm("rim");
while (1)
   {         
   }       
}

使用特权

评论回复
板凳
tim4146|  楼主 | 2013-8-9 21:22 | 只看该作者
额。发完帖子发现问题了,这是什么节奏...

解决办法:

声明中断函数extern @far @interrupt void TIM2_UPD_IRQHandler (void);

使用特权

评论回复
地板
trumpxp| | 2013-8-10 09:56 | 只看该作者
问题解决了就好   楼主   谢谢你的共享资料   谢谢了

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

2

主题

9

帖子

0

粉丝