共2条
1/1 1 跳转至页
430F149 【求助】430F149中的串口1问题

问
源程序:
//******************************************************************************
// MSP-FET430P140 Demo - USART1 UART 2400 Ultra-low Power Echo ISR, 32kHz ACLK
//
// Description; Echo a received character, RX ISR used. In the Mainloop UART1
// is made ready to receive one character with interrupt active. The Mainloop
// waits in LPM3. The UART1 ISR forces the Mainloop to exit LPM3 after
// receiving one character which echo's back the received character.
// ACLK = UCLK1 = LFXT1 = 32768, MCLK = SMCLK = DCO ~ 800k
// Baud rate divider with 32768hz XTAL 2400 = 32768Hz/2400 = 13.65 (000Dh)
// //*An external watch crystal is required on XIN XOUT for ACLK*//
//
// MSP430F149
// -----------------
// /|\| XIN|-
// | | | 32kHz
// --|RST XOUT|-
// | |
// | P3.6|----------->
// | | 2400 - 8N1
// | P3.7|<-----------
//
//
// M. Buccini
// Texas Instruments, Inc
// February 2002
// Built with IAR Embedded Workbench Version: 1.25A
//******************************************************************************
#include <MSP430x14x.h>
void main(void)
{
WDTCTL = WDTPW + WDTHOLD; // Stop WDT
UCTL1&=~SWRST;
UCTL1 = CHAR; // 8-bit character
UTCTL1 = SSEL0; // UCLK = ACLK
UBR01 = 0x0D; // 32k/2400 - 13.65
UBR11 = 0x00;
UMCTL1 = 0x6B; // Modulation
ME2 |= UTXE1 + URXE1; // Enable USART1 TXD/RXD
IE2 |= URXIE1;
IE2 |=UTXIE1; // Enable USART1 RX interrupt
P3SEL |= 0xC0; // P3.6,7 = USART1 option select
P3DIR |= 0x40; // P3.6 = output direction
_EINT(); // Enable interrupts
// Mainloop
for (;;)
{
_BIS_SR(LPM3_bits); // Enter LPM3
_NOP(); // Required only for C-spy
}
}
// UART1 RX ISR will for exit from LPM3 in Mainloop
interrupt[UART1RX_VECTOR] void usart1_rx (void)
{
_BIC_SR_IRQ(LPM3_bits);
while ((IFG2 & UTXIFG1) == 0); // USART1 TX buffer ready?
TXBUF1 = RXBUF1; // RXBUF1 to TXBUF1
}
程序运行到 while ((IFG2 & UTXIFG1) == 0); // USART1 TX buffer ready?
就执行不下去了!不知道为什么?请大家指点!谢谢!
report中显示为:
FETCH access at address 0xFF4A (Memory) - foreign
Break at FF50
FETCH access at address 0xFF50 (Memory) - foreign
Break at .fet140_uart11_02400.c\61 (usart1_rx) 答 1: 不小心写错一条语句!已经解决!呵呵
//******************************************************************************
// MSP-FET430P140 Demo - USART1 UART 2400 Ultra-low Power Echo ISR, 32kHz ACLK
//
// Description; Echo a received character, RX ISR used. In the Mainloop UART1
// is made ready to receive one character with interrupt active. The Mainloop
// waits in LPM3. The UART1 ISR forces the Mainloop to exit LPM3 after
// receiving one character which echo's back the received character.
// ACLK = UCLK1 = LFXT1 = 32768, MCLK = SMCLK = DCO ~ 800k
// Baud rate divider with 32768hz XTAL 2400 = 32768Hz/2400 = 13.65 (000Dh)
// //*An external watch crystal is required on XIN XOUT for ACLK*//
//
// MSP430F149
// -----------------
// /|\| XIN|-
// | | | 32kHz
// --|RST XOUT|-
// | |
// | P3.6|----------->
// | | 2400 - 8N1
// | P3.7|<-----------
//
//
// M. Buccini
// Texas Instruments, Inc
// February 2002
// Built with IAR Embedded Workbench Version: 1.25A
//******************************************************************************
#include <MSP430x14x.h>
void main(void)
{
WDTCTL = WDTPW + WDTHOLD; // Stop WDT
UCTL1&=~SWRST;
UCTL1 = CHAR; // 8-bit character
UTCTL1 = SSEL0; // UCLK = ACLK
UBR01 = 0x0D; // 32k/2400 - 13.65
UBR11 = 0x00;
UMCTL1 = 0x6B; // Modulation
ME2 |= UTXE1 + URXE1; // Enable USART1 TXD/RXD
IE2 |= URXIE1;
IE2 |=UTXIE1; // Enable USART1 RX interrupt
P3SEL |= 0xC0; // P3.6,7 = USART1 option select
P3DIR |= 0x40; // P3.6 = output direction
_EINT(); // Enable interrupts
// Mainloop
for (;;)
{
_BIS_SR(LPM3_bits); // Enter LPM3
_NOP(); // Required only for C-spy
}
}
// UART1 RX ISR will for exit from LPM3 in Mainloop
interrupt[UART1RX_VECTOR] void usart1_rx (void)
{
_BIC_SR_IRQ(LPM3_bits);
while ((IFG2 & UTXIFG1) == 0); // USART1 TX buffer ready?
TXBUF1 = RXBUF1; // RXBUF1 to TXBUF1
}
程序运行到 while ((IFG2 & UTXIFG1) == 0); // USART1 TX buffer ready?
就执行不下去了!不知道为什么?请大家指点!谢谢!
report中显示为:
FETCH access at address 0xFF4A (Memory) - foreign
Break at FF50
FETCH access at address 0xFF50 (Memory) - foreign
Break at .fet140_uart11_02400.c\61 (usart1_rx) 答 1: 不小心写错一条语句!已经解决!呵呵
共2条
1/1 1 跳转至页
回复
有奖活动 | |
---|---|
【EEPW电子工程师创研计划】技术变现通道已开启~ | |
发原创文章 【每月瓜分千元赏金 凭实力攒钱买好礼~】 | |
【EEPW在线】E起听工程师的声音! | |
“我踩过的那些坑”主题活动——第001期 | |
高校联络员开始招募啦!有惊喜!! | |
【工程师专属福利】每天30秒,积分轻松拿!EEPW宠粉打卡计划启动! | |
送您一块开发板,2025年“我要开发板活动”又开始了! | |
打赏了!打赏了!打赏了! |
打赏帖 | |
---|---|
分享汽车通信和多媒体总线结构被打赏20分 | |
【我踩过的那些坑】结构堵孔导致的喇叭无声问题被打赏50分 | |
NUCLEO-U083RC学习历程38+串口通过队列的方式输出两个字符串被打赏20分 | |
【我踩过的那些坑】分享一下调试一款AD芯片的遇到的“坑”被打赏50分 | |
电流检测模块MAX4080S被打赏10分 | |
【我踩过的那些坑】calloc和malloc错误使用导致跑飞问题排查被打赏50分 | |
分享电控悬架的结构与工作原理(一)被打赏20分 | |
多组DCTODC电源方案被打赏50分 | |
【我踩过的那些坑】STM32cubeMX软件的使用过程中的“坑”被打赏50分 | |
新手必看!C语言精华知识:表驱动法被打赏50分 |