专家
公告
财富商城
电子网
旗下网站
首页
问题库
专栏
标签库
话题
专家
NEW
门户
发布
提问题
发文章
新人问个关于串口的低级问题。。
2019-03-24 08:22
发布
×
打开微信“扫一扫”,打开网页后点击屏幕右上角分享按钮
站内问答
/
TI MCU
4422
19
1572
我刚开始接触单片机,用的msp430f5529的launchpad。我现在想用PC和开发板串口连接,板子用来烤程序的那个usb接口可以达到串口连接的作用嘛,还是要短接啥的。。。不能的话是不是只能用个usb转串口?
此帖出自
小平头技术问答
友情提示:
此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
19条回答
fraisty
2019-03-24 16:13
#include <msp430.h>
int main(void)
{
unsigned char i;
WDTCTL = WDTPW + WDTHOLD; // Stop WDT
P3SEL = BIT3+BIT4; // P3.4,5 = USCI_A0 TXD/RXD
//.......................
// P5SEL |= BIT4+BIT5; // Select XT1
//
// UCSCTL6 &= ~(XT1OFF); // XT1 On
// UCSCTL6 |= XCAP_3; // Internal load cap
// UCSCTL3 = 0; // FLL Reference Clock = XT1
//
// // Loop until XT1,XT2 & DCO stabilizes - In this case loop until XT1 and DCo settle
// do
// {
// UCSCTL7 &= ~(XT2OFFG + XT1LFOFFG + DCOFFG);
// // Clear XT2,XT1,DCO fault flags
// SFRIFG1 &= ~OFIFG; // Clear fault flags
// }while (SFRIFG1&OFIFG); // Test oscillator fault flag
//
// UCSCTL6 &= ~(XT1DRIVE_3); // Xtal is now stable, reduce drive strength
//
// UCSCTL4 |= SELA_0 + SELS_4 + SELM_4; // ACLK = LFTX1
// // SMCLK = default DCO
// // MCLK = default DCO
//
//................
UCA0CTL1 |= UCSWRST; // **Put state machine in reset**
UCA0CTL1 |= UCSSEL_1; // CLK = ACLK
UCA0BR0 = 0x03; // 32kHz/9600=3.41 (see User's Guide)
UCA0BR1 = 0x00; //
UCA0MCTL = UCBRS_3+UCBRF_0; // Modulation UCBRSx=3, UCBRFx=0
UCA0CTL1 &= ~UCSWRST; // **Initialize USCI state machine**
UCA0IE |= UCRXIE; // Enable USCI_A0 RX interrupt
__bis_SR_register(LPM3_bits + GIE); // Enter LPM3, interrupts enabled
__no_operation(); // For debugger
}
// Echo back RXed character, confirm TX buffer is ready first
#if defined(__TI_COMPILER_VERSION__) || defined(__IAR_SYSTEMS_ICC__)
#pragma vector=USCI_A0_VECTOR
__interrupt void USCI_A0_ISR(void)
#elif defined(__GNUC__)
void __attribute__ ((interrupt(USCI_A0_VECTOR))) USCI_A0_ISR (void)
#else
#error Compiler not supported!
#endif
{
switch(__even_in_range(UCA0IV,4))
{
case 0:break; // Vector 0 - no interrupt
case 2: // Vector 2 - RXIFG
while (!(UCA0IFG&UCTXIFG)); // USCI_A0 TX buffer ready?
UCA0TXBUF = UCA0RXBUF; // TX -> RXed character
break;
case 4:break; // Vector 4 - TXIFG
default: break;
}
}
复制代码
加载中...
查看其它19个回答
一周热门
更多
>
相关问题
相关文章
×
关闭
采纳回答
向帮助了您的知道网友说句感谢的话吧!
非常感谢!
确 认
×
关闭
编辑标签
最多设置5个标签!
保存
关闭
×
关闭
举报内容
检举类型
检举内容
检举用户
检举原因
广告推广
恶意灌水
回答内容与提问无关
抄袭答案
其他
检举说明(必填)
提交
关闭
×
打开微信“扫一扫”,打开网页后点击屏幕右上角分享按钮
×
付费偷看金额在0.1-10元之间
确定
×
关闭
您已邀请
0
人回答
查看邀请
擅长该话题的人
回答过该话题的人
我关注的人
- #include <msp430.h>
- int main(void)
- {
- unsigned char i;
- WDTCTL = WDTPW + WDTHOLD; // Stop WDT
- P3SEL = BIT3+BIT4; // P3.4,5 = USCI_A0 TXD/RXD
- //.......................
- // P5SEL |= BIT4+BIT5; // Select XT1
- //
- // UCSCTL6 &= ~(XT1OFF); // XT1 On
- // UCSCTL6 |= XCAP_3; // Internal load cap
- // UCSCTL3 = 0; // FLL Reference Clock = XT1
- //
- // // Loop until XT1,XT2 & DCO stabilizes - In this case loop until XT1 and DCo settle
- // do
- // {
- // UCSCTL7 &= ~(XT2OFFG + XT1LFOFFG + DCOFFG);
- // // Clear XT2,XT1,DCO fault flags
- // SFRIFG1 &= ~OFIFG; // Clear fault flags
- // }while (SFRIFG1&OFIFG); // Test oscillator fault flag
- //
- // UCSCTL6 &= ~(XT1DRIVE_3); // Xtal is now stable, reduce drive strength
- //
- // UCSCTL4 |= SELA_0 + SELS_4 + SELM_4; // ACLK = LFTX1
- // // SMCLK = default DCO
- // // MCLK = default DCO
- //
- //................
- UCA0CTL1 |= UCSWRST; // **Put state machine in reset**
- UCA0CTL1 |= UCSSEL_1; // CLK = ACLK
- UCA0BR0 = 0x03; // 32kHz/9600=3.41 (see User's Guide)
- UCA0BR1 = 0x00; //
- UCA0MCTL = UCBRS_3+UCBRF_0; // Modulation UCBRSx=3, UCBRFx=0
- UCA0CTL1 &= ~UCSWRST; // **Initialize USCI state machine**
- UCA0IE |= UCRXIE; // Enable USCI_A0 RX interrupt
- __bis_SR_register(LPM3_bits + GIE); // Enter LPM3, interrupts enabled
- __no_operation(); // For debugger
- }
- // Echo back RXed character, confirm TX buffer is ready first
- #if defined(__TI_COMPILER_VERSION__) || defined(__IAR_SYSTEMS_ICC__)
- #pragma vector=USCI_A0_VECTOR
- __interrupt void USCI_A0_ISR(void)
- #elif defined(__GNUC__)
- void __attribute__ ((interrupt(USCI_A0_VECTOR))) USCI_A0_ISR (void)
- #else
- #error Compiler not supported!
- #endif
- {
- switch(__even_in_range(UCA0IV,4))
- {
- case 0:break; // Vector 0 - no interrupt
- case 2: // Vector 2 - RXIFG
- while (!(UCA0IFG&UCTXIFG)); // USCI_A0 TX buffer ready?
- UCA0TXBUF = UCA0RXBUF; // TX -> RXed character
- break;
- case 4:break; // Vector 4 - TXIFG
- default: break;
- }
- }
复制代码一周热门 更多>