MSP430F149串口收发程序详解
来源:互联网 发布:lol显示网络连接异常 编辑:程序博客网 时间:2024/05/29 19:14
MSP430单片机的串口收发程序涉及到多个寄存器,可以一步一步按照以下步骤进行配置:
1、首先将用到的IO口设置为第二功能,例如要使用P3.4和P3.5作为USART0的TXD和RXD,则有 P3SEL |= BIT3+BIT4;
2、使能串口收发功能,要配置以下寄存器
如果既要收,又要发,则需要将UTXE0和URXE0置1,因为他们默认都是不打开的。
在IAR的头文件中有关于两位的掩码:
#define UTXE0 (0x80)#define USPIE0 (0x40)
因此,我们可以直接使用语句:ME1 |= UTXE0 + URXE0;3、选择每帧的数据位的个数,需要配置寄存器:默认的是7bit数据位,因此将CHAR位置1就是8位数据位。UCTL0 |= CHAR;4、选择波特率发生源,MSP430F149的波特率发生源有四种波特率的分频系数要求大于3,要选择合适的时钟源,可以遵循以下规则:当波特较低时(<9600),可以选择ACLK,辅助时钟一般情况下使用是32768Hz的Watch Oscilliater,当波特率较高时要使用SMCLK子系统时钟。在IAR的头文件中有如下定义:#define SSEL0 (0x10) /* Clock Source Select 0 */因此要选用ACLK,可以使用:UTCTL0 |= SSEL0;5、配置波特率,这个需要结合选用的时钟源进行相应的计算:首先它需要用到三个寄存器UXBR0,UXBR1和UXMCLK然后要弄清楚分频比:其中的BRCLK是指波特率发生器的时钟源的频率,例如本例当中使用的ACLK= 32768Hz, baude rate是指我们最终希望配置成的频率,例如本例需要的是9600那么N=32768/9600=3.41UXBRO和UXBR1组合为一个16位的寄存器,它保存整数部分,所以UXBR0=3,UXBR1=0;UXMCLK用来保存小数部分,小数部分的计算比较复杂首先让小数部分0.41*8=5.08 取整就是5则UXBR1这个8位寄存器中就应该有5个1,这五个1要分布相对平均,可以取01001010,就是4A要注意UXBR1的取值并不唯一。在User's Guide中已经计算好的有如下:这些是常用值,建议使用的时候参考参考,免去计算的麻烦。6、软件清除复位标志位寄存器如下:其中第一位用于是否具有软件复位UART功能,一般需要关闭该功能,也就是复位。
UCTL0 &= ~SWRST;7、最后我们需要打开中断,当然如果你不需要使用中断收发而使用查询方式收发,那么就不用打开中断。需要配置的寄存器如下:可以看到默认的情况下,USART的发送中断和接收中断是关闭的,在本例当中,我们用到了接收中断,因此:IE1 |= URXIE0;到此,整个程序基本就结束了。#include <msp430x14x.h>void main(void){ WDTCTL = WDTPW + WDTHOLD; // Stop WDT P3SEL |= 0x30; // P3.4,5 = USART0 TXD/RXD ME1 |= UTXE0 + URXE0; // Enable USART0 TXD/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; // Enable USART0 RX interrupt// Mainloop for (;;) { _BIS_SR(LPM3_bits + GIE); // Enter LPM3 w/interrupt while (!(IFG1 & UTXIFG0)); // USART0 TX buffer ready? TXBUF0 = RXBUF0; // RXBUF0 to TXBUF0 }}// UART0 RX ISR will for exit from LPM3 in Mainloop#pragma vector=UART0RX_VECTOR__interrupt void usart0_rx (void){ _BIC_SR_IRQ(LPM3_bits); // Clear LPM3 bits from 0(SR)}
阅读全文0 0
- MSP430F149串口收发程序详解
- msp430f149单片机串口C程序
- linux串口收发程序
- 串口收发程序
- OPENWRT串口收发测试详解
- stm32f103串口1串口2收发程序
- MSP430F149按键检测程序
- Delphi+MSComm控件串口收发程序
- 51单片机(AT89C52)串口收发程序
- STM32F030学习之串口收发程序
- [CSR8] 分享一个CSR8670串口收发程序
- MSP430F149的DS18B20C语言程序
- MSP430F149和PC机串口通信问题
- 2440裸机程序——串口收发数据
- Linux串口程序收发16进制数据错误
- [CSR8] 分享一个CSR8670串口收发程序 [复制链接]
- MSP430f149上LCD显示的程序【转载】
- 串口以及USB转串口收发程序(16进制数的读取发送)
- python采集第一步
- Java循环赋值和循环设置属性问题
- jQuery的callback函数
- HashMap和ConcurrentHashMap的区别,HashMap的底层源码。
- 【贪心】活动选择
- MSP430F149串口收发程序详解
- 如何push一个docker镜像到DockerHub上
- 微信小程序基于node.js的websocket服务器搭建和SSL证书申请、配置全家桶
- Nginx location配置解析
- 171031-自学指针参数,引用参数【连续第八天】
- TreeMap、HashMap、LindedHashMap的区别。
- 【Android 数据库框架总结,总有一个适合你!】
- poj2546—Circular Area(两圆相交面积)
- python使用import导入文件夹中的文件
原创粉丝点击
热门IT博客
热门问题
老师的惩罚
人脸识别
我在镇武司摸鱼那些年
重生之率土为王
我在大康的咸鱼生活
盘龙之生命进化
天生仙种
凡人之先天五行
春回大明朝
姑娘不必设防,我是瞎子
税率怎么计算
建筑劳务税率
投资利税率
股利税率
小规模纳税人税率
2019年增值税税率调整
营改增范围及税率
小规模增值税税率
进口汽车关税税率
一般纳税人的税率是多少
劳务派遣公司税率
建筑劳务公司税率
营改增增值税税率
高新技术企业税率
汽车租赁公司税率
房地产增值税税率
个人出租房屋税率
旅游业增值税税率
增值税进项税税率
五级超额累进税率
企业所得税的税率
小规模纳税人税率是多少
2019个人所得税税率表
个人所得税综合所得税率
2019年个人所得税税率表
小规模纳税人的税率
营改增后建筑业税率
农副产品增值税税率
增值税小规模纳税人税率
高新企业所得税税率
建筑行业增值税税率
运输企业增值税税率
高新技术企业的税率
小规模纳税人增值税税率
营业税金及附加税率
营改增后餐饮业税率
高新技术企业所得税率
装卸搬运营业税税率
房地产企业增值税税率
金银首饰消费税税率
广告业一般纳税人税率