主题中讨论的其他器件:MSP432P401R
大家好、
我正在使用 MSP432P401R EVM 板。
q)未 生成 UART Rx 中断。
在12MHz、24MHz 以及可能的 boud 速率下尝试代码。
在转到应用 UART 之前、我测试了驱动程序库环回 UART 代码...但在本示例中、还会生成 Rx 中断。
我为 UART 选择了端口3.2和端口3.3。
/* DriverLib 包括*/
#include "driverlib.h"
/*标准包括*/
#include
#include
volatile uint8_t TXData = 1;
volatile uint8_t RXData = 0;
const eUSCI_UART_Config uartConfig =
{
EUSCI_A_UART_CLOCKSOURCE_SMCLK、// SMCLK 时钟源
78、// BRDIV = 78
2、// UCxBRF = 2
0、// UCxBRS = 0
EUSCI_A_UART_NO_奇 偶校验、//无奇偶校验
EUSCI_A_UART_MSB_FIRST、// LSB 优先
EUSCI_A_UART_One_stop_bit、//一个停止位
EUSCI_A_UART_MODE、// UART 模式
EUSCI_A_UART_oversampling_BAUDRATE_generation //过采样
};
int main (空)
{
/*停止 WDT */
MAP_WDT_A_HOLDTimer();
/*在 UART 模式下选择 P1.2和 P1.3并将 P1.0作为输出(LED)*/
MAP_GPIO_setPeripheralModuleFunctionInputPin (GPIO_PORT_P3、
GPIO_PIN2 | GPIO_PIN3、GPIO_PRIMARY_MODULE_FUNCTION);
MAP_GPIO_setAsOutputPin (GPIO_PORT_P1、GPIO_PIN0);
MAP_GPIO_setOutputLowOnPin (GPIO_PORT_P1、GPIO_PIN0);
MAP_PCM_setCoreVoltageLevel (PCM_VCORE1);
CS_setDCOCenteredFrequency (CS_DCO_FREQUENCY); /CS_setDCOCenteredFrequency (CS_DCO_FREQUENCY 24);
//UCA2STATW=0X0080;
/*配置 UART 模块*/
MAP_UART_initModule (EUSCI_A2_base、uartConfig);
/*启用 UART 模块*/
MAP_UART_enableModule (EUSCI_A2_base);//启用中断*
MAP_UART_enableInterrupt (EUSCI_A2_base、EUSCI_A_UART_receive_interrupt);
MAP_Interrupt_enableInterrupt (INT_EUSCIA2);
MAP_Interrupt_enableSlepOnIsrExit();
while (1)
{
UART_transmitData (EUSCI_A2_base、TXData);
MAP_Interrupt_enableSlepOnIsrExit();
MAP_PCM_gotoLPM0InterruptSafe ();
}
}
/* EUSCI A2 UART ISR - Echos 数据返回 PC 主机*/
空 EUSCIA2_IRQHandler (空)
{
uint32_t status = MAP_UART_getEnabledInterruptStatus (EUSCI_A2_base);
MAP_UART_clearInterruptFlag (EUSCI_A2_base、status);
IF (STATUS 和 EUSCI_A_UART_receive_interrupt_FLAG)
{
RXData = MAP_UART_receiveData (EUSCI_A2_base);
if (RXData!= TXData)//检查值
{
MAP_GPIO_setOutputHighOnPin (GPIO_PORT_P1、GPIO_PIN0);
while (1);//陷阱 CPU
}
TXData++;
MAP_Interrupt_disableSlepOnIsrExit();
}
}
如果我做错了、请告诉我。
任何配置都是必需的