搜索
bottom↓
回复: 5

为何STM8S003F3进不了TIM1中断?

[复制链接]

出0入34汤圆

发表于 2020-3-2 16:45:36 | 显示全部楼层 |阅读模式
本帖最后由 epwwm 于 2020-3-2 16:46 编辑

第一次中STM8S003F3的中断,用的是固件库,其他还好,当想用中断,弄了半天也进不了定时中断,

定时器初始
void TIMER1_Init(void)  
{  
  CLK_PeripheralClockConfig(CLK_PERIPHERAL_TIMER1, ENABLE);//开时钟  
  TIM1_DeInit();
  TIM1_Cmd(DISABLE);  
  TIM1_TimeBaseInit(16,TIM1_COUNTERMODE_UP,1000,0);     //16分频,向上计数,每1ms定时中断一次, 重复计数器值为0     
  TIM1_ARRPreloadConfig(ENABLE);
  TIM1_ITConfig(TIM1_IT_UPDATE , ENABLE);  
  
  TIM1_Cmd(ENABLE);  
}  


stm8s_it.c 的中断入口:

INTERRUPT_HANDLER(TIM1_UPD_OVF_TRG_BRK_IRQHandler, 11)
{
  /* In order to detect unexpected events during development,
     it is recommended to set a breakpoint on the following instruction.
  */
  
//  TIMER1_Decrement();  
  TIM1_ClearITPendingBit(TIM1_IT_UPDATE);  
}




主函数:

void main(void)
{

#include "stm8s.h"


     TIMER1_Init();
     enableInterrupts();   

  while(1)
  {}

}


用IAR for stm8 ,编译,软件仿真,怎么搞也进不了定时1的中断。
到底漏了什么呢??

阿莫论坛20周年了!感谢大家的支持与爱护!!

曾经有一段真挚的爱情摆在我的面前,我没有珍惜,现在想起来,还好我没有珍惜……

出0入34汤圆

 楼主| 发表于 2020-3-3 17:54:14 | 显示全部楼层
一直是用Simulator 软件仿真的,没用ST-LINK, 网上找了一天,换了N种方法,不用库,用寄存器也试过了,无论我怎么搞,死活软件仿真不正常,连计数器也不运行,不会加1的,郁闷得我,想骂人了。

于是不弄了,处理别的事情去了

出0入0汤圆

发表于 2020-3-3 20:43:08 | 显示全部楼层

  1. void TIM1_Config(void)
  2. {
  3.   /* 初始化TIM1为外部时钟24分频 向上计数模式 计数周期10000 计数初始值0 -- 10ms进一次中断*/
  4.   TIM1_TimeBaseInit(15, TIM1_COUNTERMODE_UP, 9999, 0);
  5.   TIM1_SetCounter(0);/* 将计数器初值设为0 */
  6.   TIM1_ARRPreloadConfig(DISABLE);        /* 预装载不使能 */
  7.   TIM1_ITConfig(TIM1_IT_UPDATE , ENABLE);        /* 计数器向上计数/向下计数溢出更新中断 */
  8.   TIM1_Cmd(ENABLE);                        /* 使能TIM1 */
  9. }



  10. INTERRUPT_HANDLER(TIM1_UPD_OVF_TRG_BRK_IRQHandler, 11)
  11. {
  12.   /* In order to detect unexpected events during development,
  13.      it is recommended to set a breakpoint on the following instruction.
  14.   */
  15.   
  16.   time_10ms_ok = 1;

  17.   TIM1_ClearITPendingBit(TIM1_IT_UPDATE);
  18. }


  19. void CLK_Configuration(void)
  20. {

  21.   /* Fmaster = 16MHz */
  22.   CLK_HSIPrescalerConfig(CLK_PRESCALER_HSIDIV1);

  23. }


  24. void main



  25.   CLK_Configuration(); //启用内部晶振


  26.   enableInterrupts(); //打开总中断
  27.   
  28.   TIM1_Config();

复制代码





看了下我的代码,供参考。

出0入34汤圆

 楼主| 发表于 2020-3-4 11:19:45 | 显示全部楼层
lyg407 发表于 2020-3-3 20:43
看了下我的代码,供参考。


感谢。。。和我的代码基本一样。。。

看来,代码是没有错漏地方了

出0入4汤圆

发表于 2020-3-7 08:50:42 来自手机 | 显示全部楼层
如果你是用的st库的头文件,很可能中断人口不对,可以到IAR的目录下找003的头文件,看看中断号对不对,另外看看你这个中断函数的值是要+2了的还是没+2的,反正stm8坑比较多,每个系列的中断位不一样的,而且有的中断不软件清零就会永远退不出中断

出0入213汤圆

发表于 2020-3-7 09:52:34 来自手机 | 显示全部楼层
Simulator仿真,外设是不会工作的吧!楼主还是连上芯片仿真看看,观察各相关寄存器的变化情况
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-6-3 20:02

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表