主题中讨论的其他器件:BOOSTXL-PGA460、 PGA460、 MSP430WARE、 MSP430F5529
工具/软件:Code Composer Studio
您好!
我在企业中从事一个项目、我有带 MSP430 MCU 的 TI Launchpad 套件和一个模拟评估模块- BOOSTXL-PGA460。
我使用在 Code compose studio 中制作的程序与 PGA460进行通信。
为了开发程序、我快速使用 了驱动程序库中软件 MSP430ware 中的程序、并根据我的情况进行调整。
使用的微控制器是 MSP430F5529。
以下是我用于程序的代码:
// //! 此示例展示了如何将 UART 模块配置为回送至 //! 验证接收到的数据是否已发送。 //! //! MSP430F5438A //! -------- //! RST -| P3.4/UCA0TXD|--| //! | || //! | || //! | P3.5/UCA0RXD|--| //! | | //! //! //! 此示例使用以下外设和 I/O 信号。 您必须 //! 查看这些内容并根据您自己的董事会需要进行更改: //! - UART 外设 //! - GPIO 端口外设(用于 UART 引脚) //! - UCA0TXD //! - UCA0RXD //! //! 此示例使用以下中断处理程序。 要使用此示例 //! 在您自己的应用程序中、您必须将这些中断处理程序添加到 您的//! 矢量表。 //! - USCI_A0_Vector。 // #include "driverlib.h" //********* ////// 选择波特率 // //********* #define BAUD_RATE 9600 //JS-- //#define BAUD_RATE 2400 //JS++// nota:se EU alterar está variável // o d é bito binário observado no osciloscópio é sempre 9600 bps - para já vou deixar como //********* ////// 初始化接收到的数据 // //*************** uint8_t receivedData = 0x00; //********* //////// 初始化传输数据 // //********* uint8_t transmitData = 0x00; uint8_t check = 0; uint8_t i1 = 0;//js++ uint8_t i2 = 0;//js++ uint8_t i3 = 0;//js++ void main (void) { //停止 WDT WDT_A_HOLD (WDT_A_base); GPIO_setAsOutputPin (GPIO_PORT_P2、GPIO_PIN2);// PD como saída GPIO_setAsOutputPin (GPIO_PORT_P7、GPIO_PIN4);//Porto SEL COMO saída GPIO_setOutputLowOnPin (GPIO_PORT_P2、GPIO_PIN2);//coloca Pino 为零 GPIO_setOutputLowOnPin (GPIO_PORT_P7、GPIO_PIN4);//coloca Pino 为零 // FIM JS++ //JS-- GPIO_setPeripheralModuleFunctionInputPin ( GPIO_PORT_P3、 GPIO_PIN3 + GPIO_PIN4 ); //FIM JS++ //FIM JS++ P3.4中的//上拉电阻器// JS++ GPIO_setAsInputPinWithPullUpResistor (GPIO_PORT_P3、GPIO_PIN4);//JS++ USCI_A_UART_initParam param ={0}; param.selectClockSource = USCI_A_UART_CLOCKSOURCE_SMCLK; param.clockPrescalar = 109; param.firstModReg = 0; param.secondModReg = 2; param.parity = USCI_A_uart_no_parity; param.msborLsbFirst = USCI_A_UART_LSB_FIRST; // param.numberofStopBits = USCI_A_UART_One_stop_bit;//JS-- param.numerofStopBits = USCI_A_UART_Two_stop_bits;//JS-- param.uartMode = USCI_A_UART_MODE; param.oversaming= USCI_A_UART_LOW_FREQUENCY BAUDRATE_generation; if (STATUS_FAIL = USCI_A_UART_init (USCI_A0_BASE、¶m)){ 返回; } //启用 UART 模块以进行操作 USCI_A_UART_ENABLE (USCI_A0_BASE); //启用接收中断 USCI_A_UART_clearInterrupt (USCI_A0_BASE、 USCI_A_UART_receive_interrupt); USCI_A_UART_enableInterrupt (USCI_A0_BASE、 USCI_A_UART_receive_interrupt); _enable_interrupt ();//JS-- transmitData = 0x55; //将数据加载到缓冲区中 USCI_A_UART_transmitData (USCI_A0_BASE、 传输数据); transmitData = 0x0A; //将数据加载到缓冲区中 USCI_A_UART_transmitData (USCI_A0_BASE、 传输数据); transmitData = 0x68; //将数据加载到缓冲区中 USCI_A_UART_transmitData (USCI_A0_BASE、 传输数据); transmitData = 0x42; //将数据加载到缓冲区中 USCI_A_UART_transmitData (USCI_A0_BASE、 传输数据); transmitData = 0x4B; //将数据加载到缓冲区中 USCI_A_UART_transmitData (USCI_A0_BASE、 transmitData); for (i2=0;i2<20;i2++) { // for (i3=0;i3<255;i3++) // { for (i1=0;i1<255;i1++);//JS++ //} } transmitData = 0x55; //将数据加载到缓冲器 USCI_A_UART_transmitData (USCI_A0_BASE、 transmitData); transmitData = 0x09; //将数据加载到缓冲区 USCI_A_UART_transmitData (USCI_A0_BASE、 transmitData); transmitData = 0x68; //将数据加载到缓冲区 USCI_A_UART_transmitData (USCI_A0_BASE、 transmitData); transmitData = 0x8E; //将数据加载到缓冲区 USCI_A_UART_transmitData (USCI_A0_BASE、 传输数据); USCI_A_UART_clearInterrupt (USCI_A0_BASE、 USCI_A_UART_Receive_interrupt_FLAG); while (1) { transmitData = 0x55; //将数据加载到缓冲区中 USCI_A_UART_transmitData (USCI_A0_BASE、 传输数据); transmitData = 0x09; //将数据加载到缓冲区中 USCI_A_UART_transmitData (USCI_A0_BASE、 传输数据); transmitData = 0x68; //将数据加载到缓冲区中 USCI_A_UART_transmitData (USCI_A0_BASE、 传输数据); transmitData = 0x8E; //将数据加载到缓冲区中 USCI_A_UART_transmitData (USCI_A0_BASE、 传输数据); for (i2=0;i2<20;i2++) { // for (i3=0;i3<255;i3++) // { 对于(i1=0;i1<255;i1++);//JS++ //} } } #if defined (__TI_Compiler_version__)|| defined (__IAR_systems_icc_) #pragma vector=USCI_A0_vector __interrupt void USCI_A0_ISR (void) #Elif defined (__GNU__) void __attribute__(interrupt (USCI_A1_vector)#USCI_A0 编译器#A0)(void)(不支持 USCI_A0! #endif { I3 = 0; 开关(_偶数_IN_RANGE (UCA0IV、4)){ //Vector 2 - RXIFG 案例2: receivedData = USCI_A_UART_receiveData (USCI_A0_BASE); // if (!(receivedData = transmitData)) //检查值//JS-- // { //JS-/ while (1); //JS-// } //JS-- 支票=1; 中断; 默认值:break; } } //--- 我的程序结束
在调试模式下、我在_interrupt void USCI_A0_ISR (void)旋转内放置了一个断点(在指令 i3=0中)、程序从不会在这里停止。
我分别发送 RXD 和 TXD (在 PGA460上)中看到的信号:
最后一个信号是 PGA 的 UART 发送到 MSP430的信号、其中包含我在微控制器中从未检测到的3个字节。 为什么?
请帮帮我。
何塞·西莫斯