LaunchPad(MSP430G2553) - 官方例程(5)

2019-08-31 17:51

void ConfigureTimerPwm(void) {

timerMode = TIMER_PWM_MODE;

TACCR0 = TIMER_PWM_PERIOD; // TACTL = TASSEL_2 | MC_1; // TACLK = SMCLK, Up mode. TACCTL0 = CCIE;

TACCTL1 = CCIE + OUTMOD_3; // TACCTL1 Capture Compare TACCR1 = 1; }

void ConfigureTimerUart(void) {

timerMode = TIMER_UART_MODE; // Configure TimerA0 UART TX

CCTL0 = OUT; // TXD Idle as Mark

TACTL = TASSEL_2 + MC_2 + ID_3; // SMCLK/8, continuous mode P1SEL |= TXD + RXD; // P1DIR |= TXD; // }

// Function Transmits Character from TXByte void Transmit() {

BitCnt = 0xA; // Load Bit counter, 8data + ST/SP while (CCR0 != TAR) // Prevent async capture CCR0 = TAR; // Current state of TA counter CCR0 += Bitime; // Some time till first bit

TXByte |= 0x100; // Add mark stop bit to TXByte TXByte = TXByte << 1; // Add space start bit

CCTL0 = CCIS0 + OUTMOD0 + CCIE; // TXD = mark = idle while ( CCTL0 & CCIE ); // Wait for TX completion }

// Timer A0 interrupt service routine #pragma vector=TIMER0_A0_VECTOR __interrupt void Timer_A (void) {

if (timerMode == TIMER_UART_MODE) {

CCR0 += Bitime; // Add Offset to CCR0 if (CCTL0 & CCIS0) // TX on CCI0B? {

if ( BitCnt == 0)

CCTL0 &= ~ CCIE; // All bits TXed, disable interrupt else {

CCTL0 |= OUTMOD2; // TX Space if (TXByte & 0x01)

CCTL0 &= ~ OUTMOD2; // TX Mark TXByte = TXByte >> 1; BitCnt --; } } } else {

if (tempPolarity == TEMP_HOT) LED_OUT |= LED1;

if (tempPolarity == TEMP_COLD) LED_OUT |= LED0;

TACCTL0 &= ~CCIFG; } }

#pragma vector=TIMER0_A1_VECTOR __interrupt void ta1_isr(void) {

TACCTL1 &= ~CCIFG;

if (applicationMode == APP_APPLICATION_MODE) LED_OUT &= ~(LED0 + LED1);

else

LED_OUT ^= (LED0 + LED1); }

void InitializeClocks(void) {

BCSCTL1 = CALBC1_1MHZ; // Set range DCOCTL = CALDCO_1MHZ;

BCSCTL2 &= ~(DIVS_3); // SMCLK = DCO / 8 = 1MHz }

void InitializeButton(void) // Configure Push Button {

BUTTON_DIR &= ~BUTTON; BUTTON_OUT |= BUTTON; BUTTON_REN |= BUTTON; BUTTON_IES |= BUTTON; BUTTON_IFG &= ~BUTTON; BUTTON_IE |= BUTTON; }

void InitializeLeds(void) {

LED_DIR |= LED0 + LED1; LED_OUT &= ~(LED0 + LED1); }

/* ************************************************************* * Port Interrupt for Button Press

* 1. During standby mode: to exit and enter application mode * 2. During application mode: to recalibrate temp sensor

* *********************************************************** */ #pragma vector=PORT1_VECTOR __interrupt void PORT1_ISR(void)

{

BUTTON_IFG = 0;

BUTTON_IE &= ~BUTTON; /* Debounce */ WDTCTL = WDT_ADLY_250;

IFG1 &= ~WDTIFG; /* clear interrupt flag */ IE1 |= WDTIE;

if (applicationMode == APP_APPLICATION_MODE) {

tempCalibrated = tempAverage; calibrateUpdate = 1; } else {

applicationMode = APP_APPLICATION_MODE; // Switch from STANDBY to APPLICATION MODE

__bic_SR_register_on_exit(LPM3_bits); } }

#pragma vector=WDT_VECTOR __interrupt void WDT_ISR(void) {

IE1 &= ~WDTIE; /* disable interrupt */ IFG1 &= ~WDTIFG; /* clear interrupt flag */

WDTCTL = WDTPW + WDTHOLD; /* put WDT back in hold state */ BUTTON_IE |= BUTTON; /* Debouncing complete */ }

// ADC10 interrupt service routine #pragma vector=ADC10_VECTOR __interrupt void ADC10_ISR (void) {

__bic_SR_register_on_exit(CPUOFF); // Return to active mode }


LaunchPad(MSP430G2553) - 官方例程(5).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:泰山版五年级下册品社第三单元检测题

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: