主题中讨论的其他部件: MSP-EXP430FR2311
工具/软件:Code Composer Studio
您好,
我刚刚开始使用MSP430FR2311执行一个项目,我想通过UART接口将ADC结果发送到PC。
我发现收到的数据乱码。 我不知道原因是什么。
#include "driverlib.h"
uint16_t i;
uint8_t RXData = 1,TXData = 1;
uint8_t check = 0;
void main (void)
{
//停止看门狗
WDT_A_HOLD (WDT_A_BASE);
// XT1设置
GPIO_setAsPeripheralModuleFunctionInputPin (
GPIO端口P1,
GPIO _PIN7 + GPIO _PIN6,
GPIO主要模块功能
);
//将外部时钟频率设置为32.768 KHz
cs_setExternalClockSource(3.2768万);
//设置ACLK=XT1
Cs_initClockSignal (CS_ACLK,CS_XT1CLK_SELECT,CS_Clock_diver_1);
//在没有超时的情况下启动XT1
cs_turnOnXT1 (CS_XT1_DRIVE_0);
//设置SMCLK = DCO,频分器为1
CS_initClockSignal (CS_SMCLK,CS_DCOCLKDIV_SELECT,CS_CLock_DICROLATER_1);
//设置MCLK = DCO,分频器为1
CS_initClockSignal (CS_MCLK,CS_DCOCLKDIV_SELECT,CS_CLock_DICROLATER_1);
//配置UART引脚
//WFP 1.7 -Tx
GPIO_setAsPeripheralModuleFunctionOutputPin (
GPIO端口P1,
GPIO _PIN7,
GPIO主要模块功能
);
//WFP 1.6 -Rx
GPIO_setAsPeripheralModuleFunctionInputPin (
GPIO端口P1,
GPIO _PIN6,
GPIO主要模块功能
);
/*
*禁用GPIO开机默认高阻抗模式以激活
*以前配置的端口设置
*/
pm_unlockLPM5();
//配置UART
EUSCI_A_UART_initParam ={0};
param.selectClockSource = EUSCI_A_UART_CLOCKSOURCE_SMCLK;
Param.clockPrescalar = 8;
Param.firstModReg = 0;
param.secondModReg = 6;
Param.parity = EUSCI_A_UART_NO_PARity;
Param.msborLsbFirst = EUSCI_A_UART_LSB_FIRST;
StopBits的Param.number= EUSCI_A_UART_ONE_STOP_BIT;
Param.uartMode = EUSCI_A_UART_MODE;
Param.oversampling = EUSCI_A_UART_LOW频率_BAUDRATE_RELEA;
IF (STATUS_FAIL == EUSCI_A_UART_INIT (EUSCI_A0_BASE,¶m))
{
返回;
}
EUSCI_A_UART_ENABLE (EUSCI_A0_BASE);
EUSCI_A_UART_clearInterrupt (EUSI_A0_base,
EUSCI_A_UART_receive中断);
//启用USI_A0 RX中断
EUSCI_A_UART_enableInterrupt (EUSCI_A0_BASE,
EUSCI_A_UART_receive中断); //启用中断
__enable_interrupit();
同时(1)
{
TXData = TXData + 1; //递增TX数据
//将数据加载到缓冲区
EUSCI_A_UART_HSDRData(EUSI_A0_BASE,
TXData);
while (检查!= 1)
{
;}
检查=0;}
}//**************************************************************************************************************
////
这是USI_A0中断向量服务例程。
////************************************************************************************************
#if defined(__TI_Compiler_version__)|| defined(__IAR_systems_icc__)
#pragma vector=USI_A0_vector
__interrupt
#Elif defined(__Gnuinu_)
__attribute__((interrupt (USI_A0_vector))
#endif
void EUSCI_A0_ISR(void)
{
Switch(__偶 数_in_range(UCA0IV,USI_UART_UCTXCPTIFG))
{
案例USI_NONE:中断;
案例USI_UART_UCRXIFG:
RXData = EUSCI_A_UART_receiveData (EUSCI_A0_BASE);
IF (!(RXData == TXData)) //检查值
{
同时(1)
{
;}
}
检查= 1;
中断;
案例USI_UART_UCTXIFG:中断;
案例USI_UART_UCSTIFG:中断;
案例USI_UART_UCTXCPTIFG:中断;
}
}
结果是:


