OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 12565|回复: 7

STM8s103 进入不了tim4 中断,求救原子哥

[复制链接]

8

主题

32

帖子

0

精华

初级会员

Rank: 2

积分
106
金钱
106
注册时间
2015-3-25
在线时间
10 小时
发表于 2015-3-25 14:31:12 | 显示全部楼层 |阅读模式
5金钱
main.c :

#include "stm8s.h"
#include "stm8s_conf.h"
#include "stm8s_it.h"
#include "stm8s_exti.h"
#include "stm8s_gpio.h"
#include "stm8s_tim4.h"


int i=0;
void delay(void);
  void main(void)
{


  TIM4_DeInit();
  TIM4_TimeBaseInit(TIM4_PRESCALER_128,0xff );
  TIM4_ITConfig(TIM4_IT_UPDATE, ENABLE);
  TIM4_SetCounter(0x00);
  enableInterrupts();
  TIM4_Cmd(ENABLE);

  GPIO_DeInit(GPIOC);
  GPIO_Init(GPIOC, GPIO_PIN_5, GPIO_MODE_OUT_OD_LOW_SLOW);

  while (1);
}

void light(void){
GPIO_WriteReverse(GPIOC, GPIO_PIN_5);
}

#ifdef FULL_ASSERT
void assert_failed(u8 *file, u16 line)
#else
void assert_failed(void)
#endif
{
  while (1);
}

中断向量表: 

#include "stm8s.h"
#include "stm8s_conf.h"
#include "stm8s_it.h"
#include "stm8s_exti.h"
#include "stm8s_gpio.h"
#include "stm8s_tim4.h"

extern void @near _stext(); /* startup routine */
extern void @near @interrupt TIM4_UPD_OVF_IRQHandler (void);

void @near (* const _vectab[])() =
{
  
  (void @near (*)())0x8200,
  _stext, /* RESET */
  
  (void @near (*)())0x8200,
  TRAP_IRQHandler, /* TRAP - Software interrupt */
  
  (void @near (*)())0x8200,
  TLI_IRQHandler, /* irq0 - External Top Level interrupt (TLI) */
  
  (void @near (*)())0x8200,
  AWU_IRQHandler, /* irq1 - Auto Wake Up from Halt interrupt */

  (void @near (*)())0x8200,
  CLK_IRQHandler, /* irq2 - Clock Controller interrupt */

  (void @near (*)())0x8200,
  EXTI_PORTA_IRQHandler, /* irq3 - External interrupt 0 (GPIOA) */

  (void @near (*)())0x8200,
  EXTI_PORTB_IRQHandler, /* irq4 - External interrupt 1 (GPIOB) */

  (void @near (*)())0x8200,
  EXTI_PORTC_IRQHandler, /* irq5 - External interrupt 2 (GPIOC) */

  (void @near (*)())0x8200,
  EXTI_PORTD_IRQHandler, /* irq6 - External interrupt 3 (GPIOD) */

  (void @near (*)())0x8200,
  EXTI_PORTE_IRQHandler, /* irq7 - External interrupt 4 (GPIOE) */

#ifdef STM8S208
  (void @near (*)())0x8200,
  CAN_RX_IRQHandler, /* irq8 - CAN Rx interrupt */

  (void @near (*)())0x8200,
  CAN_TX_IRQHandler, /* irq9 - CAN Tx/ER/SC interrupt */

#elif defined (STM8S903)
  (void @near (*)())0x8200,
EXTI_PORTF_IRQHandler, /* irq8 - External interrupt 5 (GPIOF) */

  (void @near (*)())0x8200,
  NonHandledInterrupt, /* irq9 - Reserved */
#else /*STM8S207, STM8S105 or STM8S103*/
  (void @near (*)())0x8200,
  NonHandledInterrupt, /* irq8 - Reserved */

  (void @near (*)())0x8200,
  NonHandledInterrupt, /* irq9 - Reserved */
#endif /*STM8S208*/

  (void @near (*)())0x8200,
  SPI_IRQHandler, /* irq10 - SPI End of transfer interrupt */

  (void @near (*)())0x8200,
  TIM1_UPD_OVF_TRG_BRK_IRQHandler, /* irq11 - TIM1 Update/Overflow/Trigger/Break interrupt */

  (void @near (*)())0x8200,
  TIM1_CAP_COM_IRQHandler, /* irq12 - TIM1 Capture/Compare interrupt */
  
#ifdef STM8S903
  (void @near (*)())0x8200,
  TIM5_UPD_OVF_BRK_TRG_IRQHandler, /* irq13 - TIM5 Update/Overflow/Break/Trigger interrupt  */

  (void @near (*)())0x8200,
  TIM5_CAP_COM_IRQHandler, /* irq14 - TIM5 Capture/Compare interrupt */

#else /*STM8S208, STM8S207, STM8S105 or STM8S103*/
(void @near (*)())0x8200,
TIM2_UPD_OVF_BRK_IRQHandler, /* irq13 - TIM2 Update/Overflow/Break interrupt  */

  (void @near (*)())0x8200,
  TIM2_CAP_COM_IRQHandler, /* irq14 - TIM2 Capture/Compare interrupt */
#endif /*STM8S903*/

#if defined (STM8S208) || defined(STM8S207) || defined(STM8S105)
  (void @near (*)())0x8200,
  TIM3_UPD_OVF_BRK_IRQHandler, /* irq15 - TIM3 Update/Overflow/Break interrupt */

  (void @near (*)())0x8200,
  TIM3_CAP_COM_IRQHandler, /* irq16 - TIM3 Capture/Compare interrupt */

#else
(void @near (*)())0x8200,
  NonHandledInterrupt, /* irq15 - Reserved */

  (void @near (*)())0x8200,
  NonHandledInterrupt, /* irq16 - Reserved */
#endif /*STM8S208, STM8S207 or STM8S105*/

#ifdef STM8S105
  (void @near (*)())0x8200,
  NonHandledInterrupt, /* irq17 - Reserved */

  (void @near (*)())0x8200,
  NonHandledInterrupt, /* irq18 - Reserved */
#else
(void @near (*)())0x8200,
  UART1_TX_IRQHandler, /* irq17 - UART1 Tx complete interrupt */
  (void @near (*)())0x8200,
  UART1_RX_IRQHandler, /* irq18 - UART1 Rx interrupt */
#endif /*STM8S105*/

  (void @near (*)())0x8200,
  I2C_IRQHandler, /* irq19 - I2C interrupt */

#if defined(STM8S208) || defined(STM8S207)
(void @near (*)())0x8200,
  UART3_TX_IRQHandler, /* irq20 - UART3 Tx interrupt */

  (void @near (*)())0x8200,
  UART3_RX_IRQHandler, /* irq21 - UART3 Rx interrupt */
#elif defined (STM8S105)
  (void @near (*)())0x8200,
  UART2_TX_IRQHandler, /* irq20 - UART2 Tx interrupt */

  (void @near (*)())0x8200,
  UART2_RX_IRQHandler, /* irq21 - UART2 Rx interrupt */
#else /* STM8S103, STM8S903 */
(void @near (*)())0x8200,
  NonHandledInterrupt, /* irq20 - Reserved */

  (void @near (*)())0x8200,
  NonHandledInterrupt, /* irq21 - Reserved */
#endif /* STM8S208, STM8S207 */

#if defined(STM8S208) || defined(STM8S207)
  (void @near (*)())0x8200,
  ADC2_IRQHandler, /* irq22 - ADC2 end of conversion interrupt */
#else /* STM8S105, STM8S103, STM8S903 */
(void @near (*)())0x8200,
  ADC1_IRQHandler, /* irq22 - ADC1 end of conversion/Analog watchdog interrupts */
#endif /* STM8S208, STM8S207 */

#ifdef STM8S903
  (void @near (*)())0x8200,
  TIM6_UPD_OVF_TRG_IRQHandler, /* irq23 - TIM6 Update/Overflow/Trigger interrupt */
#else
  (void @near (*)())0x8200,
  TIM4_UPD_OVF_IRQHandler, /* irq23 - TIM4 Update/Overflow interrupt */
#endif /*STM8S903*/

(void @near (*)())0x8200,
  EEPROM_EEC_IRQHandler, /* irq24 - FLASH interrupt */

  (void @near (*)())0x8200,
  NonHandledInterrupt, /* irq25 - Reserved */

  (void @near (*)())0x8200,
  NonHandledInterrupt, /* irq26 - Reserved */

  (void @near (*)())0x8200,
  NonHandledInterrupt, /* irq27 - Reserved */

  (void @near (*)())0x8200,
  NonHandledInterrupt, /* irq28 - Reserved */

  (void @near (*)())0x8200,
  NonHandledInterrupt, /* irq29 - Reserved */

};

/******************* (C) COPYRIGHT 2009 STMicroelectronics *****END OF FILE****/

sam8s_it.c(只贴里面的中断函数):
              @near @interrupt void TIM4_UPD_OVF_IRQHandler (void)
{
        i++;
        if(i==61){
                        i=0;
                        light();
                     }
         TIM4_ClearITPendingBit(TIM4_IT_UPDATE);
}


最佳答案

查看完整内容[请看2#楼]

终于解决了,是在stm8s.h这个头文件上没有更改芯片型号,所以在编译的时候虽然通过了,但内部地址乱了,导致这种结果发生
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

8

主题

32

帖子

0

精华

初级会员

Rank: 2

积分
106
金钱
106
注册时间
2015-3-25
在线时间
10 小时
 楼主| 发表于 2015-3-25 14:31:13 | 显示全部楼层
终于解决了,是在stm8s.h这个头文件上没有更改芯片型号,所以在编译的时候虽然通过了,但内部地址乱了,导致这种结果发生
回复

使用道具 举报

8

主题

32

帖子

0

精华

初级会员

Rank: 2

积分
106
金钱
106
注册时间
2015-3-25
在线时间
10 小时
 楼主| 发表于 2015-3-25 15:45:22 | 显示全部楼层
自顶。。。。。。。。。。。。。。。。。。。。。。
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165309
金钱
165309
注册时间
2010-12-1
在线时间
2108 小时
发表于 2015-3-25 22:54:42 | 显示全部楼层
帮顶....
回复

使用道具 举报

8

主题

32

帖子

0

精华

初级会员

Rank: 2

积分
106
金钱
106
注册时间
2015-3-25
在线时间
10 小时
 楼主| 发表于 2015-3-26 08:31:09 | 显示全部楼层
我觉得有可能是中断向量表那里设置有问题,因为这个一开始是导入库函数的例程,应该没什么代码写错之类的问题
回复

使用道具 举报

5

主题

34

帖子

0

精华

初级会员

Rank: 2

积分
83
金钱
83
注册时间
2019-7-2
在线时间
22 小时
发表于 2020-10-22 13:59:05 | 显示全部楼层
我也遇到这个情况,找了半天,终于找到这个帖子,不然不知道哪里出了问题
回复

使用道具 举报

0

主题

6

帖子

0

精华

新手上路

积分
34
金钱
34
注册时间
2014-6-22
在线时间
2 小时
发表于 2021-1-12 16:35:28 | 显示全部楼层

看了楼主的帖子,不由得精神为之一振,自觉七经八脉为之一畅,七窍倒也开了六窍半,自古英雄出少年,楼主年纪轻轻,就有经天纬地之才,定国安邦之智,古人云,卧龙凤雏得一而安天下,而今,天佑我大中华,沧海桑田5000年,中华神州平地一声雷,飞沙走石,大舞迷天,朦胧中,只见顶天立地一金甲天神立于天地间,这人英雄手持双斧,二目如电,一斧下去,混沌初开,二斧下去,女娲造人,三斧下去,小生倾倒.得此大英雄,实耐之幸也,民之福也,怎不叫人喜极而泣.......古人有少年楼主说为证,少年之楼主如红日初升,其道大光;河出伏流,一泻汪洋;潜龙腾渊,鳞爪飞扬;乳虎啸谷,百兽震惶;鹰隼试翼,风尘吸张;奇花初始,皇皇;干将发硎,有作其芒;天戴其苍,地履其黄;纵有千古,横有八荒;小生对楼主之仰慕如滔滔江水连绵不绝,海枯石烂,天崩地裂,永不变心.
回复

使用道具 举报

6

主题

22

帖子

0

精华

初级会员

Rank: 2

积分
109
金钱
109
注册时间
2013-8-7
在线时间
46 小时
发表于 2024-7-9 23:50:04 | 显示全部楼层
iar 的还是没有头绪 stm8s_it.h和stm8s_it.c不知什么写。有好心人给个例程把
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-11-22 06:39

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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