msp430学习笔记之uart

2019-10-30来源: eefocus关键字:msp430  uart

1 相关知识

MSP430系列,usart模块的波特率值设定是通过以下三个参数决定的:UxBR0,UxBR1,UxMCTL

波特率=BRCLK/N 

BRCLK:时钟源,可以通过寄存器设定何为时钟源; 


N:波特率产生的分频因子。N=UxBR1+UxBR0+UxMCTL,其中UxBR1+UxBR0为整数部分,UxMCTL为设定小数部分 。


举个例子:波特率=9600,时钟源=32。768kHz

N=32768/9600=3.41

很明显:UxBR1+UxBR0=13,即UxBR1=0,UxBR0=13。


首先把小数部分0.41×8=3.28,取整后为3。这个5的意思就是在UxMCTL中的8位里要有3个1,剩下来的就是怎么分配这3个1的位置了。注意一点 就是这3个1要相对分散点。


因此:UBR00 = 0x03;UBR10 = 0x00;UMCTL0 = 0x4A; 


2 代码实现

     

//本平台 msp430f149

#include

 

void usart0_config(void){

P3SEL |= 0x30;                            // P3。4,5 = USART0 TXD/RXD

ME1 |= URXE0 + UTXE0;                     // Enable USART0 T/RXD

UCTL0 |= CHAR;                            // 8-bit character

UTCTL0 |= SSEL0;                          // UCLK = ACLK

UBR00 = 0x03;                             // 32k/9600 - 3。41

UBR10 = 0x00;                             //

UMCTL0 = 0x4A;                            // Modulation

UCTL0 &= ~SWRST;                          // Initialize USART state machine

IE1 |= URXIE0;                            // 使能USART0的接收中断

_EINT();   //开总中断,整个系统中断使能

}

 


//字符发送函数

void send_char(char sendchar){

while (!(IFG1 & UTXIFG0));    //等待发送寄存器为空         

TXBUF0 = sendchar;

}

 

//字符串发送函数

void send_string(char *ptr){

while(*ptr != ''){

send_char(*ptr++);                  // 发送数据

}

send_char('n'); //发送换行指令     

}

 

int main(){

WDTCTL = WDTPW + WDTHOLD;     //默认MCLK = DCO

usart0_config();

P2DIR = 0x80;

P2OUT = 0xff;

while(1){

}

return 0;

}

 

 

//usart0 interrupt receive function

#pragma vector=UART0RX_VECTOR

 

__interrupt void usart0_rx (void)

{

if( RXBUF0 == 0x00 ){    //收到0时,led灯亮,并发送 "led is on"

P2OUT = 0x7f; 

send_string("led is on");

}

if( RXBUF0 == 0x01 ){ //收到1时,led灯亮,并发送 "led is off"

P2OUT = 0xff;

send_string("led is off");

}

}


3 实验结果

每次发送0调试助手都可以收到 "led is on"并且led灯亮,发送1时led灯灭,同时调试助手显示"led is off",注意:16进制发送数据

关键字:msp430  uart 编辑:什么鱼 引用地址:http://news.2689mr.com/mcu/ic478718.html 本网站转载的所有的文章、图片、音频视频文件等资料的版权归版权所有人所有,本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如果本网所选内容的文章作者及编辑认为其作品不宜公开自由传播,或不应无偿使用,请及时通过电子邮件或电话通知我们,以迅速采取适当措施,避免给双方造成不必要的经济损失。

上一篇:MSP430杂谈--AD7745硬件IIC驱动与模拟IIC驱动
下一篇:MSP430之IAR map文件解析

关注eeworld公众号 快捷获取更多信息
关注eeworld公众号
快捷获取更多信息
关注eeworld服务号 享受更多官方福利
关注eeworld服务号
享受更多官方福利

推荐阅读

Ubuntu 下TinyOS msp430 Toolchain mspgcc升级
目前,TinyOS官网发布的TinyOS2.1.1,其内部支持的mspgcc还是老版本3.2.3,对于TI 430系列高端单片机都不支持,支持的也仅为msp430x1611等低端系列。为了把TinyOS移植到更高端的单片机上,比如msp430f2618,就必须升级MSP Toolchain。Sourceforge上已经更新了最新版本的mspgcc4,这个本版全面的支持TI 430全系列,最新支持GCC版本为4.4.3 ,支持GDB本版为7.0.1,Insight最新版本为6.8-1。更多的性能改进可以参考http://mspgcc4.sourceforge.net/。首先,安装必要的软件包,这些可以使用debian的apt-get
发表于 2020-05-20
MSP430--UART模块
0.5取“1”,如果小于0.5取“0”,具体实例可见参考资料1。 UART是通用异步串行接口的简称。串行通信接口是用来与单片机外界系统进行通信桥梁,比如可以吧单片机ADC转换的数据通过串口发送给PC机(上位机),经上位机处理之后在发回给单片,达到通信的目的。TI公司的MSP430系列单片机均具有UART功能,其中大部分还和SPI,I2C功能复用,通过相关寄存器的配置,可以很轻松地就实现了UART,SPI,I2C的通信功能。在此以MSP430x149为例介绍UART功能及其实现过程。1.异步通信的结构:2.UART数据格式(数据协议):  异步通信再不发送数据的时候,通信线路上总是呈现高电平状态,称为空闲状态
发表于 2020-05-20
MSP430--UART模块
MSP430G2转换结果数据类型
以下是程序,软件用的IAR:#include "io430.h" #include "dandao_duocai.h" #define delay_us(x) __delay_cycles((long)(CPU_F*(double)x/1000000.0)) #define delay_ms(x) __delay_cycles((long)(CPU_F*(double)x/1000.0)) #define dataout P2OUT unsigned int ADC10_Result[100]; int d,c;void cheek_clock() { BCSCTL3_bit.LFXT1S0
发表于 2020-05-20
2.0 MSP430的IO配置
MSP430单片机一般有多组IO口,P1、P2、P3、P4、P5和P6等。在单片机所有的端口都有控制输入输出方向和进行输入、输出的能力。其中P1、P2组端口具有中断寄存器,能够响应外部中断,大部分端口拥有第二功能。每一个端口都有PxDIR(信号方向)、PxIN(输入)、PxOUT(输出)和PxSEL(功能选择)4个寄存器。P1、P2 可以配置为输入信号上升沿或者下降沿触发中断,但固定的电平不会引起中断,中断所使用的寄存器为:PxIE(中断使能)、PxIES(中断触发沿)、PxIFG(中断标志)。还有一个寄存器PxREN,这个寄存器主要是配置单片机内部的上下拉电阻,注意,早期的单片机并没有内部上下拉电阻。PxDIR:信号方向控制
发表于 2020-05-20
2.0 MSP430的IO配置
MSP430应用技巧3:MSP-FET430UIF V3驱动程序的安装
原先一直使用正版windows操作系统和CCS进行MSP430的程序设计,在升级CCS以后,插上仿真器都会要求升级仿真器上的firmware,更新后一直使用正常。由于计算机硬盘损坏,装了个和谐的windows win7旗舰版操作系统(这里说明的是,Dell公司很不像话,操作系统的镜像虽然在硬盘上,但是操作系统也是用户花钱购置的,你不能硬盘坏了,操作系统就不能用了吧,为这事情我和Dell公司沟通很多次,三位支持工程师给我了三种不同的回答,第一个说给我一个正版的光盘寄过来,我等了一周没有消息了;第二个说给我个正版的链接,我自己装就好了,呵呵,仔细一看哪个连接是Microsoft的Win7 SP2的更新,真不知这位工程师怎么配在Dell
发表于 2020-05-18
MSP430应用技巧3:MSP-FET430UIF V3驱动程序的安装
MSP430f5529——点阵LCD测试小程序
#include "msp430.h"#include "HAL_Buttons.h"#include "HAL_Board.h"#include "HAL_Dogs102x6.h"void main(void){uint8_t contrast ;uint8_t brightness ;WDTCTL = WDTPW + WDTHOLD; //关闭看门狗Dogs102x6_init(); //初始化LCDDogs102x6_backlightInit(); //背光初始化contrast = 11;brightness = 11
发表于 2020-05-18
小广播
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号 电信业务审批[2006]字第258号函 京公海网安备110108001534 Copyright © 2005-2020 EEWORLD。com。cn, Inc。 All rights reserved
天音彩票网 博讯赛车机器人 首存送彩金低打码 送彩金200的网站大白菜 永利赛车机器人 送彩金棋牌网站 申请免费自动送彩金 2019年无需申请送彩金 彩票大赢家 欢乐谷送彩金活动