MSP432的相关定时器

发布者:雅逸之风最新更新时间:2022-07-22 来源: csdn关键字:MSP432  定时器  实时控制 手机看文章 扫描二维码
随时随地手机看文章

定时器

定时器模块是MSP432单片机中非常重要的资源,可以用来实现定时控制、延时、频率测量、脉宽测量以及信号产生等。此外,还可以在多任务的系统中作为中断信号实现程序的切换。例如在MSP432单片机实时控制和处理系统中,需要每隔一定时间就对处理对象进行采样,再对获得的数据进行处理,这就要用到定时信号。


MSP432单片机的定时器模块功能如下:


(1)看门狗定时器:基本定时,当程序发送错误时执行一个受控的系统重启动;


(2)16位定时器A:基本定时,支持捕获输入信号、比较产生PWM波形等功能;


(3)32位定时器:基本定时,功能基本同定时器A,但比定时器A灵活,功能更强大;


(4)定时时钟:基本定时,日历功能。


看门狗相关知识


看门狗相关知识

看门狗定时器

MSP432单片机内部集成了看门狗定时器,既可作为看门狗使用,也可为产生时间间隔进行进行定时。当用作看门狗时,若定时时间到,将产生一个系统复位信号;如果在用户应用程序中,不需要看门狗,可将看门狗定时器用作一般定时使用,在选定的时间间隔到达时,将发生定时中断。


看门狗定时器具有如下特点:


软件可编程的8种时间间隔选择;

看门狗模式;

定时计数模式;

对看门狗控制寄存器的更改受口令保护,若口令输入错误,则控制寄存器无法更改;

多种时钟源供选择;

可选择关闭看门狗以减少功耗;

时钟故障保护功能。

MSP432单片机的看门狗定时器逻辑结构框图如图17-1所示。由该图可知,MSP432单片机的看门狗定时器由中断产生逻辑单元、看门狗定时计数器、口令比较单元、看门狗控制寄存器、参考时钟选择逻辑单元等构成。

看门狗定时计数器(WDTCNT)

看门狗定时计数器是一个32位增计数器,不能通过软件直接访问其计数值。软件可通过看门狗控制寄存器(WDTCTL)控制看门狗定时计数器及配置其产生的时间间隔。看门狗定时计数器的参考时钟源可通过WDTSSEL控制位配置为SMCLK、ACLK、VLOCLK或BCLK,产生的时间间隔可通过WDTIS控制位选择,具体请参考相应的寄存器配置。


注意:当CPU停止工作时,看门狗定时计数器会自动配置为停止计数,这样可以在程序开发和调试中,不必禁用看门狗定时器,或者当CPU停止工作时,如果计数器被允许继续运行,则不会不断地出现看门狗启动的复位。


看门狗定时器模块可以通过配置WDTCTL寄存器,使其工作在看门狗模式或定时计数模式。WDTCTL是一个16位的带密码保护的读写寄存器。对WDTCTL的配置需要先在高字节写入密码Ah,写入其它内容都会产生错误。若产生错误后,读WDTCTL高字节的结果是069h。


看门狗模式

在一个上单复位清除后,看门狗定时器被默认配置为采用SMCLK作为参考时钟源,在计数到达之前,需要通过软件设置或停止WDT。例如,如果SMCLK默认来源于设置为3MHz的DCO,则会产生大约10.92ms的看门狗间隔窗口。用户必须在看门狗复位时间间隔期满或另一个复位信号产生之前,配置、停止或清除看门狗定时器。当看门狗定时器被配置工作在看门狗模式时,利用一个错误的口令密码操作看门狗控制寄存器(WDTCTL)或选择的时间间隔期满都将产生一个PUC复位信号,一个PUC复位信号可将看门狗定时器复位到默认状态。


定时计数模式

将WDTTMSEL控制位选择为1,看门狗定时器被配置为定时计数模式。这个模式可以被用来产生周期性中断,在定时计数模式下,当选定的时间间隔到来时,将置位看门狗定时计数中断标志位(WDTIFG),但并不产生PUC复位信号。当看门狗定时计数中断允许控制位(WDTIE)置位,而且在NVIC中启动看门狗定时计数中断时,CPU将响应WDTIFG中断请求。中断请求被响应后,单片机将自动清除看门狗定时计数中断标志。当然,也可以通过软件手动清除看门狗定时计数中断标志位。


看门狗定时器中断

看门狗定时器中断利用以下两个寄存器控制看门狗定时器中断;


(1)看门狗中断标志位WDTIFG;


(2)看门狗中断允许控制位WDTIE。


当看门狗定时器工作正在看门狗模式时,看门狗中断标志位WDTIFG来源于一个复位向量中断。复位中断复位程序可利用看门狗中断标志位WDTIFG来判定看门狗定时器是否产生了一个系统复位信号。若WDTIFG标志置位,看门狗定时器产生一个复位条件,要么复位定时时间到,要么口令密码错误。


当看门狗定时器工作在定时计数模式时,当定时时间到,将置位看门狗中断标志位WDTIFG。若WTDIE使能,则可响应看门狗定时计数中断。


时钟故障保护功能

看门狗定时器提供了一个时钟故障保护功能,确保在看门狗模式下,参考时钟不失效,这就意味着低功耗模式将有可能影响看门狗定时器参考时钟的选择。如果SMCLK或ACLK作为定时器参考时钟源时失效,看门狗定时器将自动选择VCOCLK作为其参考时钟源。当看门狗定时器工作于定时计数模式时,看门狗定时器没有时钟故障保护功能。


低功耗模式下的看门狗操作

MSP432单片机具有多种低功耗模式,在不同的低功耗模式下,启用不同的时钟信号。程序的需要以及所选时钟的类型决定了看门狗定时器的配置,例如如果用户想用低功耗模式3(LPM3),需要将时钟源设置为BCLK或VLOCLK。当不需要看门狗定时器时,可利用WDTHOLD控制位关闭看门狗计数器(WDTCNT),以减少单片机功耗。


看门狗定时器控制寄存器

看门狗定时控制寄存器(WDTCTL)列表如表6-8所示。

定时器A(Timer_A)

Timer_A定时器为16位定时器,具有高达7个捕获比较寄存器。Timer_A支持多路捕获/比较、PWM输出和定时计数。Timer_A也具有丰富的中断能力,当定时时间到或满足捕获/比较条件时,将可触发定时器A中断。


定时器A具有如下特点:


4种运行模式的异步16位定时/计数器;

参考时钟源可选择配置;

高达7个可配置的捕获/比较寄存器

可配置的PWM输出;

异步输入和输出锁存;

具有可对Timer_A中断快速响应的中断向量寄存器。

基本结构

工作模式

单次计数模式:计数器计数到0就产生中断并停止计数

循环计数模式:每次计数器计数到0便产生一次中断,随后重新载入初始值计数器的值,继续计数

特性

输入捕获;

输出比较;

脉宽调制PWM(Pulse width modulation mode)。

MSP432中的定时器——Timer32

Timer32模块包含两个独立的递减计数器,每个都能配置为16位或32位。

三种运行模式——自由运行模式、周期定时器模式或单次定时器模式

自由运行模式:在计数器计数至0时,继续从最大值开始倒计时

周期定时器模式:计数器以一定的间隔产生中断,并在计数至0时重新载入最初设定的值

单次定时器模式:指计数器只产生一次中断,即计数器计数至0时,定时器挂起,直到用户对其进行重新编程

timer_A基本运行模式

MSP432中的定时器——TimerA


4个TimerA模块

每个TimerA模块有7个捕获/比较寄存器

支持中断

时钟源——ACLK、SMCLK、TAxCLK、INCLK

四种计数模式——连续计数模式、增计数模式、增减计数模式、停止

连续计数模式

增计数模式

增减计数模式

结构框图

定时器A的结构框图如图19-1所示。可见,Timer_A定时器主要分为两个部分:主计数器和捕获/比较模块。主计数器负责定时、计时或计数,计数值(TAR寄存器的值)被送到各个捕获/比较模块中,它们可以在无需CPU千预的情况下根据触发条件与计数器值自动完成某些测量和输出功能。只需定时、计数功能时,可以只使用主计数器部分。在PWM调制、利用捕获测量脉宽、周期等应用中,还需要捕获/比较模块的配合。

16位定时器原理

16位定时器的计数值寄存器TAR在每个时钟信号的上升沿进行增加/减少,可利用软件读取TAR寄存器的计数值。此外,当定时时间到,并且产生溢出时,定时器可产生中断。置位定时器控制寄存器中的TACLR控制位可自动清除TAR寄存器的计数值;同时,在增加计数模式下,清除了时钟分频器和计数方向。


1、时钟源选择和分频器


定时器的参考时钟源可以来自内部时钟ACLK、SMCLK或者来自TACLK、INCLK引脚输入,通过TASSEL控制位进行选择。选择的时钟源首先通过PID控制位进行1、2、4、8分频,对于分频后的时钟,可通过TAIDEX控制位进行1、2、3、4、5、6、7、8分频。


2、Timer_A工作模式


Timer_A共有四种工作模式:停止模式、增计数模式、连续计数模式和增减计数模式,具体工作模式可以通过MC控制位进行选择,具体配置如表19-1所示。

(1)停止模式


停止模式用于定时器暂停,并不发生复位,所有寄存器现行的内容在停止模式结束后都可用。当定时器暂停后重新计数时,计数器将从暂停时的值开始以暂停前的计数方向计数。例如,停止模式前,Timer_A定时器工作于增减计数模式并处于下降计数方向,停止模式后,Timer_A仍然工作于增减计数模式下,从暂停前的状态开始继续沿着下降方向开始计数。如若不想这样,则可通过TAxCTL中的TACLR控制位来清除定时器的计数及方向记忆特性。


(2)增计数模式


比较寄存器TAxCCR0用作Timer_A增计数模式的周期寄存器,由于TAxCCR0为16位寄存器,所以在该模式下,定时器A连续计数值应小于0FFFFh。TAxCCR0的数值定义了定时的周期,计数器TAR可以增计数到TAxCCR0的值,当计数值与TAxCCR0的值相等(或定时器值大于TAxCCR0的值)时,定时器复位并从0开始重新计数。增计数模式下的计数过程如图19-2所示。

当定时器计数值计数到TAxCCR0时,置位CCR0中断标志位CCIFG。当定时器从TAxCCR0计数到0时,置位Timer_A中断标志位TAIFG。增计数模式下中断标志位设置过程如图19-3所示。


(3)连续计数模式


在连续计数模式时,Timer_A定时器增计数到0FFFFh之后从0开始重新计数,如此往复。连续计数模式下的计数过程如图19-4所示。

当定时器计数值从0FFFFh计数到0时,置位Timer_A中断标志位TAIFG,连续计数模式下的中断标志位如图19-5所示。

连续计数模式的典型应用如下:


1)产生多个独立的时序信号:利用捕获比较寄存器捕获各种其他外部事件发生的定时器数据;


2)产生多个定时信号:在连续计数模式下,每完成一个TAxCCRn(其中n取值为0~6)计数间隔,将产生一个中断,在中断服务程序中,将下一个时间间隔计数值赋给TAxCCRn,图19-6表示了利用两个捕获比较器TAxCCR0和TAxCCR1产生两个定时信号t0和t1。在这种情况下,定时完全通过硬件实现,不存在软件中断响应延迟的影响,具体实现示意图如图19-6。

(4)增减计数模式


需要对称波形的情况往往可以使用增减计数模式。在该模式下,定时器先增计数到TAxCCR0的值,然后反方向减计数到0。计数周期仍由TAxCCR0定义,它是TAxCCR0值的2倍。增减计数模式下的计数过程如图19-7所示。

在增减计数模式下,TAxCCR0中断标志位CCIFG和Timer_A中断标志位TAIFG在一个周期内仅设置位一次,当定时器计数器增计数从TAxCCR0-1计数到TAxCCR0时,置位TAxCCR0中断标志位CCIFG。当定时器计数器减计数从0001h到0000h时,置位Timer_A中断标志位TAIFG。增减计数模式下中断标志位的设置过程如图19-8所示。

捕获-比较功能

除了主计数器之外,Timer_A定时器还具有高达7个相同的捕获/比较模块TAxCCRn(其中n等于0~6),任何一个捕获/比较模块都可以用于捕获事件发生的时间或产生的时间间隔。每个捕获/比较模块都有单独的模式控制寄存器以及捕获/比较值寄存器。

在比较模式下,每个捕获/比较模块将不断地将自身的比较值寄存器与主计数器的计数值进行比较,一旦相等,就将自动改变定时器输出引脚的输出电平,Timer_A具有8种输出模式,从而可在无需CPU千预的情况下输出PWM波、可变单稳态脉冲、移向方波、相位调制等常用波形。

在捕获模式下,用定时器输入引脚电平跳变触发捕获电路,将此刻主计数器的计数值自动保存到相应的捕获值寄存器中。可以用于测频率、测周期、测脉宽、测占空比等需要获得波形中精确时间量的场合。

捕获/比较模块的逻辑结构如图19-1所示,在此以捕获/比较模块TAxCCR6为例。

(1)捕获模式

当CAP控制位设置为1时,捕获/比较模块配置为捕获模式。捕获模式被用于捕获事件发生的时间。捕获输入CCIxA和CCIxB可连接外部引脚或内部信号,这需通过CCIS控制位进行配置。可通过CM控制位将捕获输入信号触发沿配置为上升沿触发、下降沿触发或两者都触发。捕获事件在所选输入信号触发沿产生,如果产生捕获事件,定时器将完成以下工作:


1)主计数器计数值复制到TAxCCRn寄存器中;


2)置位中断标志位CCIFG;


输入信号的电平可在任意时刻通过CCI控制位进行读取。捕获信号可能会和定时器时钟不同步,并导致竞争条件的产生,将SCS控制位置位可在下个定时器时钟使捕获同步。捕获信号示意图如图19-10所示。

如果第二次捕获在第一次捕获的值被读取之前发生,捕获比较器就会产生一个溢出逻辑,在此情况下,将置位COV标志位,如图19-11所示。注意COV标志位必须通过软件清除。

(2)比较模式

当CAP控制位设为0时,捕获/比较模块工作在比较模式。比较模式用来产生PVM输出信号或者在特定的时间间隔产生中断。此时TAxCCRn的值可由软件写入,并通过比较器与主计数器的计数值TAR进行比较,当TAR计数到TAxCCRn时,将依次产生以下事件:


置位中断标志位CCIFG

产生内部信号EQUn=1;

EQUn信号根据不同的输出模式触发输出逻辑;

输入信号CCI被锁存到SCCI。

每个捕获/比较模块都包含一个输出单元,用于产生输出信号,例如PWM信号等。每个输出都有8种工作模式,可产生EQUx的多种信号。输出模式可通过OUTMOD控制位进行定义,具体列表如表19-2所示。

1)增计数模式下,定时器比较输出


在增计数模式下,当TAR增加到TAxCCRn或从TAxCCR0计数到0时,定时器输出信号按选择的输出模式发生变化。实例如图19-12所示,在该实例中利用了TAxCCR0和TAxCCR1。

2)连续计数模式下,定时器比较输出


在连续计数模式下,定时器输出波形与增计数模式一样,只是计数器在增计数到TAxCCRO后还要继续增计数到OFFFFh,这样就延长了计数器计数到TAxCCR1数值的时间。在连续计数模式下的输出波形如图19-13所示,在该示例中同样利用TAxCCRo和TAxCCR1。

3)增减计数模式下,定时器比较输出

Figure 19-14.Output Example

Timer_A中断

16位定时器Timer_A具有两个中断向量,分别如下:


TAxCCR0的中断向量CCIFG0;

具有其余TAxCCRn的中断标志CCIFGn及TAIFG的中断向量TAIV。

在捕获模式下,当定时计数器TAR的值被捕获到TAxCCRn寄存器内时,置位相关的CCIFGn中断标志位。在比较模式下,当定时计数器TAR的值计数到TAxCCRn的值时,置位相关的CCIFGn中断标志位。也可利用软件置位或清除任意一个CCIFG中断标志位,当相关的CCIE中断允许位置位,CCIFGn中断标志位将请求产生中断。

TAxIV中断主要包括TAxCCRn的中断标志CCIFGn和TAIFG中断标志。中断向量寄存器可被用来判断当前被挂起的Timer_A中断,之后通过查中断向量表得到中断服务程序的入口地址,并将其添加到程序计数器中,程序将自动转入中断服务程序。禁用Timer_A中断功能并不影响TAxIV中断向量寄存器的值。


Timer_A寄存器

Timer_A具有丰富的寄存器资源供用户使用,详细列表如表所示。

Table 19-3.Timer_A Registers

连续计数模式和增计数模式实例

连续计数模式

在CCS中导入所安装的SDK的目录下C:tisimplelink_msp432p4_sdk_3_40_01_02examplesnortosMSP_EXP432P401Rdriverlibtimer_a_continuous_overflow_interruptccs 的工程文件


导入后打开timer_a_continuous_overflow_interrupt.c文件:


/* DriverLib Includes */

#include


/* Standard Includes */

#include

/* Statics */

const Timer_A_ContinuousModeConfig continuousModeConfig =

{

        TIMER_A_CLOCKSOURCE_ACLK,           // ACLK Clock Source

        TIMER_A_CLOCKSOURCE_DIVIDER_1,      // ACLK/1 = 32khz

        TIMER_A_TAIE_INTERRUPT_ENABLE,      // Enable Overflow ISR

        TIMER_A_DO_CLEAR                    // Clear Counter

};


int main(void)

{

    /* Stop watchdog timer */

    MAP_WDT_A_holdTimer();


    /* Configuring P1.0 as output */

    MAP_GPIO_setAsOutputPin(GPIO_PORT_P1, GPIO_PIN0);

    MAP_GPIO_setOutputLowOnPin(GPIO_PORT_P1, GPIO_PIN0);


    /* Starting and enabling ACLK (32kHz) */

    MAP_CS_setReferenceOscillatorFrequency(CS_REFO_128KHZ);

    MAP_CS_initClockSignal(CS_ACLK, CS_REFOCLK_SELECT, CS_CLOCK_DIVIDER_4);


    /* Configuring Continuous Mode */

    MAP_Timer_A_configureContinuousMode(TIMER_A0_BASE, &continuousModeConfig);


    /* Enabling interrupts and going to sleep */

    MAP_Interrupt_enableSleepOnIsrExit();

    MAP_Interrupt_enableInterrupt(INT_TA0_N);

    

    /* Enabling MASTER interrupts */

    MAP_Interrupt_enableMaster();  


    /* Starting the Timer_A0 in continuous mode */

    MAP_Timer_A_startCounter(TIMER_A0_BASE, TIMER_A_CONTINUOUS_MODE);


    while(1)

    {

        MAP_PCM_gotoLPM0();

    }


}


//******************************************************************************

//

//This is the TIMERA interrupt vector service routine.

//

//******************************************************************************

void TA0_N_IRQHandler(void)

{

    MAP_Timer_A_clearInterruptFlag(TIMER_A0_BASE);

    MAP_GPIO_toggleOutputOnPin(GPIO_PORT_P1, GPIO_PIN0);

}


增计数模式

C:tisimplelink_msp432p4_sdk_3_40_01_02examplesnortosMSP_EXP432P401Rdriverlibtimer_a_upmode_gpio_toggleccs 的工程文件


导入后打开timer_a_upmode_gpio_toggle.c文件:


/* DriverLib Includes */

#include


/* Application Defines  */

#define TIMER_PERIOD    0x2DC6  //11718


/* Timer_A UpMode Configuration Parameter */

const Timer_A_UpModeConfig upConfig =

{

        TIMER_A_CLOCKSOURCE_SMCLK,              // SMCLK Clock Source SMCLK时钟默认3MHz

        TIMER_A_CLOCKSOURCE_DIVIDER_64,          // 64分频 SMCLK/64 = 46875Hz

        TIMER_PERIOD,                           // 5000 tick period

        TIMER_A_TAIE_INTERRUPT_DISABLE,         // Disable Timer interrupt

        TIMER_A_CCIE_CCR0_INTERRUPT_ENABLE ,    // Enable CCR0 interrupt

        TIMER_A_DO_CLEAR                        // Clear value

};

//周期=1/46785*11718=0.249984s

[1] [2]
关键字:MSP432  定时器  实时控制 引用地址:MSP432的相关定时器

上一篇:MSP432的ADC模数转换
下一篇:MSP432的PWM功能实现

推荐阅读最新更新时间:2024-11-13 11:14

51单片机实验——用定时器0实现流水灯,要求每个led轮流显示1s
1.实验题目: 用定时器0实现流水灯,要求每个led轮流显示1s。 2.KEIL代码 #include reg51.h void main() { TMOD &=0X0F; TMOD |=0x01; TH0 = (65536 - 50000)/256;//高四位初值 TL0 = (65536 - 50000)%256;//低四位初值,每隔50ms溢出 EA = 1; //开总中断 ET0 = 1; //T1开时定时器溢出 TR0 = 1; //开启定时器 P1=0xff; while(1); } void Time0(void) interrupt 1 //定时中断 {
[单片机]
51单片机实验——用<font color='red'>定时器</font>0实现流水灯,要求每个led轮流显示1s
第9课 定时器
在对单片机应用项目进行编程时,经常需要插入一定的延时程序,此时一般有两种方案可选择,一是采用软件手段 插入一段延时程序,二是采用单片机内部的硬件资源 定时器。对于软件手段,我们在前面的课程已经详细讲到过,它最大的缺点就是占用单片机的 机时 ,也就是耗费单片机的 精力 ,从而降低了单片机的工作效率。而定时器则不同,它是单片机内部一个独立的功能模块,定时器一旦设置后,定时器便自动开始计时,当计时时间满后,便产生相应的中断,去处于中断函数内的程序,而在计时这段时间内,定时器和CPU是分别独立工作的,CUP此时就可以有时间去做其它的事情。所以为了提高单片机的工作效率和实现精确的延时,目前几乎所有的半导休生产厂商在设计单片机时,在内部
[单片机]
第9课 <font color='red'>定时器</font>
PIC单片机之定时器(TMR1)
之前我们讲解了TMR0定时器,现在我们来讲解16位定时器TMR1,TMR1和TMR0最大的差别就是TMR1是16位定时器。所以TMR1两个八位寄存器 TMRH 和TRMRL组成.许多有关定时器的基础知识我就不在赘述了可以看TMR0的文章。我单刀直入讲实例了。 实例讲解:如果我们想隔0.5S输出个高电平,0.5S输出个低电平那要怎么做呢? 首先:先选择合适的时钟频率和预分频。这个只要满足需要的延时时间就行了。这里我们选择时钟为4MHZ,预分频为1:8; 然后:设置TMR1定时器的初始值,初始值的作用即是设置TMR1的溢出时间,(设置溢出时间的原因是) 比如在初始值为0的情况下,定时器需要经过524288us的时间才溢出, 如果初始
[单片机]
STM32CubeMx定时器编码器模式基本使用方法
前言: 增量式编码器在实际应用中还是很常见。 stm32的定时器带的也有编码器模式。 所用的编码器是有ABZ三相,其中ab相是用来计数,z相输出零点信号。 AB相根据旋转的方向不同,输出的波形如下图所示: 第一步:具体配置如下图: 重点说明: 一、如果编码模式设置为 Encoder Mode TI1 and TI2 则会默认检测AB相的上升沿与下降沿; 每一个上升沿和下降沿都触发计数,所以每转一格计数器就会+4;那么上图计数周期设置为400; 也就是编码器转100格,计数器就会置零,重新开始计数! 二、关于Polarity参数:这个参数的意思是在检测到上升沿的时候就触发encoder捕获AB相的值,而并不是这里设置的是上
[单片机]
STM32CubeMx<font color='red'>定时器</font>编码器模式基本使用方法
stm32 定时器知识总结
一 定时器的种类 STM32F103系列有11个定时器: 2个高级定时器(TIM1,TIM8) 4个通用定时器(TIM2,TIM3,TIM4,TIM5) 2个基本定时器(TIM6,TIM7) 2个看门狗定时器(IWDG,WWDG) 1个系统滴答定时器 二 定时器主要功能 基本定时器(TIM6,TIM7)的主要功能就是定时,由各自的可编程预分频器驱动。 通用定时器(TIM2~TIM5)除了基本的定时功能以外,还具有输入捕获和输出比较,产生pwm波形的功能。 高级定时器除了具有以上两种定时器的功能以外,还具有输出互补带死区的信号,以及刹车等功能。 看门狗定时器用于监测程序是否故障的,在超出一定时间程序跑飞
[单片机]
分享两种STC15定时器模拟PWM的方法
刚刚搜了一下,发现坛里还没有这样分析PWM的帖子,然后发了一个。 手电LED控制或马达转速控制都离不开PWM,下面有两种方法可以模拟PWM的。如果不正确希望各位指教。 //用定时器装载方式模拟PWM,这种方法PWM周期短,分辩率高,1毫秒内可以做到11000格分辩率, //缺点:高低电平会的百分之一格不受控制 #include reg51.h #include intrins.h sfr P0M1 = 0x93; sfr P0M0 = 0x94; sfr P1M1 = 0x91; sfr P1M0 = 0x92; sfr P2M1 = 0x95; sfr P2M0 = 0x96; sfr P3M1 = 0xb1; sfr P
[单片机]
分享两种STC15<font color='red'>定时器</font>模拟PWM的方法
(STC12 默认12分频)定时器用法
#include reg52.h #define uchar unsigned char #define uint unsigned int uchar num,LED; void TR0_()interrupt 1 { TMOD=0x01; //定时器0的工作方式1 TH0=(65535-50000)/256;//计时50ms一次 TL0=(65535-50000)%256; num++; } void main() { TMOD=0x01; //定时器0的工作方式1 TH0=(65535-50000)/256; TL0=(65535-50000)%256; EA=1; //开总中断 ET0=1; //开定时器0 TR
[单片机]
mini2440硬件篇之PWM定时器
1. 硬件原理 2440有5个16位定时器,其中0、1、2、3有PWM功能,有一根输出引脚,可以产生周期性高低电平变化。定时器4没有输出引脚。 2. 芯片手册 3. mini2440电路图 4. S3C2440寄存器 定时器时钟源是PCLK,先通过2个预分频器TCFG0 TCFG1降低频率,降频后就确定了定时器工作频率。初始设定值TCMPBn(用于比较反转输出电平)、TCNTBn。TCON控制定时器启动。TCMPBn的值装入TCMPn,TCNTBn的值装入TCNTn,每个定时器周期,TCNTn减1,可以通过TCNTOn读取计数值。当和TCMPn相等时,反转电平输出。减到0时,再次反转,如果TCON设置自动加载,则重复如上步骤。
[单片机]
mini2440硬件篇之PWM<font color='red'>定时器</font>
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved