打印
[其他ST产品]

STM8S103移植到STM8S207时TIMER2定时器不能进入中断的问题

[复制链接]
206|11
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
本帖最后由 两只袜子 于 2023-8-3 16:33 编辑

STM8S103的引脚封装图如下

是一个20管脚的51类型单片机,8Kflash 1kRAM。

STM8S207引脚封装如下

一个48引脚64KFLASH和6K的RAM,也是51单片机,但串口和定时器的功能多了。

从手册看,timer1是ADVANCED 定时器,timer 2 3是通用型定时器。
在移植过程中以为只要改动器件类型同时在stm8s.h内将
#ifndef __STM8S_H
#define __STM8S_H

#define STM8S207   //STM8S103  
103注释掉并开通207的宏定义。
定时器初始化如下
void TIM1_Init(void)
{
        TIM1_DeInit();                                          //定时器1相关寄存器复位
      
        TIM1_TimeBaseInit(7, TIM1_COUNTERMODE_UP, 9999, 0);     //中断时间10ms  
        // TIM1_TimeBaseInit(8, TIM1_COUNTERMODE_UP, 1500, 0);     //中断时间ms  
        TIM1_ITConfig(TIM1_IT_UPDATE, ENABLE);                  //使能中断  
        TIM1_Cmd(ENABLE); //使能TIM1
}

void TIM2_Init(void)
{
      TIM2_DeInit();
      TIM2_TimeBaseInit(TIM2_PRESCALER_1, 125*20);//20ms中断
      TIM2_ITConfig(TIM2_IT_UPDATE, ENABLE);          //使能中断
      ITC_SetSoftwarePriority(ITC_IRQ_TIM2_OVF, ITC_PRIORITYLEVEL_2);//设置d定时器中断优先级 2
      TIM2_Cmd(ENABLE);//使能定时器1

}

但是通过单步调试,确无法进入中断
#pragma vector=ITC_IRQ_TIM2_OVF + 2
__interrupt void TIM2_UPD_OVF_BRK_IRQHandler(void)
{     
   
    TIM2_ClearFlag(TIM2_FLAG_UPDATE);       //清定时器1更新中断标志

   
}

观察寄存器发现 TIMER2 的寄存器值TIMER2_IER无法开通中断也就是使能中断 ,手册和register都显示timer2 的寄存器很少。TIMER1和TIMER2的比较如下



后来在stm8s_timer2.h里发现了端倪

typedef struct TIM2_struct
{
  __IO uint8_t CR1;  
// __IO uint8_t RESERVE1;
// __IO uint8_t RESERVE2;  //注释掉用于STM8S207  否则用于stm8s103
  __IO uint8_t IER;  
  __IO uint8_t SR1;  
  __IO uint8_t SR2;  
  __IO uint8_t EGR;  
  __IO uint8_t CCMR1;
  __IO uint8_t CCMR2;
  __IO uint8_t CCMR3;
  __IO uint8_t CCER1;
  __IO uint8_t CCER2;
  __IO uint8_t CNTRH;
  __IO uint8_t CNTRL;
  __IO uint8_t PSCR;  
  __IO uint8_t ARRH;  
  __IO uint8_t ARRL;  
  __IO uint8_t CCR1H;
  __IO uint8_t CCR1L;
  __IO uint8_t CCR2H;
  __IO uint8_t CCR2L;
  __IO uint8_t CCR3H;
  __IO uint8_t CCR3L;
}
TIM2_TypeDef;

也就是在给timer2 的寄存器赋值时由于多了两个没用的,将数值顶替了,注释掉可以了。


使用特权

评论回复
沙发
中国龙芯CDX| | 2023-12-28 08:32 | 只看该作者
timer2 的寄存器赋值时由于多了两个没用的,将数值顶替了,注释掉可以了

使用特权

评论回复
板凳
童雨竹| | 2024-3-8 08:02 | 只看该作者

让PCB顶层和底层一样,将它们通过一些过孔(或通孔)连接

使用特权

评论回复
地板
Wordsworth| | 2024-3-8 09:05 | 只看该作者

孔璧里头必须经过电镀

使用特权

评论回复
5
Clyde011| | 2024-3-8 10:08 | 只看该作者

需要将阻焊漆(阻焊油墨)覆盖在最外层的PCB设计布线上

使用特权

评论回复
6
公羊子丹| | 2024-3-8 11:01 | 只看该作者

电源中都有一个交流电压最大的节点

使用特权

评论回复
7
万图| | 2024-3-8 12:04 | 只看该作者

做多层板可将做好的两块双面板用特制的粘合剂“压合”起来

使用特权

评论回复
8
Uriah| | 2024-3-8 13:07 | 只看该作者

清除与电镀动作都会在化学过程中完成

使用特权

评论回复
9
帛灿灿| | 2024-3-8 15:03 | 只看该作者

将整个表面铺上一层薄薄的铜箔,并且把多余的部份给消除

使用特权

评论回复
10
Bblythe| | 2024-3-8 16:06 | 只看该作者

在开始电镀之前,必须先清掉孔内的杂物。

使用特权

评论回复
11
周半梅| | 2024-3-8 18:02 | 只看该作者

电容工作在额定的纹波电流下

使用特权

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

本版积分规则

1884

主题

6474

帖子

8

粉丝