历史上的今天
今天是:2025年01月30日(星期四)
2018年01月30日 | msp430f449的RS232接口程序
2018-01-30 来源:eefocus
#include "MSP430x44x.h"
void init_UART(void);
void uart_start(void);
void uart_send(void);
void uart_receive(void);
unsigned char RXDATA_BUF[10],TXDATA_BUF[10]={0xbd,0x77,0x3d,0xc5,0xc6,0xf5,0x68,0x0d,0x6b,0xff};
unsigned int RX_count=0,TX_count=0,TXBUF_num=10,RXBUT_num=10,FLAG;
void main(void)
{ init_uart();
uart_start();
while(1)
{_BIS_SR(CPUOFF);
_NOP();
}
}
--------------------------------------------------------
void init_uart(void) //初始化UART
{ unsigned int i;
WDTCTL=WDTPW+WDTHOLD;
FLL_CTL1|=XT2OFF+SELM_XT2+SELS; //选择MCLK时钟源
do //等待时钟稳定
{ IFG1&=~OFIFG;
for(i=0;i<0xff;i++);
}while((FLL_CTL0&XT2OF)==XT2OF);
UCTL0|=SWRST; //控制寄存器位
UCTL0|=CHAR;
UTCTL0=SSEL0+SSEL1; //选择发送时钟源复位
UBR00=0XA0; //波特率9600
UBR10=0X01;
UMCTL0=0X5E;
UCTL0&=~SWRST; //选择发送时钟源置位
ME1|=URXE0+UTXE0; //使能TXD RXD
IE1|=URXIE0;
IFG1=0X00;
P2SEL|=0X30; //模块选用
P2DIR|=0X10;
for(i=0;i<10;i++) {RXDATA_BUF=0;}//清接收缓存
_EINT();
}
---------------------------------------------------------
void uart_start(void) //启动发送
{ IE1|=UTXIE0;
while((UTCTL0&BIT0)!=BIT0);
TXBUF0=TXDATA_BUF[0];
TX_count=1;
}
----------------------------------------------------------
void uart_receive(void) //接收
{ RXDATA_BUF[RX_count]=RXBUF0;
RX_count+=1;
if(RX_count>=RXBUT_num) {RX_count=0;}
}
-----------------------------------------------------------
void uart_send(void) //发送
{ TXBUF_num-=1;
if(TXBUF_num>0)
{ TXBUF0=TXDATA_BUF[TX_count];
TX_count+=1;
}
else
{ FLAG+=1;
if(FLAG>10) {IE1&=~UTXIE0;}
else { TXBUF_num=10;
TX_count=0;
uart_start();
}
}
}
-------------------------------------------------------------
interrupt [UART0TX_VECTOR] void uart_tx(void)//发送中断响应
{
uart_send();
}
--------------------------------------------------------------
interrupt [UART0RX_VECTOR] void uart_rx(void)//接收中断响应
{
uart_receive();
}
史海拾趣
|
一、嵌入式系统的基本概念 IEEE 对嵌入式系统的定义:用于控制、监视或者辅助操作机器和设备的装置(Devices used to control or Assist the Opetation of Equipment,Machinery or Plants)。 目前国内比较公认的定义:以应用为中心、以计算机技 ...… 查看全部问答> |
|
小弟刚刚接触ARM,跟着开发板的说明移植内核,发现自己的Linux系统下不会烧写镜像,可以说是啥也不会,望有经验的同志告之 PS:小弟用惯了Linux,不想回到Windows下去,望能有详细的方法(小白一个)… 查看全部问答> |
|
中国嵌入式ARM超级群109739525 为嵌入式从业者提供交流平台,旨在推动嵌入式ARM在中国的普及和发展,欢迎各位高手们加入互通有无,互相学习!… 查看全部问答> |
|
接触WINCE5.0不久,不知道怎么办. WINCE 原来的缺省显示支持240*320的LCD,而我们用的LCD是320*240.在PB中把WINCE5.0自带的ImageViewer软件加入过来,发现很多地方,打开该应用程序菜单项窗口以后,有些窗口显示框超出了我的LCD.由于看不到WINCE源代码, ...… 查看全部问答> |
|
我做了一个基于CAN总线的通信程序,从上位机定时接收控制指令,但大概每过3、4个小时就会收到一帧错误报文。这个问题困扰我了很久,一直解决不了,请哪位大侠帮忙指点指点,多谢了。 问题是这样的,我用19号can邮箱从上位机接收数据,接收的数据为 ...… 查看全部问答> |




