#include "uart.h"
#include
#include "typedef.h"
rece_data uart_buf; //串口缓冲区
void init_uart_buf(void)
{
uart_buf.head = 0;
uart_buf.tail = uart_buf.head;
}
//获取串口数据
u8 get_uart_data(u8* data)
{
if(uart_buf.tail == uart_buf.head)
{
return 0;
}
*data = uart_buf.buf[uart_buf.head];
uart_buf.head = (uart_buf.head + 1) % BUF_SIZE;
return 1;
}
//保存串口数据
void save_uart_data(u8 data)
{
uart_buf.buf[uart_buf.tail] = data;
uart_buf.tail = (uart_buf.tail + 1) % BUF_SIZE;
}
//串口初始化
void uart_Init(void)
{
WDTCTL = WDTPW + WDTHOLD; // Stop WDT
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
_EINT(); //Enable interrupt
init_uart_buf();
}
//发送数据
//发送字符
void uart_send_ch(u8 ch)
{
while(!(IFG2& UCA0TXIFG)); //查询发送是否结束
UCA0TXBUF = ch;
IFG2&=~UCA0TXIFG; //清除发送一标志位
}
//发送字符串
void uart_send_str(char *str)
{
for( ; *str ; )
{
uart_send_ch((u8)*str);
str++;
}
}
// Echo back RXed character, confirm TX buffer is ready first
#pragma vector=USCIAB0RX_VECTOR
__interrupt void USCI0RX_ISR(void)
{
u8 data;
while (!(IFG2&UCA0TXIFG)); // USCI_A0 TX buffer ready?
// UCA0TXBUF = UCA0RXBUF; // TX -> RXed character
data = UCA0RXBUF;
save_uart_data(data); //保存数据
}
关键字:msp430g2553 串口通信 驱动程序
引用地址:
msp430g2553与串口通信的驱动程序
推荐阅读最新更新时间:2024-03-16 14:29
AVR单片机(ATmega16L)DS18B20温度传感器驱动程序
在DALLAS网站上下个英文版的datasheet,从第一行开始看,看着看着,感觉非常惊奇,不像我当初想当然的觉得那么难理解啊,除了个别单词不认识,整体上能看出大概意思,装了个金山词霸,不会的单词马上查,发现也不是很费劲的事儿。以前打开个英文的datasheet,看着密密麻麻的英语句子,看都没看就觉得头大,以前实在是太先入为主了,自己还是太浮躁,没有静下心来,认真的看一看。决定以后下芯片资料,直接下原版datasheet。 从头看手册,对照程序完整的看了一遍,发现原因就在写时序上,程序中写字节的函数中有一句:temp_h,与时序图不符,写0时序开始后、DS18B20采样前,并没有拉高数据线,把temp_h注释掉,1602液晶马
[单片机]
linux驱动程序之电源管理之标准linux休眠和唤醒机制分析(二)
三、pm_test属性文件读写 int pm_test_level = TEST_NONE; static const char * const pm_tests = { = none , = core , = processors , = platform , = devices , = freezer , }; // core processors platform devices freezer, 控制范围示意 cat pm_test的时候最终会调用函数pm_test_show(),在终端上打印出上面数组中的字符串,当前的模式用 表示出来。 echo d
[单片机]
STC51-串口通信
1 并行与串行基本通信方式 随着单片机系统的广泛应用和计算机网络技术的普及,单片机的通信功能愈来愈显得重要。单片机通信是指单片机与计算机或单片机与单片机之间的信息交换,通常单片机与计算机之间的通信我们用的较多。 通信有并行和串行两种方式。在单片机系统以及现代单片机测控系统中,信息的交换多采用串行通信方式。 1.1 并行通信方式 并行通信通常是将数据字节的各位用多条数据线同时进行传送,每一位数据都需要一条传输线,如下图所示,8位数据总线的通信系统,一次传送8位数据(1个字节),将需要8条数据线。此外,还需要一条信号线和若干控制信号线,这种方式仅适合于短距离的数据传输,如比较老式的打印机就是通过并口方式
[单片机]
ARM7与FPGA相结合的应用
ARM7与FPGA相结合在工业控制和故障检测中的应用 工业控制中往往需要完成多通道故障检测及多通道命令控制(这种多任务设置非常普遍),单独的CPU芯片由于其外部控制接口数量有限而难以直接完成多路检控任务,故利用ARM芯片与FPGA相结合来扩展检控通道是一个非常好的选择。这里介绍用Atmel公司ARM7处理器(AT91FR40162)和ALTERA公司的低成本FPGA芯片(cyclone2)结合使用完成多通道检控任务的一种实现方法。 各部分功能简介 图1为此系统的结构连接框图。如图所示,ARM芯片与FPGA芯片之间通过数据总线、地址总线及读写控制线相连,而与终端PC则通过串口通信;FPGA与目标设备通过命令控
[嵌入式]
PDIUSBD12 USB 驱动程序
一.实验目的 PDIUSBD12(简称D12) USB 芯片符合USB1.1 协议,广泛应用于各种的USB 设备。 本实验程序展示了如何在Small RTOS51 操作系统中实现D12 驱动程序的编写。 示例主要实现了如下功能:USB 设备的枚举,通过D12 的端点2 接受来自上位机的数 据,并通过 单片机 的串口转发回上位机,同时驱动ZLG7290 显示0~9 的数字。 二.实验设备及器件 PC 机 一台 DP-51PROC 单片机 综合仿真实验仪 一台 USB D12 PARK 模块 一台 USB 连接线 一根 三.实验步骤 1. D12 PARK 插到A6 区的排针内; 2. 使用导线把A2 区的INT1 与A6 区的P1
[单片机]
stm32专题十一:串口通信(一) USART理论
/************************************************************************************************************/ RS232(负逻辑):由三条线(RX、TX、GND)组成。-15v ~ -3v代表逻辑1,+3 ~ +15v代表逻辑0,这里的±是相对于GND而言。 RS485:与232不同,485采用差分双绞线。RS-485总线标准规定了总线接口的电气特性标准即对于2个逻辑状态的定义:正电平在+2V~+6V之问,表示一个逻辑状态;负电平在-2V~-6V之间,则表示另一个逻辑状态;数字信号采用差分传输方式,能够有效减少噪
[单片机]
MSP430G2553测试程序(呼吸灯)
//****************************************************************************** //修改者 http://jiwm.blog.163.com //MSP430G2553 呼吸灯演示程序 - 使用Timer_A,Up Mode, DCO SMCLK // // 介绍: 该程序利用TIMER A 的 UP模式 在P1.6脚产生PWM输出 // 将CCR0设置为1500来定义PWM的周期,利用循环不断改变CCR1的值, // 实现利用改变PWM的占空比来改变LED亮度. // ACLK = na, SMCLK = MCLK = TACLK =
[单片机]
Linux下PCI设备驱动程序开发
一、PCI总线系统体系结构
PCI是外围设备互连(Peripheral Component Interconnect)的简称,作为一种通用的总线接口标准,它在目前的计算机系统中得到了非常广泛的应用。
PCI提供了一组完整的总线接口规范,其目的是描述如何将计算机系统中的外围设备以一种结构化和可控化的方式连接在一起,同时它还刻画了外围设备在连接时的电气特性和行为规约,并且详细定义了计算机系统中的各个不同部件之间应该如何正确地进行交互。
无论是在基于Intel芯片的PC机中,或是在基于Alpha芯片的工作站上,PCI毫无疑问都是目前使用最广泛的一种总线接口标准。同旧式的
[嵌入式]