TI CC2530 學習筆記-11-NewBit-CC2530-UART0-定時傳送
阿新 • • 發佈:2018-11-11
TI CC2530 學習筆記-11-NewBit-CC2530-UART0-定時傳送
功能:用定時器3製作一個時鐘,每當秒更新時將時間列印後從串列埠送出。使用指令可以設定時間,設定格式為"#hh:mm:nn"。
- 配置定時器,UART,LED
halMcuWaitUs(10000); //等待時間穩定,約10ms CLKCONCMD &= ~0x47; //選擇外部32MHZ時鐘, 不分頻 //TICKSPD不改變,保持為0x01,即定時器標記頻率為16MHz while( (CLKCONSTA & 0x47) != 0x00 ); //切換時鐘源後再次等待穩定 P0DIR |= 0x40; //配置IO為輸出 /* 初始化串列埠 */ P0SEL |= 0x0C; //將P02,P03設為外設功能 PERCFG &= ~0x01; //串列埠0佔用P02 P03 U0CSR = 0X80; //USART模式設為UART模式 U0UCR = 0x00; //禁用流控,禁用奇偶檢驗,1位停止位 U0CSR |= 0x40; //允許接收 U0GCR |= 8; //9600 U0BAUD = 59; IEN0 |= 0x04; //開串列埠0接收中斷 /* 初始化定時器4*/ T4CTL = 0xE2; //128分頻(0.125Mhz),模模式 T4CCTL0 = 0x04; //比較模式 T4CC0 = 125; //溢位值 T4CTL |= 0x08; T4CCTL0 |= 0x40;//開T4通道0中斷 T4IE = 1; //開T4中斷 /* 初始化定時器3 */ T3CTL = 0xE2; //128分頻(0.125Mhz),模模式 T3CCTL0 = 0x04; //比較模式 T3CC0 = 125; //溢位值 T3CTL |= 0x08; //開啟溢位中斷 T3CCTL0 |= 0x40;//開T3通道0中斷 T3IE = 1; //定時器3中斷使能 T3CTL |= 0x10; //啟動定時器 IEN0 |= 0X80; //開總中斷 LED_R_IO = LED_R_ACTIVE;//點亮LED
2.在main函式的while迴圈輸出時間和檢測是否有設定時間
while(1) { if (culUartRxBufferRead(uartRxBuf, &length) == SUCCESS)//UART收到資料 { if (length == 9)//判斷資料長度 { culTimeSet(uartRxBuf); //設定時間 } } if (gTimeBrush == 1)//判斷重新整理時間標誌位 { culTimePutOut();//列印時間 gTimeBrush = 0; //清除標誌位 } } }
- 定時器3中斷函式,用於計算時分秒
#pragma vector = T3_VECTOR __interrupt void T3_ISR( void ) { T3IF = 0; //可不清中斷標誌,硬體自動完成 gMsCountForTime ++; if (gMsCountForTime >= 1000)//1000ms { gMsCountForTime = 0; gTimeBrush = 1; if (gTime[2] < 59) { gTime[2] ++; //秒加1 } else { gTime[2] = 0; if (gTime[1] < 59) { gTime[1] ++; //分鐘加1 } else { gTime[1] = 0; if (gTime[0] < 23) { gTime[0] ++; //小時加1 } else { gTime[0] = 0; //24:00 -> 0:00 } } } } }