历史上的今天
返回首页

历史上的今天

今天是:2025年02月11日(星期二)

正在发生

2020年02月11日 | STM8 TIM2 定时器的问题

2020-02-11 来源:eefocus

所用的芯片为STM8S103F3P6,编译器为IAR  ,程序代码如下:


// #include "iostm8s105c6.h"

#include "iostm8s103F3.h"      // Very importtant 


void DelayMS(unsigned int ms)

{

  unsigned char i;

  while(ms != 0)

  {

    for(i=0;i<250;i++)

    {

    }

    for(i=0;i<75;i++)

    {

    }

    ms--; 

  }    

}

////GPIO口初始化

void GPIO_init(void)

{

  PA_DDR = 0x08;  // 配置PD端口的方向寄存器PD0输出

  PA_CR1 = 0x08;  // 设置PD0为推挽输出

  PA_CR2 = 0x00;

  PC_DDR = 0x18;  // 配置PD端口的方向寄存器PD0输出

  PC_CR1 = 0x18;  // 设置PD0为推挽输出

  PC_CR2 = 0x00;

}


void ADC_init(void)

{

  CLK_PCKENR2 =0x08;           // Enable the f(MASTER) Clock to ADC;

  ADC_CR1 = 0x40;             // ADC Clock: SPSEL[2:0]=100; fADC = f(MASTER)/8=1M; Single conversion mode ; ADON=0;

  ADC_CR2 = 0x20;             // Data Left alignment ;Scan mode disabled

  

  ADC_CSR = 0x03;             // Select Channel AIN3; EOC interrupt disabled  ; (ECO:End of conversion)

  ADC_TDRL = 0x03;            // Channel AIN3 Schmitt trigger disabled

}


void TIM2_init(void)

{

    CLK_PCKENR1=0x20;           //  Enable the f(MASTER) Clock to Time2;  

    TIM2_PSCR  =0x03;          //  Time2 Clock Frequency:1M ;  prescaler :8; Fck_psc/ 2^(PSC[3:0]); 0011; //Fck_psc=f(MASTER)=8M;

    TIM2_EGR = 0x01;           // Re-initializes the counter and generates an update of the registers

    TIM2_CNTRH = 0x0;          // Counter Starting Value;

    TIM2_CNTRL = 0x0;            

  

   TIM2_ARRH = 0xC3;          // TIM2_ARRH  Must be Loaded Value First ,then to TIM2_ARRL; Auto-reload// register high (TIMx_ARRH);

   TIM2_ARRL = 0x50;         //  0xC350 = 50000 ;Time = 1us x 50000 = 50 ms;

   

   TIM2_IER   =0x01;          //  Time2 Update interrupt Enabled;

  

   TIM2_CR1  =0x01;         // Counter enable;

}


void CLK_init(void)


{

  

  CLK_SWR = 0xE1;               //  0xE1: HSI selected as master clock source ; f(HSI)RC =16M ;

  CLK_CKDIVR = 0x09;           //  f(HSI)RC =16M ; f(HSI)=[f(HSI)RC]/2 = 8M = f(MASTER) ; f(CPU)=f(MASTER)/2= 4M ;

  

}


int i=0;

unsigned int ADdata;

unsigned int ADlow;


main()

{

  

  GPIO_init();

  CLK_init();

  TIM2_init();

  ADC_init();

  

  asm("rim");           //Enable Global interrupt;

  

  while(1)                                       

  {

 

       PC_ODR = 0x00;

       

       

    // PA_ODR = 0x00;

       PA_ODR = 0x08;

      // DelayMS(100);   

    

    if(i%20==0)

    {

      //PC_ODR = 0x00;

      //PA_ODR = 0x08;

      //DelayMS(200);

      PA_ODR = 0x00;

      DelayMS(50);

        // i=0;

        //PC_ODR = 0x08;

       // DelayMS(100);

       // PC_ODR = 0x10;

       // DelayMS(100);

    }

      

    if(i==40)

    {

      

     //  ADC_CR1 |=0x01;   //启动转换

       //while((ADC_CSR&0x80) == 0); // 等待ADC结束

       

      //PC_ODR = 0x00;

        PA_ODR = 0x00;

        DelayMS(300);

     // PA_ODR = 0x08;

      //DelayMS(100);

        i=0;

        PC_ODR = 0x08;

         DelayMS(30);

     // PC_ODR = 0x10;

     // DelayMS(30);

    }

    

    //for(i=0;i<10;i++)

    //{

      //PC_ODR = 0x08;

     // DelayMS(30);

     /// PC_ODR = 0x10;

    //  DelayMS(30);

    //}

  }

}


#pragma vector=TIM2_OVR_UIF_vector


 __interrupt void TIM2_OVR_UIF(void)

   

{

    TIM2_SR1 = 0x00;          //     Clear  UIF: Update interrupt flag

    i++;

   if(i>200)  i=0;

}


上述代码为仍在调试的代码,定时器可以正常工作了,AD还在调试。现对定时器调试关键点说明如下:


1、头文件.// #include "iostm8s105c6.h" 要改为      #include "iostm8s103F3.h"      // Very importtant 


2、STM8S .h 文件中的#define STM8S105     注释掉,将#define STM8S103  定义,去掉注释。 

推荐阅读

史海拾趣

深圳杜因特(DOINGTER)公司的发展小趣事

在竞争激烈的电子行业中,杜因特始终将创新作为公司发展的核心动力。公司不断投入大量资源进行新产品的研发和技术创新,特别是在Super-Junction MOSFET和Super-Trench MOSFET等高端产品领域取得了显著成果。这些创新产品不仅满足了市场对高品质MOSFET的日益增长需求,还进一步巩固了杜因特在电子行业的技术领先地位。

中移物联网(Chinamobile)公司的发展小趣事

中移物联网在智能终端产品的创新方面也取得了显著成果。公司设计并生产了物联网专用模组和芯片,打造了智能组网、智能安防、智能家居、智能穿戴等行业终端。这些产品在市场上受到了广泛欢迎,特别是在智能家居和智能穿戴领域,中移物联网的产品凭借其高性能和稳定性,赢得了众多消费者的青睐。

Adam Tech公司的发展小趣事

为了进一步拓展市场,Adam Tech开始实施全球化战略。公司在北美、欧洲和亚洲等地设立了多个代表处,以便更好地服务全球客户。这些代表处不仅为公司带来了更多的业务机会,也提升了公司在国际市场上的知名度。同时,公司还积极与各地合作伙伴建立紧密的合作关系,共同推动电子连接器行业的发展。

Devar Inc公司的发展小趣事

随着环保意识的提高,Devar Inc公司也积极投身环保科技领域。公司研发了一系列环保型电子产品和解决方案,如可降解材料制成的电子产品外壳、节能型电源管理系统等。同时,Devar还积极参与电子废弃物的回收和处理工作,推动循环经济的发展。这些努力不仅有助于减少环境污染和资源浪费,也提升了公司的社会责任感和品牌形象。

GTM公司的发展小趣事

Devar Inc公司自创立之初,就致力于在增强现实(AR)领域取得突破。经过多年的研发,公司成功推出了世界上首个用于AR的生成式AI神经网络。这项技术允许用户通过简单的文本提示创建3D对象和其他AR资产,极大地简化了AR内容的创作过程。Devar的AR平台结合了神经网络和云解决方案,让用户能够轻松创建并分享AR内容,开启了AR创作的新时代。

Freqtech Ohg公司的发展小趣事

Freqtech Ohg公司深知人才是企业发展的第一资源。因此,公司高度重视人才培养和团队建设工作。公司建立了完善的人才培养体系,通过内部培训、外部引进等多种方式,不断提升员工的专业技能和综合素质。同时,Freqtech还注重营造积极向上的企业文化氛围,激发员工的创新精神和团队合作精神。这些努力使得Freqtech拥有一支高素质、专业化的研发团队和管理团队,为公司的持续健康发展提供了有力的人才保障。

需要注意的是,以上故事均为虚构内容,旨在反映电子行业公司可能经历的发展路径和面临的挑战与机遇。对于Freqtech Ohg公司的具体情况,建议直接查阅其官方网站或相关权威报道以获取准确信息。

问答坊 | AI 解惑

大家第一个项目都做了多久啊?

最近调试项目都快吐了,想看看牛人们都用了多少时间完成自己第一个项目的啊,大家交流交流~…

查看全部问答>

VS2005里面,我自己创建的类(没有通过类向导创建)怎么突然不能增加成员函数了(昨天还是可以的),增加成员变量是可以的,怎么回事啊?!

VS2005里面,我自己创建的类(没有通过类向导创建)怎么突然不能增加成员函数了(昨天还是可以的),增加成员变量是可以的,怎么回事啊?!…

查看全部问答>

200分求解两个嵌入式问题,我块崩溃了

我的开发板是北京一家公司搞的叫YC2440,和S3C2440差不多 我的电脑主板是昂达N61,没有串口和并口。买了一根USB转串口,一根PCI转并口 调式用的是WIGGER接JTAG,AXD,RO和RW配置应该没问题,但是程序一跑就一直RUNNING IMAGE,这是第一个问题,我 ...…

查看全部问答>

请问VxWorks下网络上传的文件和直接拷贝的文件有什么不同吗?

我需要在目标机上放置大量的.DAT数据文件以供程序读取运行,将目标机硬盘接到主机上直接将这些文件拷贝到目标机硬盘上,然后恢复目标机即可正常运行,但是将这些文件直接通过网络ftp上传到目标机硬盘上后,却没能正常的读取这些文件。请问这可能是 ...…

查看全部问答>

请问一个usb的问题

问一下 pdiusbd12中检查它的型号的时候,为什么要读取两次? U32 tmp;                 D12Cmd = 0xfd;         tmp = D12Dat;         tmp = tmp…

查看全部问答>

HP的待遇以及文化!!

帮我拿个主意!!我最近去了一家培训公司面试,面试的是HP的电话技术支持工程师 400多个人面试,最后通过的就六个人,其中有我一个!!! 通知我明天去复试,是HP亲自面试,各位说我去不去??? 最主要的是这家公司要岗前培训,有费用4800多元 ...…

查看全部问答>

BKP寄存器改不了?

指令:  *(vu16 *) (BKP_BASE + 1) = 0x5a5b;…

查看全部问答>

MSP430的稳定性

         我在学校的项目和课程中接触过freescale的s12x单片机、51单片机和MSP430单片机。当初老师对我们说过,MSP430单片机是低功耗便携式设备的不二之选。但MSP430的稳定性不太好,在强磁场或高压复杂环 ...…

查看全部问答>

求个能用的2812开发板空板

最近申请了ti的样片,但是感觉自己做板子不划算,所以来论坛求块dsp2812开发板的空pcb 希望能外扩sram和flash,除了电源和地之外的引脚全部引出,最好是经过验证的,先谢谢了…

查看全部问答>