|
本帖最后由 木叶留春 于 2019-8-2 08:56 编辑
void main(void)
{
WDT_A_hold(WDT_A_BASE);
CS_setDCOFreq(CS_DCORSEL_1, CS_DCOFSEL_3 );//本来想在这里设置16Mhz的,但是8m以下才能正常工作,16m时钟系统直接崩溃了,我也郁闷了半天,所以设成了8m的!
CS_initClockSignal(CS_SMCLK,CS_DCOCLK_SELECT,CS_CLOCK_DIVIDER_1);
CS_initClockSignal(CS_MCLK,CS_DCOCLK_SELECT,CS_CLOCK_DIVIDER_1);
// CS_setDCOFreq(CS_DCORSEL_1, CS_DCOFSEL_4 );
PM5CTL0 &= ~LOCKLPM5; //解锁单片机io口
//
//
// // CS_bypassHFXT();
// CS_setDCOFreq(CS_DCORSEL_1 ,CS_DCOFSEL_4 ); //设置系统时钟16m
// CS_setExternalClockSource(32768,0); //辅助时钟
//
//
// delay(1);
//
// CS_initClockSignal(CS_MCLK,CS_DCOCLK_SELECT,CS_CLOCK_DIVIDER_1 );//配置系统时钟
// CS_initClockSignal(CS_SMCLK,CS_DCOCLK_SELECT,CS_CLOCK_DIVIDER_1 );//配置辅助时钟
CS_turnOnSMCLK();
//// CS_initClockSignal(CS_MCLK,CS_DCOCLK_SELECT,CS_CLOCK_DIVIDER_1 );//配置系统时钟
Init_LCD();
display(CS_getSMCLK()/100);
// CS_setExternalClockSource(32768,0); //设置aclk时钟
//串口io口初始化
GPIO_setAsPeripheralModuleFunctionInputPin(
GPIO_PORT_P4,
GPIO_PIN2 + GPIO_PIN3,
GPIO_SECONDARY_MODULE_FUNCTION
);
GPIO_setAsPeripheralModuleFunctionInputPin(
GPIO_PORT_P2,
GPIO_PIN0 + GPIO_PIN1,
GPIO_SECONDARY_MODULE_FUNCTION
);
EUSCI_A_UART_initParam param = {0};
//115200
param.selectClockSource = EUSCI_A_UART_CLOCKSOURCE_SMCLK;
param.clockPrescalar = 4;
param.firstModReg = 3;
param.secondModReg = 5;
param.parity = EUSCI_A_UART_NO_PARITY;
param.msborLsbFirst = EUSCI_A_UART_LSB_FIRST;
param.numberofStopBits = EUSCI_A_UART_ONE_STOP_BIT;
param.uartMode = EUSCI_A_UART_MODE;
param.overSampling = 1;
EUSCI_A_UART_init(EUSCI_A0_BASE, ¶m);
EUSCI_A_UART_enable(EUSCI_A0_BASE);
EUSCI_A_UART_clearInterrupt(EUSCI_A0_BASE,EUSCI_A_UART_RECEIVE_INTERRUPT_FLAG|EUSCI_A_UART_TRANSMIT_INTERRUPT_FLAG);
EUSCI_A_UART_enableInterrupt(EUSCI_A0_BASE,EUSCI_A_UART_RECEIVE_INTERRUPT_FLAG|EUSCI_A_UART_TRANSMIT_INTERRUPT_FLAG);
__enable_interrupt();
GPIO_setAsOutputPin(GPIO_PORT_P1,GPIO_PIN0);
//
// Init_LCD();
// displayScrollText("WELCOME TO THE FR6989 LAUNCHPAD");
for(;;)
{
GPIO_setOutputHighOnPin(GPIO_PORT_P1,GPIO_PIN0);
delay(100);
GPIO_setOutputLowOnPin(GPIO_PORT_P1,GPIO_PIN0);
delay(100);
EUSCI_A_UART_transmitData(EUSCI_A0_BASE,'a');
}
}
#pragma vector=USCI_A0_VECTOR
__interrupt void uarl(void)
{
uint8_t sta;
uint8_t dat;
// sta=EUSCI_A_UART_getInterruptStatus(EUSCI_A0_BASE,EUSCI_A_UART_TRANSMIT_COMPLETE_INTERRUPT_FLAG);
// EUSCI_A_UART_clearInterrupt(EUSCI_A0_BASE,EUSCI_A_UART_RECEIVE_INTERRUPT_FLAG|EUSCI_A_UART_TRANSMIT_INTERRUPT_FLAG);
if(EUSCI_A_UART_getInterruptStatus(EUSCI_A0_BASE,EUSCI_A_UART_RECEIVE_INTERRUPT_FLAG)==EUSCI_A_UART_RECEIVE_INTERRUPT_FLAG)
{
EUSCI_A_UART_clearInterrupt(EUSCI_A0_BASE,EUSCI_A_UART_RECEIVE_INTERRUPT_FLAG);
dat=EUSCI_A_UART_receiveData(EUSCI_A0_BASE);
EUSCI_A_UART_transmitData(EUSCI_A0_BASE,dat);
}
if(EUSCI_A_UART_getInterruptStatus(EUSCI_A0_BASE,EUSCI_A_UART_TRANSMIT_INTERRUPT_FLAG)==EUSCI_A_UART_TRANSMIT_INTERRUPT_FLAG)
{
EUSCI_A_UART_clearInterrupt(EUSCI_A0_BASE,EUSCI_A_UART_TRANSMIT_INTERRUPT_FLAG);
}
}
这是我写的,但是就是串口不出数据,这是哪里的问题?求大神指导 |
|