个人学习理解,难免有错,望各位大佬指出错误,不胜感激
有些引脚在单片机上没看到,在原理图上可以找得到,说明这些引脚没有引出来
单片机上的引出的引脚是可以外部操作的,有些不必要引出的就直接在单片机内部
对于单片机的学习其实就是寄存器的学习与操作,仔细阅读说明书
MSP430芯片的USB口可以在电脑上创建两个com口,其中一个可以用来调试
可以用串口调试助手来检测数据,相当于里面集成了一个串口
插上usb后,打开设备管理器,我的电脑win8快捷键 win + x + m(win+x可以调出一个菜单,自己看就知道了,相当于右击左下角的开始菜单)
这个就是一个虚拟的串口,如果不仔细阅读说明书还是不好找的,我一开始没有找到p4.4 p4.5 串口,就是因为他们集成在单片机内部,没有引出,用作调试
芯片上 V 、Vcc, 为供电端
G、Gnd 为地端,与供电端相对应,构成通路,通俗点理解就是电流从Vcc流入,从Gnd流出
进行单片机编程的时候,新手难免会疑惑,比如以下代码
这些是对串口的寄存器操作,UC为USCI的缩写,USCI在下面的下面的下面。。。
这些东西是如何对应到硬件上的呢,对这些变量的操作是怎样转化到对单片机硬件的操作的呢?
其实这些东西都在头文件定义好了,每一个名称对应一个地址,也就对应到了硬件
只是一个名称而已,这也是域名出现的原因,如果域名都不知道的话,那就是qq好友的备注,我就不信你没用过电话簿.......
置位: 使有效 复位: 使无效
IE Interrupt Enable 通常情况下为中断使能
SR State Register 状态寄存器
RST 当然是Reset啦
GIE General Interrupt Enable 通用中断使能
NMI Non Maskable Interrupt 不可屏蔽中断
POR Power On Reset 上电复位
PUC Power Up Clear 上电清除
RXD Receive Exchange Data
TXD Transmit Exchange Data
CTL Control BTCTL 基本定时器控制寄存器
USCI Universal Communication Interface 通用通信接口,US应该是一个单词
USART Universal Synchronous/Asynchronous Receive/Transmit 同步/异步串行通信,包含SPI同步串行通信,Inter-IC(I方C)、、串行通信方式可能有不少。。
还有一个长得像的词:UART异步串行通信,这个就是USART中的异步功能,不能同步。一般情况下UART与USART一样用,因为同步模式用的少。
定时器A: TACTL Timer A Control 定时器A控制寄存器 TAR Timer A Register 定时器A的计数寄存器 MC Model Control 模式控制
定时器B: TBCTL Timer B Control 定时器B控制寄存器 TBR Timer B Register 定时器B的计数寄存器
MSP430的通用IO口 P1--P6端口,每个端口8位,其中P1和P2口具有中断功能
控制寄存器有 PNSEL PNDIR PNOUT PNIN
分别为选择引脚,控制引脚方向(输入还是输出),表示对应的引脚的输出值(供外部读取),表示对应的引脚的输入值(供外部读取)
中断函数不需要在主函数中调用,在发生相应的中断时自动调用,定义中断函数时需要用关键字标识,如下中断函数
#pragma vector=TIMER1_A0_VECTOR //表示中断向量,也就是地址,表示是哪一种中断,属于谁的中断
TIMER1_A0_VECTOR就是个预先定义的单片机中的计时器A0的中断地址,=号前面的通常不变
__interrupt void TIMER1_A0_ISR(void) //__interrupt为关键字,表示这是一个中断服务函数
{
t5ms_cnt++;
if (t5ms_cnt==2)
{
t10ms_flag=1;
t10ms_cnt++;
t5ms_cnt=0;
}
if (t10ms_cnt==10)
{
t100ms_flag=1;
t100ms_cnt++;
t10ms_cnt=0;
}
if (t100ms_cnt==10)
{
t1000ms_flag=1;
t100ms_cnt=0;
}
}
对于单片机里的寄存器操作,也有不少的技巧
比如这一个
P1OUT | = BIT2
P1一共有8个位,BIT2在头文件预定义为0x02,也就是00000010,BIT3就是00000100,都是为了简化编程
上面就等价于 P1OUT = P1OUT | BIT2
BIT2只有第二位为1,其余为0,所以这个式子不会影响其他位置的数字,任何一个数字 | 0,结果还等于本身
同理 P4OUT ^= 0x80 P1OUT &= ~(BIT5+BIT6) 你们差不多就也能理解了
注意 | 与 || & 与 && 运算不同,原理请自行百度谷歌。
430的时钟
三个时钟源:
LFXT1CLK 低频时钟源
XT2CLK 高频时钟源
DCOCLK 数字控制RC振荡器
三种时钟系统,用于不同的模块
注:430的每一种器件都含有低速晶体振荡器LFXT1
最后,放上两张图纪念一下