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

查看: 6918|回复: 8

IAR FORSTM8是用固件库 写的程序进不了TIM1更新中断

[复制链接]

2

主题

4

回帖

0

蝴蝶豆

新手上路

最后登录
1970-1-1
发表于 2011-11-15 22:05:29 | 显示全部楼层 |阅读模式
用的固件库,调试的时候看了TIM1的寄存器配置都没错,就是不进入中断。。。。不知道是什么原因?
 
 
main.c中的程序:
 
 /* Includes ------------------------------------------------------------------*/
#include "stm8s.h"
#include "stm8s_it.h"
#define LED_PORT (GPIOD) 
#define LED1_PIN  (GPIO_PIN_3) 
#define LED2_PIN  (GPIO_PIN_2) 
#define LED3_PIN  (GPIO_PIN_0) 
 
 
#define BUTTON_PORT (GPIOD) 
#define BUTTON_PIN  (GPIO_PIN_7) 
 
 
void GPIOInit(void)
{
  /* Infinite loop */
   GPIO_Init(LED_PORT, LED1_PIN,GPIO_MODE_OUT_PP_LOW_SLOW);
   }
 
void TIM1Init(void)
{
 TIM1_TimeBaseInit( 0x1F3F,0x10,0x01F4,0x01F4);
                      
   /*PSCR=0x1F3F,f=8M/(0x1F3F+1)=1000Hz,每个计数周期1ms
    计数器使能,开始计数 
    每记数500次产生一次中断,即500ms*/
 TIM1_ITConfig(TIM1_IT_UPDATE, ENABLE);
 TIM1_Cmd(ENABLE);
    /*允许更新中断*/
 }
 
 
void main(void)
{
  GPIOInit();
  TIM1Init();
  while(1)
  {
  
  }
 }
stm8_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.
  */
  GPIO_WriteReverse(LED_PORT, LED1_PIN);
  TIM1_ClearFlag(TIM1_FLAG_UPDATE);  // 清除更新中断标记
  i++;
}

 
回复

使用道具 举报

134

主题

4489

回帖

239

蝴蝶豆

版主

最后登录
2020-12-9
发表于 2011-11-16 08:24:21 | 显示全部楼层

RE:IAR FORSTM8是用固件库 写的程序进不了TIM1更新中断

TIM的时钟开启了吗?
回复 支持 反对

使用道具 举报

2

主题

4

回帖

0

蝴蝶豆

新手上路

最后登录
1970-1-1
 楼主| 发表于 2011-11-16 10:24:53 | 显示全部楼层

回复:IAR FORSTM8是用固件库 写的程序进不了TIM1更新中断

回复第 2 楼 于2011-11-16 00:24:21发表:
TIM的时钟开启了吗?
开了啊。调试的时候看了TIM1的寄存器,该配置的都配置 QQ截图20111116102312.png
就是进不了中断。
 
回复 支持 反对

使用道具 举报

134

主题

4489

回帖

239

蝴蝶豆

版主

最后登录
2020-12-9
发表于 2011-11-16 14:35:14 | 显示全部楼层

RE:IAR FORSTM8是用固件库 写的程序进不了TIM1更新中断

/* enable interrupts */
  enableInterrupts();
没有开启环形中断使能
回复 支持 反对

使用道具 举报

2

主题

4

回帖

0

蝴蝶豆

新手上路

最后登录
1970-1-1
 楼主| 发表于 2011-11-16 16:29:33 | 显示全部楼层

回复:IAR FORSTM8是用固件库 写的程序进不了TIM1更新中断

回复第 4 楼 于2011-11-16 06:35:14发表:
/* enable interrupts */
enableInterrupts();
没有开启环形中断使能
 
开启唤醒中断使能?
- -这个是什么
void main(void)
{
  asm("sim");  // 关全局中断
  GPIOInit();
  TIM1Init();
  asm("rim");  // 开全局中断
  while(1)
  {
  
  }
 }我把主函数换成这样后可以进入中断,但只能进一次额。。什么原因内?

 
回复 支持 反对

使用道具 举报

30

主题

218

回帖

0

蝴蝶豆

金牌会员

最后登录
2020-3-1
发表于 2013-12-5 18:54:35 | 显示全部楼层

RE:IAR FORSTM8是用固件库 写的程序进不了TIM1更新中断

问题解决了吗?到底是哪里的问题呢?
回复 支持 反对

使用道具 举报

24

主题

591

回帖

0

蝴蝶豆

中级会员

最后登录
2020-12-2
发表于 2013-12-5 20:41:10 | 显示全部楼层

RE:IAR FORSTM8是用固件库 写的程序进不了TIM1更新中断

感觉是定时器设置不正确。你仔细看看
回复 支持 反对

使用道具 举报

24

主题

591

回帖

0

蝴蝶豆

中级会员

最后登录
2020-12-2
发表于 2013-12-5 20:47:43 | 显示全部楼层

RE:IAR FORSTM8是用固件库 写的程序进不了TIM1更新中断

正在使用的程序,你参考看看。
void TIME1_Initializes(void)
{
CLK_PeripheralClockConfig(CLK_Peripheral_TIM1, ENABLE);

/* Configure TIM1 to generate an update event each 0.025 s */
TIM1_TimeBaseInit(127, TIM1_CounterMode_Up, 2343, 0);//25ms

TIM1_UpdateRequestConfig(TIM1_UpdateSource_Global);

/* Clear TIM1 update flag */
TIM1_ClearFlag(TIM1_FLAG_Update);

/* Enable update interrupt */
TIM1_ITConfig(TIM1_IT_Update, ENABLE);

/* Enable TIM1 */
TIM1_Cmd(ENABLE);
}
回复 支持 反对

使用道具 举报

1

主题

10

回帖

0

蝴蝶豆

初级会员

最后登录
2017-12-21
发表于 2014-5-31 11:27:22 | 显示全部楼层

回复:IAR FORSTM8是用固件库 写的程序进不了TIM1更新中断

 你的中断号应该有问题
回复 支持 反对

使用道具 举报

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32Cube扩展软件包
意法半导体边缘AI套件
ST - 理想汽车豪华SUV案例
ST意法半导体智能家居案例
STM32 ARM Cortex 32位微控制器
关注我们
st-img 微信公众号
st-img 手机版