最近为了参加TI的竞赛,学习了一下MSP430F149这款混合信号处理芯片。说白了还是一个单片机,因为有了以前的基础学期他来也就快了很多。
初识430:首先是要知道他有哪些共能,我所用的149芯片有一个看门狗、两个定时器、两个串口、ADC12、硬件乘法器等等。
接下来就是要知道他的寄存器的使用:第一个是普通的IO使用,程序的一开始就要设置自己的IO情况,具体包括:选择方向,是否选择第二功能,是否开中断。单片机上电后默认的是输入,普通IO,关中断。在所有引脚中只有P1和P2的两个8位具有中断功能,关于各管脚的第二功能一看他的器件框图就知道了;第二是定时器的使用:看门狗定时器默认的是打开的,所以如果要是不使用看门狗的话,程序一开始一定要关狗,另外看门狗定时器可以当做普通的16位定时器使用。除此之外还有两个定时器TimerA和TimerB,两个都是16位的定时器,这两个定时器的功能很强大,一些基本信号的产生都要依靠他们,比如:PWM信号,定时,ADC采样触发信号,UART的波特率产生,比较器触发信号等。另外一个比较重要的就是ADC12的使用:通过设置相应的寄存器完成序列的采样。关于430内置硬件乘法器的使用,说白了还是寄存器的操作,送进去两个操作数出来结果,很简单。其他的像串口之列的和51一样,也很简单。另外一些扩展接口比如LCD、IIC了,在51基础源代码上一改就行了。
在430中几乎每个引脚都是复用的,如果要使用它的第二功能就必须进行相应的设置。程序一开始要做的主要工作主要有:是否关狗,选择时钟源,设置各端口的功能,完成端口的初始化,初始化各外围模块。在编写程序中经常用到的语句主要有:
设置管脚的方向:PnDIR |= BITx :设置成输出
PnDIR &= ~BITx :设置成输入:默认的就是输入
选择第二功能: PnSEL |= BITx :使用相应的第二功能
PnSEL &= ~BITx :不使用相应的第二功能
使能管脚中断: PnIE | = BITx :使能相应的管脚中断
关闭看门狗 :WDTCTL |= WDTPW + WDTHOLD
打开系统总中段:_EINT();
关闭系统总中断:_DINT();
中断服务函数的编写: #pragma vector = XXXX_VERTOR
__interrupt void xxxxISR(void)