1521|1

3836

帖子

19

TA的资源

纯净的硅(中级)

楼主
 

msp430f149单片机串口C程序 [复制链接]

msp430f149单片机简介:
MSP430系列单片机是美国德州仪器(TI)1996年开始推向市场的一种16位超低功耗、具有精简指令集(RISC)的混合信号处理器(Mixed Signal Processor)。

msp430f149是基于闪存或 ROM 的超低功耗 MCU,提供 8MIPS,工作电压为 1.8V - 3.6V,具有高达 60KB 的闪存和各种高性能模拟及智能数字外设。
超低功耗低至:
0.1μA RAM (保持模式) 0.7μA (实时时钟模式) 200μA/MIPS (工作模式) 在 6μs 之内快速从待机模式唤醒
器件参数:
闪存选项:1KB – 60KB ROM 选项:1KB – 16KB RAM 选项:512B – 10KB GPIO 选项:14、22、48 引脚 ADC 选项:10 和 12 位斜率 SAR 其它集成外设:模拟比较器、DMA、硬件乘法器、SVS、12 位 DAC
(以上资料摘自于百度百科)

C语言程序(采用IAR for 430):
[cpp] view plain copy
print?


  • #include    
  • typedef unsigned char uchar;  
  • typedef unsigned int uint;  
  •   
  • uchar  RecBuf[256];  
  • uchar  Windex;  
  • uchar  Rindex;   
  •   
  • void Send1Char(uchar sendchar);  
  • void PutString(uchar *ptr);  
  • void com_init();//串口初始化  
  •   
  • void com_init()  
  • {  
  •     unsigned int i;  
  •     /*下面六行程序关闭所有的IO口*/  
  •     P1DIR = 0XFF;P1OUT = 0XFF;  
  •     P2DIR = 0XFF;P2OUT = 0XFF;  
  •     P3DIR = 0XFF;P3OUT = 0XFF;  
  •     P4DIR = 0XFF;P4OUT = 0XFF;  
  •     P5DIR = 0XFF;P5OUT = 0XFF;  
  •     P6DIR = 0XFF;P6OUT = 0XFF;  
  •    
  •     WDTCTL = WDTPW + WDTHOLD;                 // 关闭看门狗  
  •     P6DIR |= BIT2;P6OUT |= BIT2;              //关闭电平转换  
  •     P6DIR |= BIT7;P6OUT &=~ BIT7;              //关闭电平转换  
  •     P3SEL |= 0x30;                            // 选择P3.4和P3.5做UART通信端口  
  •       
  •     BCSCTL1 &= ~XT2OFF;                       // XT2on  
  •     do  
  •     {  
  •     IFG1 &= ~OFIFG;                           // Clear OSCFault flag  
  •     for (i = 0xFF; i > 0; i--);               // Time for flag to set  
  •     }  
  •     while ((IFG1 & OFIFG));                   // OSCFault flag still set?  
  •     BCSCTL2 |= SELM_2 + SELS;                 // MCLK = SMCLK = XT2 (safe)  
  •       
  •     ME1 |= UTXE0 + URXE0;                     // 使能USART0的发送和接受  
  •     UCTL0 |= CHAR;                            // 选择8位字符  
  •     UTCTL0 |= SSEL1;                          // UCLK = SMCLK  
  •     UBR00 = 0x45;                             // 波特率115200  
  •     UBR10 = 0x00;                             //  
  •     UMCTL0 = 0x00;                            // Modulation  
  •     UCTL0 &= ~SWRST;                          // 初始化UART状态机  
  •     IE1 |= URXIE0;                            // 使能USART0的接收中断  
  •     _EINT();                                  //打开全局中断  
  •       
  •     Windex = 0;  
  •     Rindex = 0;  
  • }  
  •   
  •   
  • /*******************************************
  • 函数名称:UART0_RXISR
  • 功    能:UART0的接收中断服务函数,在这里唤醒
  •           CPU,使它退出低功耗模式
  • 参    数:无
  • 返回值  :无
  • ********************************************/  
  • #pragma vector = UART0RX_VECTOR  
  • __interrupt void UART0_RXISR(void)  
  • {  
  •     if(RXBUF0 == 0x0d)   LPM1_EXIT;  
  •     else  
  •     {  
  •         RecBuf[Windex++] = RXBUF0;  
  •         Windex &= 0x7f;//when Windex=0x80,changed to 0x00;  
  •     }  
  • }  
  • /*******************************************
  • 函数名称:Send1Char
  • 功    能:向PC机发送一个字符
  • 参    数:sendchar--要发送的字符
  • 返回值  :无
  • ********************************************/  
  • void Send1Char(uchar sendchar)  
  • {  
  •       while (!(IFG1 & UTXIFG0));    //等待发送寄存器为空           
  •       TXBUF0 = sendchar;   
  • }  
  • /*******************************************
  • 函数名称:PutSting
  • 功    能:向PC机发送字符串
  • 参    数:ptr--指向发送字符串的指针
  • 返回值  :无
  • ********************************************/  
  • void PutString(uchar *ptr)  
  • {  
  •       while(*ptr != '\0')  
  •       {  
  •             Send1Char(*ptr++);                     // 发送数据  
  •       }  
  •       while (!(IFG1 & UTXIFG0));  
  •       TXBUF0 = 0x0d;   
  •       while (!(IFG1 & UTXIFG0));  
  •       TXBUF0 = 0x0a;                              //发送换行指令  
  • }  
  •   
  •   
  • /********************主函数********************/  
  • void main(void)  
  • {  
  •   
  •     com_init();  
  •       
  •     PutString("welcome to my blog");  
  •     PutString("I am meizumx4!");  
  •       
  •     while(1)  
  •     {  
  •         LPM1;  
  •     }  
  • }  


-------------------------------------------------------
通信格式:N.8.1,  115200
无校验,8个数据位,1个停止位,波特率115200
------------------------------------------------------



最新回复

你好,我的代码跟你的差不多,但自己写的数据就是传不到显示屏上,这是为什么呢?  详情 回复 发表于 2017-7-24 15:26
 
点赞 关注

回复
举报

1

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
你好,我的代码跟你的差不多,但自己写的数据就是传不到显示屏上,这是为什么呢?
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条
【干货上新】电源解决方案和技术第二趴 | DigiKey 应用探索站
当月好物、电源技术资源、特色活动、DigiKey在线实用工具,干货多多~

查看 »

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

 
机器人开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网 10

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表