打印
[STM8]

测试一个stm8s105的tim2延时函数,但总是进不了中断。麻烦...

[复制链接]
1199|6
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
rookie108|  楼主 | 2017-6-23 09:43 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
测试一个stm8s105的tim2延时函数,但总是进不了中断。麻烦大家帮我看看问题出在哪里。多谢了!代码简化了,方便大家查看。之前试过是可以的,但后来不小心改动程序,一下子晕头了,怎么搞都不对了
代码如下:

#include "iostm8.h"

int main(void){
    CLK_ECKR = 0x00;    //关闭外部时钟
    CLK_ICKR = 0x01;    //开启内部高速时钟 16M
    CLK_CKDIVR = 0x00;  //cpu不分频 16M
   
    __asm("sim");
   
    //Clock_Config();
   // TIM2_Init();
   TIM2_PSCR = 0x04;    //16分频 1us一个数
    TIM2_ARRH = 0x03;   
    TIM2_ARRL = 0xE7;    //999  计算1000次
    TIM2_IER  = 0x01;    //允许更新中断
    TIM2_CR1  = 0x01;    //使能计数器
    __asm("rim");
   
    while(1){
      unsigned int t=1000;
      if(t>1){t--;}
    }
}


//中断函数
#pragma vector = 0x0F
__interrupt void TIM2_UPD_OVF_TRG_IRQHandler(void)
{
    asm("nop");
    TIM2_SR1 = 0x00;  //清空标志位
}


沙发
xmshao| | 2017-6-23 15:32 | 只看该作者
本帖最后由 xmshao 于 2017-6-23 15:43 编辑

STM8s芯片的外设默认是开启的,借助于调试器看看TIM2是否开着的;
中断服务程序是否跟中断矢量表里的位置对应起来了;
再就是看看是否某些宏定义改变过;

使用特权

评论回复
板凳
看不清的天空| | 2017-6-23 15:53 | 只看该作者
顶一下

使用特权

评论回复
地板
yiyigirl2014| | 2017-6-23 19:11 | 只看该作者
现在都玩 32了,怎么还用8啊,没有库函数,用起来不爽。

使用特权

评论回复
5
rookie108|  楼主 | 2017-6-29 14:51 | 只看该作者
yiyigirl2014 发表于 2017-6-23 19:11
现在都玩 32了,怎么还用8啊,没有库函数,用起来不爽。

STM8也有库函数啊。原来也是用库函数的,后来觉得寄存器也很简单。

使用特权

评论回复
6
rookie108|  楼主 | 2017-6-29 14:52 | 只看该作者
xmshao 发表于 2017-6-23 15:32
STM8s芯片的外设默认是开启的,借助于调试器看看TIM2是否开着的;
中断服务程序是否跟中断矢量表里的位置对 ...

搞定了,原来我是在模拟仿真下试测的,不知道为什么进不了中断。换成硬件直接试就可以了。

使用特权

评论回复
7
yiyigirl2014| | 2017-7-8 12:04 | 只看该作者
还是实际跑一下比较好,。

使用特权

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

本版积分规则

10

主题

29

帖子

3

粉丝