#include "ti_msp_dl_config.h"
#include "OLED.h"
#include "stdio.h"
volatile unsigned int delay_times = 0;
//搭配滴答定时器实现的精确ms延时
void delay_ms(unsigned int ms)
{
delay_times = ms;
while( delay_times != 0 );
}
int a=0;
volatile uint8_t gEchoData = 0;
int main(void)
{
uint8_t str[64];
SYSCFG_DL_init();
//NVIC_EnableIRQ(TIMER_0_INST_INT_IRQN);
// DL_TimerA_startCounter(TIMER_0_INST);
delay_ms(500) ;
OLED_Init();
OLED_Fill(0x00);
NVIC_ClearPendingIRQ(UART_2_INST_INT_IRQN); //先清除中断,防止直接进中断
NVIC_EnableIRQ(UART_2_INST_INT_IRQN);
while (1)
{
sprintf((char *)str, "%d", a);
OLED_ShowStr(0,4, str,2);
}
}
void UART_2_INST_IRQHandler(void)
{
switch (DL_UART_Main_getPendingInterrupt(UART_2_INST)) {
case DL_UART_MAIN_IIDX_RX:
gEchoData = DL_UART_Main_receiveData(UART_2_INST);
if (gEchoData==0x00)
{
a=0;
}
if (gEchoData==0x01)
{
a=1;
}
if (gEchoData==0x05)
{
a=2;
}
if (gEchoData==0x07)
{
a=3;
}
if (gEchoData==0x03)
{
a=4;
}
break;
default:
break;
}
}
void SysTick_Handler(void)
{
if( delay_times != 0 )
{
delay_times--;
}
}
配置:大部分与OLED那一篇文章相同,另外加上这些: