1.如何新建一个工程

2.点亮一个led灯

首先知道led1的io口是1.0

/*将P1.0设置为输出,P1DIR是P1口的方向寄存器*/P1DIR |= BIT0;/*将P1.0设置为高电平,点亮LED1*/P1OUT |= BIT0;

led2(闪烁)的io口是1.6

/*初始化LED2所在IO口P1.6为输出*/P1DIR |= BIT6;/*初始化LED2所在IO口P1.6为低电平,LED2初始状态为灭*/P1OUT &= ~BIT6;while(1){P1OUT ^= BIT6;/*此语句等效为P1OUT = P1OUT ^ BIT6__delay_cycles(500000);}

3.按键控制led

知道按键是p1.3口

这里需要知道上拉电阻
(如果没有启动上拉电阻的话,按键灯带到效果)

    /*初始化按键所在IO口P1.3为输入*/P1DIR &= ~BIT3;/*使能P1.3口的上拉电阻*/P1REN |= BIT3;P1OUT |= BIT3;
     if(P1IN & BIT3)//如果P1.3口为高电平,证明按键没被按下{P1OUT &= ~BIT6;//熄灭LED2}else//如果P1.3为低电平,按键被按下{P1OUT |= BIT6;//点亮LED2}

4.主时钟相关概念

    /*设置MCLK频率*/DCOCTL = CALDCO_8MHZ;BCSCTL1 = CALBC1_8MHZ;

5.串口调试发送数据

 /*配置DCO为1MHz*/DCOCTL = CALDCO_1MHZ;BCSCTL1 = CALBC1_1MHZ;/*配置SMCLK的时钟源为DCO*/BCSCTL2 &= ~SELS;/*SMCLK的分频系数置为1*/BCSCTL2 &= ~(DIVS0 | DIVS1);/*复位USCI_Ax*/UCA0CTL1 |= UCSWRST;/*选择USCI_Ax为UART模式*/UCA0CTL0 &= ~UCSYNC;/*配置UART时钟源为SMCLK*/UCA0CTL1 |= UCSSEL1;/*配置波特率为9600@1MHz*/UCA0BR0 = 0x68;UCA0BR1 = 0x00;UCA0MCTL = 1 << 1;/*使能端口复用*/P1SEL |= BIT1 + BIT2;P1SEL2 |= BIT1 + BIT2;/*清除复位位,使能UART*/UCA0CTL1 &= ~UCSWRST;

后期我们可以封装,便于观看

void InitSystemClock(void)
{/*配置DCO为1MHz*/DCOCTL = CALDCO_1MHZ;BCSCTL1 = CALBC1_1MHZ;/*配置SMCLK的时钟源为DCO*/BCSCTL2 &= ~SELS;/*SMCLK的分频系数置为1*/BCSCTL2 &= ~(DIVS0 | DIVS1);
}void InitUART(void)
{/*复位USCI_Ax*/UCA0CTL1 |= UCSWRST;/*选择USCI_Ax为UART模式*/UCA0CTL0 &= ~UCSYNC;/*配置UART时钟源为SMCLK*/UCA0CTL1 |= UCSSEL1;/*配置波特率为9600@1MHz*/UCA0BR0 = 0x68;UCA0BR1 = 0x00;UCA0MCTL = 1 << 1;/*使能端口复用*/P1SEL |= BIT1 + BIT2;P1SEL2 |= BIT1 + BIT2;/*清除复位位,使能UART*/UCA0CTL1 &= ~UCSWRST;}

主函数里面直接

InitSystemClock();
InitUART();

我通过按键去发送数据,与此同时我判断发送的寄存器是否忙(比如我很快的按下2次,就会发现可能只发了一次)

6.IO中断

    /*打开P1.3口中断*/P1IE |= BIT3;/*设定为下降沿触发*/P1IES |= BIT3;/*清除中断标志位*/P1IFG &= ~BIT3;/*打开全局中断*/__bis_SR_register(GIE);

在最后加入

__interrupt void Port1_ISR(void)
{if(P1IFG & BIT3)//判断是否是P1.3产生中断{P1IFG &= ~BIT3;//清除标志位P1OUT ^= BIT6;}
}

7.串口接收

新建函数

void Execute(uint8_t *combuff)
{const uint8_t charbuff[5][10] = {"王龙?","米靳隆?","班长?","LED1 On!","LED Off!"};//保存预置命令if(combuff[0] == charbuff[0][0] && combuff[1] == charbuff[0][1])//王龙?{UARTSendString("萌萌哒!!(⊙o⊙)",16);//}else if(combuff[0] == charbuff[1][0] && combuff[1] == charbuff[1][1])//米靳隆?{UARTSendString("我想吃烹鱼宴( ▼-▼ )",21);}else if(combuff[0] == charbuff[2][0] && combuff[1] == charbuff[2][1])//班长?{UARTSendString("团支书!!╮(╯-╰)╭",20);}else if(combuff[0] == charbuff[3][0] && combuff[6] == charbuff[3][6])//LED1 On!{UARTSendString("Yes!My Lord!(^^ゞ",17);P1OUT |= BIT0;}else if(combuff[0] == charbuff[4][0] && combuff[6] == charbuff[4][6])//LED1 Off!{UARTSendString("Yes!My Highness!(^^ゞ",21);P1OUT &= ~BIT0;}else{UARTSendString("What Are You Fucking Talking!(╬▔皿▔)凸",41);}
}

主函数

P1DIR |= BIT0;
P1OUT &= ~BIT0;
__bis_SR_register(GIE);//打开全局中断
while(1)
{
if(iscomend)
{
iscomend = 0;//清除标志位,防止重复执行
Execute(combuff);//执行命令
}
}
return 0;
__interrupt void UART_Receive_ISR(void)
{static uint8_t cnt = 0;if(IFG2 & UCA0RXIFG)//检测是否是USCI_A0的接收中断,USCI_A0和USIC_B0的接收中断共享同一向量{IFG2 &= ~UCA0RXIFG;//清除标志位combuff[cnt++] = UCA0RXBUF;//保存命令cnt %= 20;//防止cnt大于20,导致缓冲区溢出if(combuff[cnt - 1] == '\n')//如果检测到命令结束符(以换行作为命令结束){cnt = 0;//复位计数器iscomend = 1;//命令接收完毕}}
}

快速入门msp430g2553相关推荐

  1. 【51单片机快速入门指南】4.5:I2C 与 TCA6416实现双向 IO 扩展

    目录 硬知识 IO 扩展芯片 TCA6416A TAC6416A 的寄存器 IO 输入寄存器 IO 输出寄存器 IO 反相寄存器 IO 方向寄存器 TCA6416A 的操作 TCA6416A 写数据 ...

  2. Shiro第一个程序:官方快速入门程序Qucickstart详解教程

    目录 一.下载解压 二.第一个Shiro程序 1. 导入依赖 2. 配置shiro配置文件 3. Quickstart.java 4. 启动测试 三.shiro.ini分析 四.Quickstart. ...

  3. 计算机入门新人必学,异世修真人怎么玩?新手快速入门必备技巧

    异世修真人怎么快速入门?最近新出来的一款文字修仙游戏,很多萌新不知道怎么玩?进小编给大家带来了游戏新手快速入门技巧攻略,希望可以帮到大家. 新手快速入门攻略 1.开局出来往下找婆婆,交互给点钱,旁边有 ...

  4. Spring Boot 2 快速教程:WebFlux 快速入门(二)

    2019独角兽企业重金招聘Python工程师标准>>> 摘要: 原创出处 https://www.bysocket.com 「公众号:泥瓦匠BYSocket 」欢迎关注和转载,保留摘 ...

  5. Apache Hive 快速入门 (CentOS 7.3 + Hadoop-2.8 + Hive-2.1.1)

    2019独角兽企业重金招聘Python工程师标准>>> 本文节选自<Netkiller Database 手札> 第 63 章 Apache Hive 目录 63.1. ...

  6. 《iOS9开发快速入门》——导读

    本节书摘来自异步社区<iOS9开发快速入门>一书中的目录,作者 刘丽霞 , 邱晓华,更多章节内容可以访问云栖社区"异步社区"公众号查看 目 录 前 言 第1章 iOS ...

  7. BIML 101 - ETL数据清洗 系列 - BIML 快速入门教程 - 序

    BIML 101 - BIML 快速入门教程 做大数据的项目,最花时间的就是数据清洗. 没有一个相对可靠的数据,数据分析就是无木之舟,无水之源. 如果你已经进了ETL这个坑,而且预算有限,并且有大量的 ...

  8. python scrapy菜鸟教程_scrapy学习笔记(一)快速入门

    安装Scrapy Scrapy是一个高级的Python爬虫框架,它不仅包含了爬虫的特性,还可以方便的将爬虫数据保存到csv.json等文件中. 首先我们安装Scrapy. pip install sc ...

  9. OpenStack快速入门

    OpenStack云计算快速入门(1) 该教程基于Ubuntu12.04版,它将帮助读者建立起一份OpenStack最小化安装.我是五岳之巅,翻译中多采用意译法,所以个别词与原版有出入,请大家谅解.我 ...

最新文章

  1. 基于Matlab的跨孔CT胖射线追踪算法(三)
  2. 【BZOJ1911】【codevs1318】特别行动队,斜率优化DP
  3. 如何做相册_我是如何对2000张照片进行批量套版的
  4. ORA-01795: 列表中的最大表达式数为1000的解决方法
  5. python简单程序实例-python下10个简单实例代码
  6. java回车不终止_java 在console行输入一串String后回车,仍无法停止。 下面的程序是计算相似度的,当用户输入关键字后...
  7. 连接和关闭资源工具类
  8. sqlserver操作符篇 优化
  9. python猜数字游戏实验报告_猜数字游戏实验报告
  10. 古力乐简易网址导航综合搜索引擎站html源码
  11. MapReduce实现kmeans算法
  12. overflow and underflow
  13. 马斯克认错:裁掉他们是我最大的错误,但黑粉们却没能笑太久...
  14. 自动驾驶仿真时如何采集数据做地图
  15. Obsidian 插件(二):Advanced_Slides 的使用
  16. 小尝试:基于指标体系的数据仓库搭建和数据可视化
  17. vs2015 web_2015年新的Web布局想法
  18. 电脑卡是什么原因?电脑卡怎么处理?
  19. Android Studio:模拟器不能运行 控制台显示 VCPU shutdown request
  20. 靠高手不如靠自己!笔记本验机软件全教程[转]

热门文章

  1. hutool工具类导出excel添加水印
  2. ERROR 1406 (22001): Data Too Long, field len 30, data len 48
  3. 华为手机7个超实用的功能,关键时刻帮你大忙,赶紧开启吧!
  4. 【四分之四拍】四分之四拍每拍实际占多长时间?【用最理科的方式解释音乐里的这些玩意,不对之处欢迎指正】
  5. 中国移动M2M终端规范——WMMP协议分册
  6. 热门项目排行榜 TOP 50
  7. 老猫桃u盘linux启动盘,老毛桃U盘启动盘制作教程
  8. 视觉伺服 二、IBVS原理
  9. nutch学习、、孤剑之家 宝剑锋从磨砺出,梅花香自苦寒来。我欲仗剑走天涯。 博客园 首页 新随笔 联系 订阅订阅 管理 随笔 - 771 文章 - 8 评论 - 13
  10. iOS提交马甲包神器KLGenerateSpamCode