主题中讨论的其他器件: MSP430FR2355、 MSP430WARE
您好!
我正在寻找适用于 msp430fr2153和 msp430fr2355的 UART 驱动程序。 我已经在 CCS v8.2中浏览了 Resource Explorer、我只找到了驱动程序的用户指南、但在驱动程序上没有找到任何示例。
B.R.
古拉夫
This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
您好!
我正在寻找适用于 msp430fr2153和 msp430fr2355的 UART 驱动程序。 我已经在 CCS v8.2中浏览了 Resource Explorer、我只找到了驱动程序的用户指南、但在驱动程序上没有找到任何示例。
B.R.
古拉夫
您好 Gourav、
不确定您在哪里查找它、例如在 MSP430Ware -v:3.80.05.04 >> Libraries >> Driver Library >> MSP430FR2xx_4xx >>示例项目>> EUSCI_A_UART 下、您可以找到驱动程序库示例。
您可以在 MSP430Ware 中的器件路径之后找到更多有关寄存器级的示例。 MSP430Ware -v:3.80.05.04 >>器件>> MSP430FR2xx_4xx >>器件名称...
此致
Peter
是的。
最近、我体验了 FR2355和基于 ROM 的驱动程序库、作为我处理的更大项目的先决条件。
两个独立的 UART 发送通道(Tx)被设定为具有两个不同的波特率。
我分别在24MHz 和16MHz MCLK 下测试了这一点、 SMCLK 被用作两个 BRCLK 源。
请在下面找到一个测试程序。
#include "driverlib.h" #include "rom_driverlib.h" #define CS_MCLK_kHz 24000 #define GPIO_PORT_UCA0TXD GPIO_PORT_P1 #define GPIO_PIN_UCA0TXD GPIO_PIN7 #define GPIO_Function_UCA0TXD GPIO_PRIMARY_MODULE_Function #define GPIO_PORT_UCA0RXD GPIO_PORT_P1 #define GPIO_PIN_UCA0RXD GPIO_PIN6 #define GPIO_Function_UCA0RXD GPIO_PRIMARY_MODULE_Function #define GPIO_PORT_UCA1TXD GPIO_PORT_P4 #define GPIO_PIN_UCA1TXD GPIO_PIN3 #define GPIO_Function_UCA1TXD GPIO_PRIMARY_MODULE_Function #define GPIO_PORT_UCA1RXD GPIO_PORT_P4 #define GPIO_PIN_UCA1RXD GPIO_PIN2 #define GPIO_Function_UCA1RXD GPIO_PRIMARY_MODULE_Function void CS_clockInit (void) { ROM_CS_TurnOnXT1LF ( CS_XT1_DRIVE_3); #if (CS_MCLK_kHz > 16000) FRAMCTL_configureWaitStateControl (FRAMCTL_ACCESS_TIME_CYCLESS_2); #Elif (CS_MCLK_kHz > 8000) FRAMCTL_configureWaitStateControl (FRAMCTL_ACCESS_TIME_CYCESS_1); #endif ROM_CS_initClockSignal (CS_FLLREF、CS_REFOCLK_SELECT、CS_CLOCK_DEVIDER_1); CS_initFLLPam CSparam ={0}; CS_initFLLCalculateTrim ( CS_MCLK_k_kHz,((uint16_t) CS_MCLK_kHz/32.77),&CSparam ); ROM_CS_clearAllOscFlagsWithTimeout (1000); } void inline CS_SMCLKinit (void) { ROM_CS_initClockSignal (CS_SMCLK、CS_DCOCLKDIV_select、CS_clock_divider); } void inline XT1_GPIOinit (void) { ROM_GPIO_setPeripheralModuleFunctionInputPin ( GPIO_PORT_P2、GPIO_PIN6 + GPIO_PIN7、GPIO_secondary 模块_function ); } 空内联 UCA0UART_GPIOinit (void) { //配置 UART 引脚 GPIO_setPeripheralModuleFunctionInputPin ( GPIO_PORT_UCA0TXD、 GPIO_PIN_UCA0TXD、 GPIO_Function_UCA0TXD ); GPIO_setPeripheralModuleFunctionInputPin ( GPIO_PORT_UCA0RXD、 GPIO_PIN_UCA0RXD、 GPIO_Function_UCA0RXD ); } void 内联 UCA1UART_GPIOinit (void) { //配置 UART 引脚 GPIO_setPeripheralModuleFunctionInputPin ( GPIO_PORT_UCA1TXD、 GPIO_PIN_UCA1TXD、 GPIO_Function_UCA1TXD ); GPIO_setPeripheralModuleFunctionInputPin ( GPIO_PORT_UCA1RXD、 GPIO_PIN_UCA1RXD、 GPIO_Function_UCA1RXD ); } void EUSCI_A0_UARTinit (void) { //配置 UART0 //SMCLK = 12MHz、波特率= 57600 //LSBfirst、奇偶校验编号、stop_bits 1 //UCBRx = 13、UCBRFx = 0、UCBRSx = 0x25、UCOS16 = 1 (过采样= 1) EUSCI_A_UART_initParam param ={0}; param.selectClockSource = EUSCI_A_UART_CLOCKSOURCE_SMCLK; param.clockPrescalar = 13; param.firstModReg = 0; param.secondModReg = 0x25; param.parity = EUSCI_A_UART_NO_parity; param.msborLsbFirst = EUSCI_A_UART_LSB_FIRST; param.numerofStopBits = EUSCI_A_UART_Oe_STOP_BIT; param.uartMode = EUSCI_A_UART_MODE; param.oversaming= EUSCI_A_UART_oversaming_BAUDRATE_generation; if (STATUS_FAIL = ROM_EUSCI_A_UART_init (EUSCI_A0_BASE、¶m)){ //return; } ///EUSCI_A_UART_DisableInterrupt (EUSCI_A0_BASE、EUSCI_A_UART_Transmit 中断); ROM_EUSCI_A_UART_ENABLE (EUSCI_A0_BASE); ROM_EUSCI_A_UART_clearInterrupt (EUSCI_A0_BASE、EUSCI_A_UART_Transmit _INTERRUPT); ROM_EUSCI_A_UART_enableInterrupt (EUSCI_A0_BASE、EUSCI_A_UART_Transmit _INTERRUPT); } void EUSCI_A1_UARTinit (void) { //配置 UART0 //SMCLK = 12MHz、波特率= 19200 //LSBfirst、奇偶校验编号、stop_bits 1 //UCBRx = 39、UCBRFx = 1、UCBRSx = 0x00、UCOS16 = 1 (过采样= 1) EUSCI_A_UART_initParam param ={0}; param.selectClockSource = EUSCI_A_UART_CLOCKSOURCE_SMCLK; param.clockPrescalar = 39; param.firstModReg = 1; param.secondModReg = 0x00; param.parity = EUSCI_A_UART_NO_parity; param.msborLsbFirst = EUSCI_A_UART_LSB_FIRST; param.numerofStopBits = EUSCI_A_UART_Oe_STOP_BIT; param.uartMode = EUSCI_A_UART_MODE; param.oversaming= EUSCI_A_UART_oversaming_BAUDRATE_generation; if (STATUS_FAIL = ROM_EUSCI_A_UART_init (EUSCI_A1_BASE、¶m)){ //return; } ///EUSCI_A_UART_DisableInterrupt (EUSCI_A0_BASE、EUSCI_A_UART_Transmit 中断); ROM_EUSCI_A_UART_ENABLE (EUSCI_A1_BASE); ROM_EUSCI_A_UART_clearInterrupt (EUSCI_A1_base、EUSCI_A_UART_Transmit _interrupt); ROM_EUSCI_A_UART_enableInterrupt (EUSCI_A1_base、EUSCI_A_UART_Transmit _interrupt); } 常量 uint8_t TXbuffer0[40]="UART0采样消息57600\n"; 常量 uint8_t TXbuffer1[40]="UART1采样消息19200\n"; volatile uint8_t UART0_ByteCounter = 0; volatile uint8_t UART1_byteCounter = 0; int main (void){ ROM_WDT_A_HOLD (WDT_A_base); xt1_GPIOinit(); UCA0UART_GPIOinit(); UCA1UART_GPIOinit(); ROM_PMM_unlockLPM5 (); cs_clockInit(); CS_SMCLKinit(); EUSCI_A0_UARTinit(); EUSCI_A1_UARTIinit (); _ bis_SR_register (GIE); //启用中断 while (1) { IF (((UART0_ByteCounter = 0)&&(UART1_byteCounter = 0)) { _DELAY_CYCLES (200000); UART0_ByteCounter = 1; //UART0传输初始化 UCA0TXBUF = TXbuffer0[0]; //UART0传输初始化 UART1_byteCounter = 1; //UART1传输初始化 UCA1TXBUF = TXbuffer1[0]; //UART1传输初始 化} _bis_SR_register (LPM3_bits); //Enter LPM3 (待机) } } #pragma vector=USCI_A0_VECTOR __INTERRUPT void EUSCI_A0_ISR (void) { switch (__evo_in_range (UCA0IV、USCI_UART_UCTXCPTIFG)) { USCI_NONE 案例:中断; USCI_UART_UCRXIFG 案例:中断; //接收缓冲区已满 USCI_UART_UCTXIFG 案例: //发送缓冲区为空 { if (TXbuffer0[UART0_BYTECounter]!= 0) { UCA0TXBUF = TXbuffer0[UART0_BYTECounter]; UART0_ByteCounter++; } 其他 { UART0_ByteCounter = 0; _BIC_SR_REGISTER_ON_EXIT (LPM3_BITS); } } 中断; 案例 USCI_UART_UCSTTIFG:中断; //接收到起始位 案例 USCI_UART_UCTXCPTIFG:中断; //传输完成 } } #pragma vector=USCI_A1_vector __interrupt void EUSCI_A1_ISR (void) { switch (__evo_in_range (UCA1IV、USCI_UART_UCTXCPTIFG)) { USCI_NONE 案例:中断; USCI_UART_UCRXIFG 案例:中断; //接收缓冲区已满 USCI_UART_UCTXIFG 案例: //发送缓冲区为空 { if (TXbuffer1[UART1_byteCounter]!= 0) { UCA1TXBUF = TXbuffer1[UART1_byteCounter]; UART1_byteCounter++; } 其他 { UART1_byteCounter = 0; _BIC_SR_REGISTER_ON_EXIT (LPM3_BITS); } } 中断; 案例 USCI_UART_UCSTTIFG:中断; //接收到起始位 案例 USCI_UART_UCTXCPTIFG:中断; //传输完成 } }