工具/软件:Code Composer Studio
大家好,
我正在使用演示"UART_PC_ECHO_12MHz_brclk.c"。 我只向主环路添加了一个命令,用于将模具(0xff)发送到UART。
它工作正常,我运行程序,并且我在计算机上不断收到值"0xff"。 当我通过计算机发送一些数据时,程序进入Rx_UART的中断例程,它返回通过TX_UART接收的值,但不返回到主例程。 它陷入我不理解的循环中:
有人能更好地解释我为什么不能回到主要程序吗? 我忘了一些旗帜吗?
遵循完整代码:
/* DriverLib包括*/
#include <ti/devices/msp432p4xx/driverlib/driverlib.h>
/*标准包括*/
#include <stdint.h>
#include <stdbool.h>
//![简单UART配置]
/* UART配置参数。 这些是的配置参数
*使eUSCI成为UART模块,以9600波特率运行。 这些
*数值是使用TI提供的在线计算器计算的
*在:
*software-dl.ti.com/.../index.html
*/
const eUSI_UART_Config uartConfig =
{
EUSCI_A_UART_CLOCKSOURCE_SMCLK,// SMCLK时钟源
78,// BRDIV = 78
2,// UCXBRF = 2
0,// UCXBRS = 0
EUSCI_A_UART_NO_PARity,//无奇偶校验
EUSCI_A_UART_LSB优先,// LSB优先
EUSCI_A_UART_ONE_STOP_BIT,//一个停止位
EUSCI_A_UART_MODE,// UART模式
EUSCI_A_UART_ORTS_Ooversampling_BAUDRATE_generation // Oversampling
};
//![简单UART配置]
内部主(无效)
{
/*正在停止WDT */
MAP_WDT_A_HoldTimer();
/*在UART模式下选择WFP 1.2 和WFP 1.3 */
MAP_GPIO设置外围模块功能输入引脚(GPIO_PORT_P1,
GPIO _PIN1 | GPIO _PIN2 | GPIO _PIN3,GPIO主要模块功能);
/*将DCO设置为12MHz */
cs_setDCOCenteredFrequency (CS_DCO_Frequency_12);
//![简单UART示例]
/*配置UART模块*/
MAP_UART_INITModule (EUSCI_A0_BASE,&uartConfig);
/*启用UART模块*/
MAP_UART_enableModule (EUSCI_A0_BASE);
/*启用中断*/
MAP_UART_enableInterrupt (EUSCI_A0_BASE,EUSCI_A_UART_receive中断);
MAP_Interrupt_enableInterrupt (INT_EUSCIA0);
MAP_Interrupt_enableSleepOnIsrExit();
MAP_Interrupt_enableMaster();
//![简单UART示例]
同时(1)
{
MAP_UART_ESDLData(EUSI_A0_base, 0xff);
// map_pcm_gotoLPM0();
}
}
/* ESCI A0 UART ISR -将数据回波到PC主机*/
void EUSCIA0_IRQHandler (void)
{
UINT32_t status = MAP_UART_getEnabableInterruptStatus(EUSSCI_A0_base);
MAP_UART_CLEARInterruptFlag (EUSCI_A0_BASE,状态);
IF (状态和EUSCI_A_UART_receive中断标志)
{
MAP_UART_TEH数据(EUSI_A0_base, MAP_UART_receiveData(EUSSCI_A0_base);
}
}
欢迎您提供任何帮助! 谢谢你。
如果您需要更多信息,请告诉我。 我感谢你的评论。