×
单片机 > 单片机程序设计 > 详情

MSP-EXP430F5529LP开发板003-定时器库函数

发布时间:2020-08-31 发布时间:
|

430的定时器的有点类似于51单片机,利用定时器实现P1.0口LED灯1s闪烁代码如下


#include "wdt_a.h"

#include "gpio.h"

#include "timer_a.h"

#define COMPARE_VALUE 32768

int main( void )

{

  volatile unsigned int i;

  WDT_A_hold(WDT_A_BASE);

  

  GPIO_setAsOutputPin(GPIO_PORT_P1,GPIO_PIN0);

  GPIO_setOutputHighOnPin(GPIO_PORT_P1,GPIO_PIN0);

  

   //Start timer in continuous mode sourced by ACLK

  Timer_A_initContinuousModeParam initContParam = {0};

  initContParam.clockSource = TIMER_A_CLOCKSOURCE_ACLK;

  initContParam.clockSourceDivider = TIMER_A_CLOCKSOURCE_DIVIDER_1;

  initContParam.timerInterruptEnable_TAIE = TIMER_A_TAIE_INTERRUPT_DISABLE;

  initContParam.timerClear = TIMER_A_DO_CLEAR;

  initContParam.startTimer = false;

  Timer_A_initContinuousMode(TIMER_A1_BASE, &initContParam);

 

  //Initiaze compare mode

  Timer_A_clearCaptureCompareInterrupt(TIMER_A1_BASE,TIMER_A_CAPTURECOMPARE_REGISTER_0);

  Timer_A_initCompareModeParam initCompParam = {0};

  initCompParam.compareRegister = TIMER_A_CAPTURECOMPARE_REGISTER_0;

  initCompParam.compareInterruptEnable = TIMER_A_CAPTURECOMPARE_INTERRUPT_ENABLE;

  initCompParam.compareOutputMode = TIMER_A_OUTPUTMODE_OUTBITVALUE;

  initCompParam.compareValue = COMPARE_VALUE;

  Timer_A_initCompareMode(TIMER_A1_BASE, &initCompParam);

  

  Timer_A_startCounter(TIMER_A1_BASE,TIMER_A_CONTINUOUS_MODE);

  //Enter LPM0, enable interrupts

  __bis_SR_register(LPM0_bits + GIE);

 

  //For debugger

  __no_operation();

  while(1)                                  // continuous loop

  {

  

  } 

}

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

//

//This is the TIMER1_A3 interrupt vector service routine.

//

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

#if defined(__TI_COMPILER_VERSION__) || defined(__IAR_SYSTEMS_ICC__)

#pragma vector=TIMER1_A0_VECTOR

__interrupt

#elif defined(__GNUC__)

__attribute__((interrupt(TIMER1_A0_VECTOR)))

#endif

void TIMER1_A0_ISR (void)

{

    uint16_t compVal = Timer_A_getCaptureCompareCount(TIMER_A1_BASE,TIMER_A_CAPTURECOMPARE_REGISTER_0)+COMPARE_VALUE;

    //Toggle P1.0

    GPIO_toggleOutputOnPin(GPIO_PORT_P1,GPIO_PIN0);

    //Add Offset to CCR0

    Timer_A_setCompareValue(TIMER_A1_BASE,TIMER_A_CAPTURECOMPARE_REGISTER_0,compVal);

}



『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
51单片机CO2检测显示程序解析