Other Parts Discussed in Thread: MSP430FR2153, MSP430FR2355
主题中讨论的其他器件: 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.
Other Parts Discussed in Thread: MSP430FR2153, MSP430FR2355
您好!
我正在寻找适用于 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:中断; //传输完成 } }