你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

stm8l152 tim4中断

[复制链接]
愚民点子 提问时间:2014-5-23 11:50 /
 我在做STM8L TIM4中断程序时编译程序在 stm8_interrupt_vector.c中在
typedef void @far (*interrupt_handler_t)(void);处产生
Error[Pe169]: expected a declaration D:\STM8\各种练习性代码\STM8L_TIME\stm8_interrupt_vector.c 8 
Error[Pe020]: identifier "interrupt_handler_t" is undefined D:\STM8\各种练习性代码\STM8L_TIME\stm8_interrupt_vector.c 12 
象是interrupt_handler_t无定义。
求教解决的办法。

 

 
收藏 评论8 发布时间:2014-5-23 11:50

举报

8个回答
愚民点子 回答时间:2014-5-23 16:00:51

回复:stm8l152 tim4中断

 原来stm8_interrupt_vector.c 是STVD中的程序,加入到IAR中就报警了。
我的TIM4程序如下:
void TIM4_INIT(void)
{        /* Init TIMER 4 */
        CLK_PeripheralClockConfig(CLK_Peripheral_TIM4,ENABLE);
 
        /* Time base configuration */
        TIM4_TimeBaseInit(TIM4_Prescaler_8192,122);         //设置分频、时间
        /* Clear TIM4 update flag */
        TIM4_ClearFlag(TIM4_FLAG_Update);
        /* Enable update interrupt */
        TIM4_ITConfig(TIM4_IT_Update,ENABLE);               //开启溢出中断
        enableInterrupts();
        /* Enable TIM4 */
        TIM4_Cmd(ENABLE);                                   //启动定时器
}
主函数如下:
void main(void)
{   uint8_t a,b,c,d;
    CLK_INIT();
    StartHSE();
    IO_INIT();
    LCD_OPEN();
    LED_init();
    KEY1_init();
    KEY23_init();
    TIM4_INIT();
    enableInterrupts();
    Delay(1000);
 
    while(1)
   { 。。。。。。
中短函数stm8l15x_it.c 中TIM4部分如下
/**
  * @brief TIM4 Update/Overflow/Trigger Interrupt routine.
  * @param  None
  * @retval None
  */
INTERRUPT_HANDLER(TIM4_UPD_OVF_TRG_IRQHandler,25)
{
    TimingDelay_Decrement();
    TIM4_ClearITPendingBit(TIM4_IT_Update);
}

程序无法进入中断

 
废鱼 回答时间:2014-5-24 11:17:45

RE:stm8l152 tim4中断

STVD和IAR有一些写法是不一样的。
如果是从STVD移植到IAR上的话,注意一下工程中是否定义了_COSMIC_。
愚民点子 回答时间:2014-5-28 09:00:15

RE:stm8l152 tim4中断

我在调试中执行
CLK_PeripheralClockConfig(CLK_Peripheral_TIM4,ENABLE);
后CLK_PCKENR1=0x04
说明TIM4时钟已开启,执行完TIM4_INIT();后
TIM4_CNTR一直为0,不向上加,所以一直没有中断发生。
应该是每走一步TIM4_CNTR加1的,从现象上看TIM4时钟没打开,
怎样打开TIM4时钟?
废鱼 回答时间:2014-5-29 11:02:13

回复:stm8l152 tim4中断

我看是这样配置的。
 

main.rar

下载

1.86 KB, 下载次数: 111

愚民点子 回答时间:2014-5-30 12:34:12

RE:stm8l152 tim4中断

我找到原因了,在main中定义的变量uint16_t TimingDelay;在stm8l15x_it.c中没声明引用,所以TimingDelay变量始终是0,将extern uint16_t TimingDelay;加到main,h后程序能正常运行了。
愚民点子 回答时间:2014-5-30 12:43:18

RE:stm8l152 tim4中断

void main(void)
{   uint8_t a,b,c,d;
    CLK_INIT();
    StartHSE();
    IO_INIT();
    LCD_OPEN();
    LED_init();
    KEY1_init();
    KEY23_init();
    TIM1_INIT();      //在此处改变定时器,TIM1~TIM4都能运行
    enableInterrupts();
    Delay(1000);
PCB板为美女板
愚民点子 回答时间:2014-5-30 12:49:09

RE:stm8l152 tim4中断

附件没有传出去呀。
愚民点子 回答时间:2014-5-30 14:13:56

RE:stm8l152 tim4中断

美女板程序搞定,遗憾的是TXD引脚内部坏了只能输出不能输入,PB3引脚断了所以W25X16没用上。

所属标签

相似问题

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版