|
楼主
查看: 4498回复: 3
发表于 2019-7-20 15:36:11
只看该作者
#include <ti/devices/msp432p4xx/driverlib/driverlib.h>
/* Standard Includes */
#include <stdint.h>
#include <stdbool.h>
#include "stdio.h"
void UART_SentByte(uint8_t ch);
void UART_SentString(char *str);
const eUSCI_UART_Config uartConfig =
{
EUSCI_A_UART_CLOCKSOURCE_SMCLK, // SMCLK Clock Source
6, // BRDIV = 78
8, // UCxBRF = 2
0x20, // UCxBRS = 0
EUSCI_A_UART_NO_PARITY, // No Parity
EUSCI_A_UART_LSB_FIRST, // LSB First
EUSCI_A_UART_ONE_STOP_BIT, // One stop bit
EUSCI_A_UART_MODE, // UART mode
EUSCI_A_UART_OVERSAMPLING_BAUDRATE_GENERATION // Oversampling
};
//![Simple UART Config]
int main(void)
{
/* Halting WDT */
MAP_WDT_A_holdTimer();
/* Selecting P1.2 and P1.3 in UART mode */
MAP_GPIO_setAsPeripheralModuleFunctionInputPin(GPIO_PORT_P1,
GPIO_PIN2 | GPIO_PIN3, GPIO_PRIMARY_MODULE_FUNCTION);
MAP_GPIO_setAsOutputPin(GPIO_PORT_P1,GPIO_PIN0);
MAP_GPIO_setAsOutputPin(GPIO_PORT_P2,GPIO_PIN0 | GPIO_PIN1 | GPIO_PIN2);
MAP_GPIO_setOutputLowOnPin(GPIO_PORT_P1,GPIO_PIN0);
MAP_GPIO_setOutputLowOnPin(GPIO_PORT_P2,GPIO_PIN0 | GPIO_PIN1 | GPIO_PIN2);
/* Setting DCO to 12MHz */
CS_setDCOCenteredFrequency(CS_DCO_FREQUENCY_12);
//![Simple UART Example]
/* Configuring UART Module */
MAP_UART_initModule(EUSCI_A0_BASE, &uartConfig);
/* Enable UART module */
MAP_UART_enableModule(EUSCI_A0_BASE);
/* Enabling interrupts */
MAP_UART_enableInterrupt(EUSCI_A0_BASE, EUSCI_A_UART_RECEIVE_INTERRUPT);
MAP_Interrupt_enableInterrupt(INT_EUSCIA0);
MAP_Interrupt_enableSleepOnIsrExit();
MAP_Interrupt_enableMaster();
//![Simple UART Example]
UART_SentString("我说:");
UART_SentString("小猴子\n");
while(1)
{
MAP_PCM_gotoLPM0();
}
}
/* EUSCI A0 UART ISR - Echoes data back to PC host */
void EUSCIA0_IRQHandler(void)
{
uint32_t status = MAP_UART_getEnabledInterruptStatus(EUSCI_A0_BASE);
MAP_UART_clearInterruptFlag(EUSCI_A0_BASE, status);
if(status & EUSCI_A_UART_RECEIVE_INTERRUPT_FLAG)
{
MAP_UART_transmitData(EUSCI_A0_BASE, MAP_UART_receiveData(EUSCI_A0_BASE));
// if(MAP_UART_receiveData(EUSCI_A0_BASE)=='0')
// MAP_GPIO_toggleOutputOnPin(GPIO_PORT_P2,GPIO_PIN0);
// else if(MAP_UART_receiveData(EUSCI_A0_BASE)=='1')
// MAP_GPIO_toggleOutputOnPin(GPIO_PORT_P2,GPIO_PIN1);
// else if(MAP_UART_receiveData(EUSCI_A0_BASE)=='2')
// MAP_GPIO_toggleOutputOnPin(GPIO_PORT_P2,GPIO_PIN2);
// else if(MAP_UART_receiveData(EUSCI_A0_BASE)=='3')
// MAP_GPIO_toggleOutputOnPin(GPIO_PORT_P1,GPIO_PIN0);
// else
// MAP_GPIO_setOutputHighOnPin(GPIO_PORT_P2,GPIO_PIN0 | GPIO_PIN1);
}
}
void UART_SentByte(uint8_t ch)
{
MAP_UART_transmitData(EUSCI_A0_BASE,ch);
while((UCA0STATW & 0x01));
}
void UART_SentString(char *str)
{
unsigned int k=0;
do{
UART_SentByte(*(str+k));
k++;
}while (*(str+k)!='\0');
while((UCA0STATW & 0x01));
}
这个是没重新pfintf的,求大佬赐教怎样重写printf函数!!!!
|
|