由于2021全国大学生电子设计竞赛的临近,为做好更充足的准备。故开始学习和了解TI公司旗下的一款低功耗MCU芯片——MSP430F5529,根据了解该单片机可用多种方式编写,例如大家常用的IAR,CCS,甚至你可以用KEIL和VScode配置环境进行代码的烧写,当然也有相对无脑的Energia可供选择。
以上分别为部分可编译MSP430F5529的编译器,本次学习我们将在MSP430F5529开发板平台为基础进行,采用CCS作为基础进行学习,想快速上手的朋友可以使用energia(类似arduino的编译方式)。
在所有的单片机学习过程中都逃不过点灯,点灯是基础的IO口电平输出的经典案例,通过它可以了解基本的单片机IO口的输出电平方式,本着万物皆可点灯的理念,首先进行点灯实验。
关闭看门狗
WDTCTL=WDTPW+WDTHOLD;
看门狗的作用是:一段时间不进行喂狗操作,则会产生复位操作。因此为了前期程序调试方便,因此都是先执行关看门狗操作。
选择对应的IO口
CCS中选通IO口的方式有以下三种:
P1DIR|=00000001;
P1DIR|=0x01;
P1DIR|=BIT0;
较为常用的为位操作和十六进制,例如你要同时开启P1端口的P1.0和P1.5可写为P1DIR|=BIT0+BIT5,以此类推。同时如需使用P4口只需对P4DIR寄存器赋值即可,在DIR寄存器中0为输入,1为输出。
控制IO电平翻转
跟大多数单片机一样,MSP430F55529可通过对IO端口的配置进行高低电平的设置,具体的操作为对PxOUT寄存器进行赋值操作选择对应的输出通道以及输出方式,从而对端口进行0/1的设置和切换等操作。
P1OUT|=BIT0;//将P1.0置1
P1OUT&=~BIT0;//将P1.0清零
P1OUT^=BIT0;//将P1.0翻转
通过对其进行异或翻转,实现闪烁的效果,同时可以类似的写一个简单延时方便更好的查看其闪烁效果,在往后定时器的章节我们会讲述利用头文件自带的定时器函数进行的简单ms,us级延时的配置,大家可以向后翻阅。
void delay(volatile int t)
{
while(t--);
}
volatile关键字可以用来提醒编译器它后面所定义的变量随时有可能改变,因此编译后的程序每次需要存储或读取这个变量的时候,都会直接从变量地址中读取数据。
扩展点灯操作
作为点灯工程师,简单的点亮led肯定是不够的,接下来就简单距离板载两个小灯的交替闪烁,共同闪烁的程序供大家学习和参考。
1.双灯闪烁
while(1)
{
P1OUT|=BIT0;
P4OUT|=BIT7;
delay(50000);
P1OUT&=~BIT0;
P4OUT&=~BIT7;
delay(50000);
}
2.交替闪烁
while(1)
{
P1OUT|=BIT0;
P4OUT&=~BIT7;
delay(50000);
P1OUT&=~BIT0;
P4OUT|=BIT7;
delay(50000);
}
以上即为单片机IO口输出点灯的简单记录,点灯虽小,但学会点灯即可了解基本的输出配置,IO的基本操作便可以驱动简单外部电路,学习路途遥远,一步一个脚印,希望本文对大家能有所帮助。