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

stm8s003f定时器完全无法起作用,弄了2天都没能解决,求救啊

[复制链接]
lemenshen 发布时间:2015-5-8 13:45
#include "STM8S103f3p.h"
#include "stm8s_tim2.h"
unsigned char i=0;

void Init_Tim2(void)  
{  
    TIM2_EGR=0x01; //手动产生更新事件,重新初始化计数器,并允许产生一个更新事件   
    //设置定时器初值  
    TIM2_CNTRH=0; //不能使用TIM2_CNTR直接设值,TIM2_CNTRL=0;   
    //设定自动重装寄存器值      
    //这里得注意不能使用TIM2_ARR的方式进行设值,TIM2是十六位的。  
    //如TIM2_ARR=0xFA,实际上是赋给高字节了,TIM2_ARRH=0xFA,而不是想象中的赋给低字节。  
    TIM2_ARRH=0x7A; //31250 4MHz / 128 = 31250Hz  (1S)  
    TIM2_ARRL=0x12; //0x7A12 31250   意味着每产生一次中断时间为1S  
    TIM2_PSCR=0x07; //分频128  

    TIM2_IER=0x41; //中断允许位使能  
    TIM2_CR1=0x01; //使能计时器  
}  

void Init_GPIO(void)
{
                PD_DDR|=0x04;
          PD_CR1|=0x04;
          PD_CR2|=0x00;
                PD_ODR=0x00;
}

main()
{
        Init_GPIO();
       CLK_PCKENR1=0xFF;
          _asm("sim" );
          Init_Tim2();
        _asm("rim");

        while (1);
}

@far @interrupt void TIM2_UPD_OVF_IRQHandler (void)
{
      i++;
      TIM2_SR1=0x00;
      if(i==61)
      {        PA_ODR=0x04;        i=0;
      }
      return;
}

我仅仅希望能够定时然后LED灯熄灭,为什么烧录后,LED就是不灭呢?都有在vector向量表里面更改了相应的了,就是不亮啊,求大神解救 啊
收藏 评论11 发布时间:2015-5-8 13:45

举报

11个回答
lemenshen 回答时间:2015-5-8 13:46:42
求大神解答··所谓设置定时器的四个步骤都弄好了,我试过两个板都不行,然后在中断设置断点,也不知道怎么操作···
zhuoyemp4 回答时间:2015-5-8 15:29:22
本帖最后由 zhuoyemp4 于 2015-5-8 15:54 编辑

这是所有的代码?有没有对系统时钟做初始化?你在中断函数里设置断点,运行看能不能运行到断点
给你一个我的初始化代码,系统时钟16M,4分频,定时1ms,每1ms进一次中断。这是可以用的
        CLK->PCKENR1|=0x20;
        TIM2->ARRH=0x0f;
        TIM2->ARRL=0xa0;
        TIM2->CNTRH=0x00;
        TIM2->CNTRL=0x00;
        TIM2->PSCR=0x02;
        TIM2->CR1=0x80;
        TIM2->EGR=0x00;
        TIM2->IER|=0x01;
        TIM2->CR1|=0x01;
你根据自己的项目,把ARRH,ARRL,PSCR,改一下就OK了
zhuoyemp4 回答时间:2015-5-8 16:01:13
其实咱俩的初始化主要不同在于EGR寄存器UG位,我的是0,你的是1,是1那就意味着Re-initializes the counter and generates an update of the registers. Note that the prescaler
counter is also cleared.
lemenshen 回答时间:2015-5-8 16:24:33
zhuoyemp4 发表于 2015-5-8 16:01
其实咱俩的初始化主要不同在于EGR寄存器UG位,我的是0,你的是1,是1那就意味着Re-initializes the counter ...

我重新写了一遍,又出现新的问题啊,compile没有问题,但在build的时候出现错误#error cpstm8 stm8_interrupt_vector.c:38(29+23) invalid pointer initializer
为什么会这样呢?都没变啊?
lemenshen 回答时间:2015-5-8 16:25:51
zhuoyemp4 发表于 2015-5-8 16:01
其实咱俩的初始化主要不同在于EGR寄存器UG位,我的是0,你的是1,是1那就意味着Re-initializes the counter ...

我在原程序按照你的改了一下,再下载,也是没反应啊~~为什么会这样的呢??
lemenshen 回答时间:2015-5-8 16:27:05
zhuoyemp4 发表于 2015-5-8 16:01
其实咱俩的初始化主要不同在于EGR寄存器UG位,我的是0,你的是1,是1那就意味着Re-initializes the counter ...

因为我是新手,刚接触STM8芯片,我不知道是不是我打开的方式不对,我写好后就compile,然后build,然后打开STVP,打开.s19后缀的文件,再烧录的,是不是这样的一个步骤呢?
zhuoyemp4 回答时间:2015-5-8 16:39:49
lemenshen 发表于 2015-5-8 16:27
因为我是新手,刚接触STM8芯片,我不知道是不是我打开的方式不对,我写好后就compile,然后build,然后打 ...

我都是烧HEX文件的
S19没弄过
lemenshen 回答时间:2015-5-8 16:42:33
zhuoyemp4 发表于 2015-5-8 16:39
我都是烧HEX文件的
S19没弄过

HEX是怎么生成的啊?也是用STlink下载的吗?难道是我烧.S19文件的问题?看项目里面debug文件夹里面也只有.s19,.,map,.lkf,.elf文件啊,哪一个是hex文件啊?你们学这个的时候从哪里下的教程啊?求解救啊
zhuoyemp4 回答时间:2015-5-8 16:44:12
lemenshen 发表于 2015-5-8 16:42
HEX是怎么生成的啊?也是用STlink下载的吗?难道是我烧.S19文件的问题?看项目里面debug文件夹里面也只有 ...

qq多少,我加你
12下一页

所属标签

STM32团队

意法半导体微控制器和微处理器拥有广泛的产品线,包含低成本的8位单片机和基于ARM® Cortex®-M0、M0+、M3、M4、M33、M7及A7内核并具备丰富外设选择的32位微控制器及微处理器


最新内容

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