打印

求msp430g2553的USCI模块例程

[复制链接]
楼主: zhanghqi
手机看帖
扫描二维码
随时随地手机跟帖
21
mmbs| | 2018-5-10 10:37 | 只看该作者 回帖奖励 |倒序浏览
官网好像有,下载一个参考一下。

使用特权

评论回复
22
pl202| | 2018-5-10 10:37 | 只看该作者
sci的代码呢?

使用特权

评论回复
23
soodesyt| | 2018-5-10 10:37 | 只看该作者
串口程序,USCI模式

使用特权

评论回复
24
baimiaocun2015| | 2018-5-12 17:34 | 只看该作者
maqianqu 发表于 2018-5-10 10:29
#include "MSP430G2553.h"


楼上分享的不错

使用特权

评论回复
25
zhangbo1985| | 2018-5-12 23:18 | 只看该作者
那就是采用UART的通讯就可以了哈

使用特权

评论回复
26
chuntian2016| | 2018-5-13 22:41 | 只看该作者
最简单最直接的还是UARt的通讯的

使用特权

评论回复
27
wyjie| | 2018-5-16 09:25 | 只看该作者

嗯,这个官网上很多,支持多去官网看看

使用特权

评论回复
28
jlyuan| | 2018-5-16 09:28 | 只看该作者
官網沒有asm的USCI,必須用C的去推

使用特权

评论回复
29
yszong| | 2018-5-16 09:32 | 只看该作者
30
dengdc| | 2018-5-16 09:34 | 只看该作者

这个用定时器模拟吧?

使用特权

评论回复
31
heweibig| | 2018-5-16 09:39 | 只看该作者


上官网的啦,上边的资料比我们提供的要权威的

使用特权

评论回复
32
shimx| | 2018-5-16 09:41 | 只看该作者
在3楼给的网站上,我怎么没有找到examples code呢,examples code 该怎么找呢

使用特权

评论回复
33
jiaxw| | 2018-5-16 09:44 | 只看该作者
UART例程
#include<msp430g2553.h>
unsigned int counter;
int main( void )
{
  WDTCTL = WDTPW + WDTHOLD;
  DCOCTL = 0;                               // Select lowest DCOx and MODx settings
  BCSCTL1 = CALBC1_1MHZ;                    // Set DCO
  DCOCTL = CALDCO_1MHZ;
  P1SEL = BIT1 + BIT2 ;                     // P1.1 = RXD, P1.2=TXD
  P1SEL2 = BIT1 + BIT2 ;                    // P1.1 = RXD, P1.2=TXD
  UCA0CTL1 |= UCSSEL_2;                     // SMCLK
  UCA0BR0 = 104;                            // 1MHz 9600
  UCA0BR1 = 0;                              // 1MHz 9600
  UCA0MCTL = UCBRS0;                        // Modulation UCBRSx = 1
  UCA0CTL1 &= ~UCSWRST;                     // **Initialize USCI state machine**
  IE2 |= UCA0RXIE;                          // Enable USCI_A0 RX interrupt

  __bis_SR_register(LPM0_bits + GIE);       // Enter LPM0, interrupts enabled
}
#pragma vector=USCIAB0RX_VECTOR
__interrupt void USCI0RX_ISR(void)
{
  while (!(IFG2&UCA0TXIFG));                // USCI_A0 TX buffer ready?
  UCA0TXBUF = UCA0RXBUF;                    // TX -> RXed character
}

使用特权

评论回复
34
zhaoxqi| | 2018-5-16 09:47 | 只看该作者
安装了一个MSPWare_2_40_00_37_setup,结果是ccs才能用,我装的是IAR。。。

使用特权

评论回复
35
huangchui| | 2018-5-16 09:51 | 只看该作者
__interrupt void USCI0RX_ISR(void)
{
  while (!(IFG2&UCA0TXIFG));                // USCI_A0 TX buffer ready?
  UCA0TXBUF = UCA0RXBUF;                    // TX -> RXed character
}

使用特权

评论回复
36
zhenykun| | 2018-5-16 09:55 | 只看该作者

这个得有例程才行的。

使用特权

评论回复
37
wyjie| | 2018-5-16 10:01 | 只看该作者
430的USCI串口(UART mode)初始化设置十分繁杂, UCA0BR0  UCA0BR1   UCA0MCTL 等还需按照波特率计算

使用特权

评论回复
38
jlyuan| | 2018-5-16 10:04 | 只看该作者
#define clock 8000000
#define UCBRS(x) UCBRS_##x
void uart_init(long baud)
{
      float  x  =  clock / baud ;
      long  y  =  clock / baud ;
      char n;
      P1SEL  =  BIT1  +  BIT2 ;                     // P1.1 = RXD, P1.2=TXD
      P1SEL2  =  BIT1  +  BIT2 ;   
      UCA0CTL1|=UCSSEL_2 ;
     
      UCA0BR0  =  y % 256;                        
      UCA0BR1  =  y / 256;
     
      n=(char)((x-y)*8);
      UCA0MCTL=2*n; //UCBRS_n n为*2     
      UCA0CTL1 &= ~UCSWRST;                    
      IE2  |=  UCA0RXIE ;         
}
UCA0MCTL=2*n; 这里是移位操作,详情请看register。
当然,时钟修改了的话,也要记得把clock修改一下。
好用的话,大家支持一个吧,下面我把头文件共享,支持printf,getchar等

使用特权

评论回复
39
yszong| | 2018-5-16 10:08 | 只看该作者
msp430f541x、msp430f543x多达4个通用串行通信接口(USCI)模块,支持多种串行通信模式,不同的 USCI 模块支持不同的模式。

使用特权

评论回复
40
wuhany| | 2018-5-16 10:10 | 只看该作者
#include "msp430x54x.h"
// ACLK = REFO = 32768Hz, MCLK = SMCLK = default DCO/2 = 1048576Hz
// P3.4,5——USCI_A0 TXD/RXD;P9.4,5——USCI_A2 TXD/RXD;P10.4,5——USCI_A3 TXD/RXD;
void main(void)
{
  WDTCTL = WDTPW + WDTHOLD;                 // Stop WDT
  P5SEL = 0xc0;                             // P5.6,7 = USCI_A1 TXD/RXD
  UCA1CTL1 |= UCSWRST;                      // **Put state machine in reset**
  UCA1CTL1 |= UCSSEL_2;                     // SMCLK
  UCA1BR0 = 9;                              // 1MHz 115200 (see User's Guide)
  UCA1BR1 = 0;                              // 1MHz 115200
  UCA1MCTL |= UCBRS_1 + UCBRF_0;            // Modulation UCBRSx=1, UCBRFx=0
  UCA1CTL1 &= ~UCSWRST;                     // **Initialize USCI state machine**
  UCA1IE |= UCRXIE;                         // Enable USCI_A1 RX interrupt
  __bis_SR_register(LPM0_bits + GIE);       // Enter LPM0, interrupts enabled
}
// Echo back RXed character, confirm TX buffer is ready first,发送数据之前确定发送缓存准备好
#pragma vector=USCI_A1_VECTOR
__interrupt void USCI_A1_ISR(void)
{
  switch(__even_in_range(UCA1IV,4))
  {
  case 0:break;                             // Vector 0 - no interrupt
  case 2:                                   // Vector 2 - RXIFG
   while (!(UCA1IFG&UCTXIFG));             // USCI_A1 TX buffer ready?
    UCA1TXBUF = UCA1RXBUF;                  // TX -> RXed character
    break;
  case 4:break;                             // Vector 4 - TXIFG
  default: break;
  }
}

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则