打印

STM8S103F3P为什么无法进入定时器4中断?

[复制链接]
7266|17
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
CYJMCU|  楼主 | 2013-3-12 09:24 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
#include "stm8s.h"

main()
{
GPIO_DeInit(GPIOD);
GPIO_Init(GPIOD, GPIO_PIN_4, GPIO_MODE_OUT_PP_LOW_FAST); //关闭LED
GPIO_Init(GPIOD, GPIO_PIN_3, GPIO_MODE_OUT_PP_LOW_FAST);  

TIM4->ARR = 0xff; //自动重装数值为 256
TIM4->PSCR = 0x07; //128分频
TIM4->IER = 0x01; //使能溢出中断
TIM4->CR1 = 0x01; //启动定时器
enableInterrupts();  //开启总中断
while (1){
}
}


@near @interrupt void TIM4_UPD_OVF_IRQHandler (void)
{
GPIO_Init(GPIOD, GPIO_PIN_4, GPIO_MODE_OUT_PP_HIGH_FAST);   //打开LED

TIM4->SR1 = ~0x01;
return;
}


如上面程式所示。我想通过定时器的方式来点亮LED   但是调试 很久依然没有办法进入定时器4中断程式内部。无法点亮LED  芯片是STM8S103F3P

沙发
金融小数| | 2013-3-12 10:31 | 只看该作者
STM8的vector.c设置了吗?

使用特权

评论回复
板凳
CYJMCU|  楼主 | 2013-3-12 13:29 | 只看该作者
金融小数 发表于 2013-3-12 10:31
STM8的vector.c设置了吗?

我这里没有那个文件啊?

使用特权

评论回复
地板
CYJMCU|  楼主 | 2013-3-12 13:29 | 只看该作者
在其他型号的单片机上可以进入定时器中断  唯独在 STM8S103F3P这款单片机上无法进入定时器4  怎么都无法进入  

使用特权

评论回复
5
金融小数| | 2013-3-12 14:31 | 只看该作者
你使用的是IAR软件吗?

使用特权

评论回复
6
CYJMCU|  楼主 | 2013-3-12 15:32 | 只看该作者
金融小数 发表于 2013-3-12 14:31
你使用的是IAR软件吗?

不是  是STVD

使用特权

评论回复
7
金融小数| | 2013-3-12 16:09 | 只看该作者
那么你的项目中要有向量表:
/*        BASIC INTERRUPT VECTOR TABLE FOR STM8 devices
*        Copyright (c) 2007 STMicroelectronics
*/
#include "STM8S105_it.h"

typedef void @far (*interrupt_handler_t)(void);

struct interrupt_vector {
        unsigned char interrupt_instruction;
        interrupt_handler_t interrupt_handler;
};

@far @interrupt void NonHandledInterrupt (void)
{
        /* in order to detect unexpected events during development,
           it is recommended to set a breakpoint on the following instruction
        */
        return;
}

extern void _stext();     /* startup routine */

struct interrupt_vector const _vectab[] = {
        {0x82, (interrupt_handler_t)_stext},                                        // reset
        {0x82, (interrupt_handler_t)NonHandledInterrupt},                // trap --- Software interrupt
        {0x82, (interrupt_handler_t)NonHandledInterrupt},                // irq0 --- PD7 external interrupt
        {0x82, (interrupt_handler_t)NonHandledInterrupt},                // irq1
        {0x82, (interrupt_handler_t)NonHandledInterrupt},                // irq2
        {0x82, (interrupt_handler_t)NonHandledInterrupt},                // irq3
        {0x82, (interrupt_handler_t)NonHandledInterrupt},                // irq4
        {0x82, (interrupt_handler_t)NonHandledInterrupt},                // irq5
        {0x82, (interrupt_handler_t)NonHandledInterrupt},                // irq6
        {0x82, (interrupt_handler_t)NonHandledInterrupt},                // irq7
        {0x82, (interrupt_handler_t)NonHandledInterrupt},                // irq8
        {0x82, (interrupt_handler_t)NonHandledInterrupt},                // irq9
        {0x82, (interrupt_handler_t)NonHandledInterrupt},                // irq10
        {0x82, (interrupt_handler_t)NonHandledInterrupt},        // irq11 --- Timer1 Update_Overflow interrupt: TIM1_UPD_OVF_IRQHandler
        {0x82, (interrupt_handler_t)NonHandledInterrupt},                // irq12 --- Timer1 Capture or Compare interrupt
        {0x82, (interrupt_handler_t)NonHandledInterrupt},                // irq13 --- Timer5 Update or Overflow interrupt
        {0x82, (interrupt_handler_t)NonHandledInterrupt},        // irq14 --- Timer5 Capture or Compare interrupt
        {0x82, (interrupt_handler_t)NonHandledInterrupt},                // irq15
        {0x82, (interrupt_handler_t)NonHandledInterrupt},                // irq16
        {0x82, (interrupt_handler_t)NonHandledInterrupt},                // irq17 --- UART1 TX interrupt
        {0x82, (interrupt_handler_t)NonHandledInterrupt},                // irq18 --- UART1 RX interrupt
        {0x82, (interrupt_handler_t)NonHandledInterrupt},                // irq19
        {0x82, (interrupt_handler_t)NonHandledInterrupt},                // irq20
        {0x82, (interrupt_handler_t)NonHandledInterrupt},                // irq21 --- (UART2 Receive interrupt UART2_IRQHandler)
        {0x82, (interrupt_handler_t)NonHandledInterrupt},                        // irq22 --- ADC1 End of conversion interrupt ADC1_IRQHandler
        {0x82, (interrupt_handler_t)TIM6_IRQHandler},                        // irq23 --- Timer6 Interrupt
        {0x82, (interrupt_handler_t)NonHandledInterrupt},                // irq24 --- FLASH End of Program or Write_Program_Disable interrupt
        {0x82, (interrupt_handler_t)NonHandledInterrupt},                // irq25 --- 0x806C
        {0x82, (interrupt_handler_t)NonHandledInterrupt},                // irq26 --- 0x8070
        {0x82, (interrupt_handler_t)NonHandledInterrupt},                // irq27 --- 0x8074
        {0x82, (interrupt_handler_t)NonHandledInterrupt},                // irq28 --- 0x8078
        {0x82, (interrupt_handler_t)NonHandledInterrupt},                // irq29 --- 0x807C
};

使用特权

评论回复
8
CYJMCU|  楼主 | 2013-3-12 16:12 | 只看该作者
金融小数 发表于 2013-3-12 16:09
那么你的项目中要有向量表:
/*        BASIC INTERRUPT VECTOR TABLE FOR STM8 devices
*        Copyright (c) 2007 ST ...

向量表示有的  但是仿真的时候就是现实无法进入定时器    网上也有人反映过    他们都没有贴上答案

使用特权

评论回复
9
金融小数| | 2013-3-12 16:19 | 只看该作者
你在NonHandledInterrupt函数里设个断点,看看会不会进入?

使用特权

评论回复
10
CYJMCU|  楼主 | 2013-3-12 16:23 | 只看该作者
本帖最后由 CYJMCU 于 2018-5-24 14:23 编辑
金融小数 发表于 2013-3-12 16:19
你在NonHandledInterrupt函数里设个断点,看看会不会进入?

谢谢

使用特权

评论回复
11
hawksabre| | 2013-3-12 16:43 | 只看该作者
设置个断点看看   是不是哪边寄存器设置错误了  呵呵   慢慢调试调试

使用特权

评论回复
12
Z赤心木QW| | 2013-3-12 23:06 | 只看该作者
时钟开了没?

使用特权

评论回复
13
CYJMCU|  楼主 | 2013-3-13 10:31 | 只看该作者
问题解决 头文件问题

使用特权

评论回复
14
gbangel| | 2013-3-16 09:50 | 只看该作者
楼主是怎么解决的?

使用特权

评论回复
15
lemenshen| | 2015-5-7 14:58 | 只看该作者
楼主~~我也碰到这个问题,但我头文件什么的中断向量什么的都没有设置错啊,定时器还是不起作用啊,TIM2也不起作用呢~怎么办的呢

使用特权

评论回复
16
CYJMCU|  楼主 | 2015-5-8 23:21 | 只看该作者
lemenshen 发表于 2015-5-7 14:58
楼主~~我也碰到这个问题,但我头文件什么的中断向量什么的都没有设置错啊,定时器还是不起作用啊,TIM2也不 ...



在stm8s.h中最上方 有芯片型号的选择。 不是自己芯片型号的定义全部注释掉

使用特权

评论回复
17
caihaihong| | 2018-8-24 11:39 | 只看该作者
我也遇到同样的问题,头文件其他型号的芯片也注释掉了,也还是进不了TIM4中断。

使用特权

评论回复
18
hanzhen654| | 2018-8-24 13:48 | 只看该作者
换一个定时器试下,看下是不是配置问题。

使用特权

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

本版积分规则

21

主题

110

帖子

5

粉丝