- 1、本文档共10页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
MSP430FR6989单片机学习之点亮LED
今天开始跟大家一起分享MSP430FR6989的系列教程
教程用到的硬件平台:TI官方的MSP430FR6989 LaunchPad
编译器:IAR For MSP430。
废话不多说,直接上干货。
1,MSP430FR6989的概述
高达 16MHz 的 16 位 RISC 架构
优化的超低功耗模式
高达128KB的FRAM
五个16位定时器,7个捕捉/比较
日历和闹钟功能的 RTC
16位和32位CRC校验(CRC16、CRC32)
16个外部通道的12位ADC
集成 LCD 驱动器
增强型串行通信(UART、IIC、SPI)
灵活的时钟系统(DCO、VLO、LFXT、HFXT)
AES安全加密、ESI等等
2,基本运算符的回顾
对于寄存器的操作,大部分就是 、|、~的操作,这里我们简单回顾一下。
与 :与 相当于“乘”,任何数乘以0,都等于0,只有1与1才是1
与是拉成0;a 0x1f 就是把a的高三位拉成0,别的位不变。
与0 会拉成0 与1 不变
或 | :或 相当于“加”,任何数加上1,都等于1,只有0或0才是0
或是拉成1;a | 0x1f 就是把a的低五位拉成1,别的位不变。
或1 会拉成1 或0 不变
取反~:所有的位都进行 非 运算。
3,寄存器配置IO口点亮LED
msp430的IO采用传统8位端口,每个IO口控制8个IO引脚。寄存器中的每一位对应一个IO引脚,实现该引脚的独立控制。如下:
寄存器PxDIR为方向控制寄存器,比如我们要控制P13口的方向为输出,我们可以直接操作寄存器 P1DIR |= 0x08;把第三位置1,别的位保持不变,这样可以实现P13引脚的独立控制。在官方头文件中,其实已经定义第三位BIT3=0x80;所以配置P13方向代码我们可以直接如下配置:
P1DIR |= BIT3;
IO口的基础寄存器包括以下四个:
PxDIR :0--端口输出低电平,1--端口输出高电平。
PxIN :0--端口输入低电平,1--端口输入高电平。
PxOUT:端口输入输出方向。0--输入,1--输出。
PxREN:0--禁止使能上下拉电阻,1--使能上下拉电阻。
PxOUT决定拉电阻是上拉还是下拉。
IO口解锁:
要想使配置完成的IO口生效, 必须从LPMx.5退出。在一个电源循环之后,IO引脚是被锁定在高阻状态下,必须由软件清零,解锁IO口配置。解锁寄存器如下:
PM5CTL0 = ~LOCKLPM5;
开发板中的led部分原理图如下:
我们要点亮LED,只需要P10和P97引脚置1即可。
4,代码实现
#include io430.h
int main( void ){
unsigned int i;
/* 关闭看门狗 */
WDTCTL = WDTPW | WDTHOLD;
P1DIR |= BIT0; // 设置P10方向为输出
P1OUT |= BIT0; // P10输出为1,点亮LED1
P9DIR |= BIT7; // 设置P97方向为输出
P9OUT |= BIT7; // P97输出为1,点亮LED2
PM5CTL0 = ~LOCKLPM5; // 使配置完成的IO口生效, 从LPMx.5退出
while(1)
{
P9OUT |= BIT7; // 点亮LED2
for(i = 0; i 30000; i++); // 延时作用
P9OUT = ~BIT7; // 关闭LED2
for(i = 0; i 30000; i++); // 延时作用
}
return 0;
}
代码下载进去就可以看到LED1点亮,LED2闪烁。
文档评论(0)