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

查看: 6914|回复: 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管理
行使您的权利
官方最新发布
13245底部标题123相同标题
12底部标题123相同标题
33333底部标题123相同序号
3435底部标题-无链接
关注我们
st-img 微信公众号
st-img 手机版