主题中讨论的其他器件:MSP430FR2433
您好!
我尝试在 TI Resource Explorer 上配置标准收发器示例、使其在 P2.5/P2.6上工作、而不是在 P1.4/P1.5上工作。 我让它与端口1配置一起工作、但使用 P2时遇到问题。 这是我要使用的代码。
#include "driverlib.h"
#include
//
// UART 初始化
//
#define LED_OUT P1OUT
#define LED_DIR P1DIR
#define LED_PIN BIT0
#define SMCLK_115200 0
#define SMCLK_9600 1.
#define UART_MODE SMCLK_9600//
空 initUART()
{
//将 USCI_A0配置为 UART 模式
UCA1CTLW0 |= UCSWRST;//将 eUSCI 置于复位状态
#if UART_MODE = SMCLK_115200
UCA1CTLW0 |= UCSSEL_SMCLK;// CLK = SMCLK
//波特率设置
//使用表21-5
UCA1BRW = 8;
UCA1MCTLW |= UCOS16 | UCBRF_10 | 0xF700;//0xF700为 UCBRSx = 0xF7
#elif UART_MODE = SMCLK_9600
UCA1CTLW0 |= UCSSEL_SMCLK;// CLK = SMCLK
//波特率设置
//使用表21-5
UCA1BRW = 104;
UCA1MCTLW |= UCOS16 | UCBRF_2 | 0xD600;//0xD600为 UCBRSx = 0xD6
其他
#错误"请将波特率指定为115200或9600 "
#endif
UCA1CTLW0 &=~UCSWRST;//初始化 eUSCI
UCA1IE |= UCRXIE;//启用 USCI_A1 RX 中断
}
//
//设备初始化
//
空 initGPIO()
{
LED_DIR |= LED_PIN;
LED_OUT &=~LED_PIN;
//配置 GPIO
P2SEL1 &=~Ω(BIT6 | BIT5);// USCI_A1 UART 操作
P2SEL0 |= BIT6 | BIT5;
//禁用 GPIO 上电默认高阻抗模式以激活
//先前配置的端口设置
PM5CTL0 &=~LOCKLPM5;
}
空 initClockTo16MHz()
{
//根据 MCLK 的器件数据表的要求配置一个 FRAM 等待状态
//在配置时钟系统之前在8MHz 以上运行。
FRCTL0 = FRCTLPW | NWAITS_1;
_bis_SR_register (SCG0);//禁用 FLL
CSCTL3 |= SELREF_REFOCLK;//将 REFO 设置为 FLL 基准源
CSCTL0 = 0;//清除 DCO 和 MOD 寄存器
CSCTL1 &=~(DCORSEL_7);//首先清除 DCO 频率选择位
CSCTL1 |= DCORSEL_5;//设置 DCO = 16MHz
CSCTL2 = FLLD_0 + 487;//设置为 fDCOCLKDIV =(FLLN + 1)*(fFLLREFCLK/n)
//=(487 + 1)*(32.768 kHz/1)
//= 16MHz
_DELAY_CYCLES (3);
_BIC_SR_register (SCG0);//启用 FLL
while (CSCTL7 &(FLLUNLOCK0 | FLLUNLOCK1));// FLL 锁定
CSCTL4 = SELMS_DCOCLKDIV | SELA_REFOCLK;
}
//
//主要内容
如果使用 SMCLK、//进入 LPM0并等待 UART 中断。 如果使用 ACLK *
//则器件将改为进入 LPM3模式。 UART RX 中断处理*
//接收到的字符并将其回显。 *
//
int main (空)
{
WDTCTL = WDTPW | WDTHOLD;//停止看门狗
initGPIO();
initClockTo16MHz();
inituart();
#if UART_MODE = SMCLK_9600
_bis_SR_register (LPM3_bits + GIE);//由于 ACLK 是源代码、请进入 LPM3、中断被启用
其他
_bis_SR_register (LPM0_bits + GIE);//由于 SMCLK 是源代码、请进入 LPM0、中断被启用
#endif
__no_operation();//用于调试器
}
//
// UART 中断
//
#if defined (__TI_Compiler_version__)|| Defined (__IAR_systems_ICC__)
#pragma vector=USCI_A1_vector
_interrupt void USCI_A1_ISR (void)
#Elif defined (_GNU_)
void __attribute__((中断(USCI_A1_vector)) USCI_A1_ISR (void)
其他
错误编译器不受支持!
#endif
{
switch (__evo_in_range (UCA1IV、USCI_UART_UCTXCPTIFG))
{
USCI_NONE 案例:中断;
USCI_UART_UCRXIFG 案例:
while (!(UCA1IFG&UCTXIFG));
UCA1TXBUF = UCA1RXBUF;
__no_operation();
中断;
案例 USCI_UART_UCTXIFG:中断;
案例 USCI_UART_UCSTTIFG:中断;
案例 USCI_UART_UCTXCPTIFG:中断;
}
}