STM8L定时器TIM3中断问题(STVD环境)

2019-07-19 21:05发布

本帖最后由 紫气东升 于 2016-9-5 16:02 编辑

定时100ms让LED_Er亮起来,然而并没有实现功能。请各位大侠帮看看是什么问题。
#include<stm8l052c6.h>

#define LED_HB 0x01 << 1
#define LED_Er 0x01 << 0

void IO_Init(void)
{
    PD_ODR=0x00;    //刚开始LED全灭
    PD_DDR=0xff;     //输出模式
    PD_CR1=0xff;     //推挽输出
    PD_CR2=0x00;    //低速输出
}
void TIM3_Init(void)
{
   TIM3_PSCR=0x03;   //分频值16MHZ/(2^3)=250KHZ
   TIM3_IER=0x01;     //open timer interrupt
   TIM3_ARR=250;     //自动重载值,1/250Kx200=1ms
   TIM3_CNTR=250;   //计数器初始值200
}
void main(void)
{
    IO_Init();
    TIM3_Init();
    _asm("rim");
    TIM3_CR1|=0x01;      //Start time
    while(1)
    {
        PD_ODR^=LED_HB;
    }
}

@far @interrupt void TIM3_IRQ(void)
{
    unsigned int count = 0;
    count++;
    TIM3_SR1=0x00;
    if(count==100)//计时100次则100ms到
    {
        PD_ODR^=LED_Er;
        count=0;
    }
}


友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
5条回答
liarlaker
1楼-- · 2019-07-20 01:40
先debug看看有没有进中断
while 里这个表达式去掉PD_ODR^=LED_HB;随便放个delay什么的
中断里的表达式改成取反操作试试。建议刚开始学程序搞简单点,别把自己绕进去了。
紫气东升
2楼-- · 2019-07-20 04:54
 精彩回答 2  元偷偷看……
liarlaker
3楼-- · 2019-07-20 08:25
 精彩回答 2  元偷偷看……
紫气东升
4楼-- · 2019-07-20 11:40
liarlaker 发表于 2016-9-5 15:21
先debug看看有没有进中断
while 里这个表达式去掉PD_ODR^=LED_HB;随便放个delay什么的
中断里的表达式改 ...

还是不得,这个程序够简单的了。这是老板的要求,在这几天之内要做出来
紫气东升
5楼-- · 2019-07-20 16:34
 精彩回答 2  元偷偷看……

一周热门 更多>