打印

请问下为什么跳转不到中断函数

[复制链接]
1607|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
w67599|  楼主 | 2012-12-26 11:40 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 w67599 于 2012-12-26 11:40 编辑

尝试了下发现并没有跳入中断函数PC_ODR=0x60;     说明是搬某个教程里面的计数方法的


源程序如下:#include <iostm8s103f3.h>


void CLK_init(void)
{
  CLK_CKDIVR = 0x08;         // 16M内部RC经2分频后系统时钟为8M
}

void GPIO_init(void)
{
   PA_DDR=0x02;
   PA_CR1=0x02;
   PC_DDR=0x60;
   PC_CR1=0x60;

}

void TIM1_init(void)
{
  TIM1_PSCRH = 0x1F;  // 8M系统时钟经预分频f=fck/(PSCR+1)
  TIM1_PSCRL = 0x3F;  // PSCR=0x1F3F,f=8M/(0x1F3F+1)=1000Hz,每个计数周期1ms
  TIM1_ARRH = 0x03;  // 自动重载寄存器ARR=0x01F4=500
  TIM1_ARRL = 0xE8;  // 每记数1000次产生一次中断,即500ms
  TIM1_IER = 0x01;    // 允许更新中断
  TIM1_CR1 = 0x01;  // 计数器使能,开始计数
}

#pragma vector=TIM1_OVR_UIF_vector
__interrupt void TIM1_OVR_UIF(void)
{
  PC_ODR=PC_ODR^0x00;
  TIM1_SR1 = 0;  // 清除更新中断标记,这步不能漏掉,否则会连续进入中断程序

}

void init_devices(void)
{
  asm("sim");  // 关全局中断
  CLK_init();
  GPIO_init();
  TIM1_init();
  asm("rim");  // 开全局中断
}

void main( void )
{


// 主循环里没有程序需要执行
  while(1)
  {
    init_devices();
    PC_ODR=0x00;
  }
}
沙发
uet_cache| | 2012-12-26 11:42 | 只看该作者
你主程序里怎么一直初始化。。。?

使用特权

评论回复
评分
参与人数 1威望 +1 收起 理由
w67599 + 1 很给力!
板凳
w67599|  楼主 | 2012-12-26 12:30 | 只看该作者
uet_cache 发表于 2012-12-26 11:42
你主程序里怎么一直初始化。。。?

顾着跳时间下面没改掉···多谢提醒

使用特权

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

本版积分规则

1

主题

3

帖子

0

粉丝