历史上的今天
今天是:2025年04月10日(星期四)
2019年04月10日 | MSP430 串口接收指令控制LED亮灭
2019-04-10 来源:eefocus
准备器材:MSP430开发板一块,串口线,PC,串口调试助手(可从网上下载)
八位数据,1个停止位,9600波特率无校验
/********************************************************************
//DM430-L型最小系统板串口测试程序,使用单片机的串口0
//使用板载BSL模块或者用户外接串口线到DB9,要求是直连公对母串口线
//使用串口调试助手发送数据到系统板,比如02,03等
//系统板会将收到的数据再发送到串口调试助手,接收采用中断模块,发送用查询
//板载的BSL模块可以通过跳线帽设置为USB转串口模式,笔记本电脑没有串口可以直接代替
//开发板的BSL_Config区的RXD和TXD0连接,TXD和RXD0连接即可,另外2个跳线帽取下
//使用USB转串口功能时,BSL失效,因此操作前应该先将程序下载至芯片中再调整跳线帽
//MSP430F149
********************************************************************/
#include
#include "Config.h"
//*************************************************************************
// MSP430串口初始化
//*************************************************************************
void UART_Init()
{
U0CTL|=SWRST; //复位SWRST
U0CTL|=CHAR; //8位数据模式
U0TCTL|=SSEL1; //SMCLK为串口时钟
U0BR1=baud_h; //BRCLK=8MHZ,Baud=BRCLK/N
U0BR0=baud_l; //N=UBR+(UxMCTL)/8
U0MCTL=0x00; //微调寄存器为0,波特率9600bps
ME1|=UTXE0; //UART1发送使能
ME1|=URXE0; //UART1接收使能
U0CTL&=~SWRST;
IE1|=URXIE0; //接收中断使能位
P3SEL|= BIT4; //设置IO口为普通I/O模式
P3DIR|= BIT4; //设置IO口方向为输出
P3SEL|= BIT5;
}
//*************************************************************************
// 串口0发送数据函数
//*************************************************************************
void Send_Byte(uchar data)
{
while((IFG1&UTXIFG0)==0); //发送寄存器空的时候发送数据
U0TXBUF=data;
}
//*************************************************************************
// 处理来自串口 0 的接收中断
//*************************************************************************
#pragma vector=UART0RX_VECTOR
__interrupt void UART0_RX_ISR(void)
{
uchar data=0;
data=U0RXBUF; //接收到的数据存起来
switch(data)
{
case'1':P6OUT ^= BIT0;break; //打开LED1(再次则熄灭)
case'2':P6OUT ^= BIT1;break;
case'3':P6OUT ^= BIT2;break;
case'4':P6OUT ^= BIT3;break;
case'5':P6OUT ^= BIT4;break;
case'6':P6OUT ^= BIT5;break;
case'7':P6OUT ^= BIT6;break;
case'8':P6OUT ^= BIT7;break;
default:P6OUT = 0xFF;break; //熄灭所有的LED
}
Send_Byte(data); //将接收到的数据再发送出去
}
//*************************************************************************
// 处理来自串口 0 的发送中断,预留
//*************************************************************************
#pragma vector=UART0TX_VECTOR
__interrupt void UART0_TX_ISR(void)
{
}
//*************************************************************************
// 主函数
//*************************************************************************
void main(void)
{
WDT_Init(); //看门狗初始化
Clock_Init();
P6DIR = 0xFF;//选择P6口,设置输出方向
UART_Init();
_EINT();
while(1)
{
}
}
经测试在IAR for 430上代码无错误。
史海拾趣
|
本帖最后由 paulhyde 于 2014-9-15 09:41 编辑 我们要使用的芯片是:ET13X211作为接收 ET13X221作为发送,电路如图所示 接收电路为: 主程序流产图如下: 详细信息在附件。 [ 本帖最后由 njlianjian 于 2009-9-3 09:15 编辑 ] &nbs ...… 查看全部问答> |
|
一、 综合词汇 1、 印制电路:printed circuit 2、 印制线路:printed wiring 3、 印制板:printed board 4、 印制板电路:printed circuit board (PCB) 5、 印制线路板:printed wiring board(PWB) 6、 印制元件:printed component 7、 印 ...… 查看全部问答> |
|
mp3的播放器采用标准的wince api函数来编写的,在wince环境下,能够正常播放、暂停和停止播放,但是在暂停后无法继续播放。具体原因是在暂停后,无法获取暂停时MP3播放的位置。在IMediaSeeking类中,GetCurrentPosition函数获取的播放 ...… 查看全部问答> |
|
各位大侠好! 今天看2440的ds,突然注意到一个问题,就是如果从nand启动话,手册上说先把flash里的前4K复制到steppingstone里,再执行里面的程序,但是有个问题,nand flash的操作很复杂,读写都需要一些命令,时序,在arm还没有 ...… 查看全部问答> |
|
用如下代码软件仿真,A0口不输出10K的PWM波,大哥看看哪里不对?试了很多了,PWM不工作。void main (void){// Set internal RC clock RCCR = RCCRH0;   ...… 查看全部问答> |
|
TI的参考设计中2591的三个电源端都有TLIN inductor,这个TLIN inductor可以不要的吗?还有就是这个TLIN不知道什么意思。… 查看全部问答> |




