快速入门msp430g2553
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相关推荐
- 【51单片机快速入门指南】4.5:I2C 与 TCA6416实现双向 IO 扩展
目录 硬知识 IO 扩展芯片 TCA6416A TAC6416A 的寄存器 IO 输入寄存器 IO 输出寄存器 IO 反相寄存器 IO 方向寄存器 TCA6416A 的操作 TCA6416A 写数据 ...
- Shiro第一个程序:官方快速入门程序Qucickstart详解教程
目录 一.下载解压 二.第一个Shiro程序 1. 导入依赖 2. 配置shiro配置文件 3. Quickstart.java 4. 启动测试 三.shiro.ini分析 四.Quickstart. ...
- 计算机入门新人必学,异世修真人怎么玩?新手快速入门必备技巧
异世修真人怎么快速入门?最近新出来的一款文字修仙游戏,很多萌新不知道怎么玩?进小编给大家带来了游戏新手快速入门技巧攻略,希望可以帮到大家. 新手快速入门攻略 1.开局出来往下找婆婆,交互给点钱,旁边有 ...
- Spring Boot 2 快速教程:WebFlux 快速入门(二)
2019独角兽企业重金招聘Python工程师标准>>> 摘要: 原创出处 https://www.bysocket.com 「公众号:泥瓦匠BYSocket 」欢迎关注和转载,保留摘 ...
- Apache Hive 快速入门 (CentOS 7.3 + Hadoop-2.8 + Hive-2.1.1)
2019独角兽企业重金招聘Python工程师标准>>> 本文节选自<Netkiller Database 手札> 第 63 章 Apache Hive 目录 63.1. ...
- 《iOS9开发快速入门》——导读
本节书摘来自异步社区<iOS9开发快速入门>一书中的目录,作者 刘丽霞 , 邱晓华,更多章节内容可以访问云栖社区"异步社区"公众号查看 目 录 前 言 第1章 iOS ...
- BIML 101 - ETL数据清洗 系列 - BIML 快速入门教程 - 序
BIML 101 - BIML 快速入门教程 做大数据的项目,最花时间的就是数据清洗. 没有一个相对可靠的数据,数据分析就是无木之舟,无水之源. 如果你已经进了ETL这个坑,而且预算有限,并且有大量的 ...
- python scrapy菜鸟教程_scrapy学习笔记(一)快速入门
安装Scrapy Scrapy是一个高级的Python爬虫框架,它不仅包含了爬虫的特性,还可以方便的将爬虫数据保存到csv.json等文件中. 首先我们安装Scrapy. pip install sc ...
- OpenStack快速入门
OpenStack云计算快速入门(1) 该教程基于Ubuntu12.04版,它将帮助读者建立起一份OpenStack最小化安装.我是五岳之巅,翻译中多采用意译法,所以个别词与原版有出入,请大家谅解.我 ...
最新文章
- 基于Matlab的跨孔CT胖射线追踪算法(三)
- 【BZOJ1911】【codevs1318】特别行动队,斜率优化DP
- 如何做相册_我是如何对2000张照片进行批量套版的
- ORA-01795: 列表中的最大表达式数为1000的解决方法
- python简单程序实例-python下10个简单实例代码
- java回车不终止_java 在console行输入一串String后回车,仍无法停止。 下面的程序是计算相似度的,当用户输入关键字后...
- 连接和关闭资源工具类
- sqlserver操作符篇 优化
- python猜数字游戏实验报告_猜数字游戏实验报告
- 古力乐简易网址导航综合搜索引擎站html源码
- MapReduce实现kmeans算法
- overflow and underflow
- 马斯克认错:裁掉他们是我最大的错误,但黑粉们却没能笑太久...
- 自动驾驶仿真时如何采集数据做地图
- Obsidian 插件(二):Advanced_Slides 的使用
- 小尝试:基于指标体系的数据仓库搭建和数据可视化
- vs2015 web_2015年新的Web布局想法
- 电脑卡是什么原因?电脑卡怎么处理?
- Android Studio:模拟器不能运行 控制台显示 VCPU shutdown request
- 靠高手不如靠自己!笔记本验机软件全教程[转]
热门文章
- hutool工具类导出excel添加水印
- ERROR 1406 (22001): Data Too Long, field len 30, data len 48
- 华为手机7个超实用的功能,关键时刻帮你大忙,赶紧开启吧!
- 【四分之四拍】四分之四拍每拍实际占多长时间?【用最理科的方式解释音乐里的这些玩意,不对之处欢迎指正】
- 中国移动M2M终端规范——WMMP协议分册
- 热门项目排行榜 TOP 50
- 老猫桃u盘linux启动盘,老毛桃U盘启动盘制作教程
- 视觉伺服 二、IBVS原理
- nutch学习、、孤剑之家 宝剑锋从磨砺出,梅花香自苦寒来。我欲仗剑走天涯。 博客园 首页 新随笔 联系 订阅订阅 管理 随笔 - 771 文章 - 8 评论 - 13
- iOS提交马甲包神器KLGenerateSpamCode