MSP430F149 时钟源选择
- 格式:pdf
- 大小:74.07 KB
- 文档页数:2
MSP430F149的内部FlashMSP430F149 内部的memory 结构,60K Flash+2K RAM。
Flash 分为主存储区和信息存储区,操作都一样,只是主存储区每个段512 字节,而信息存储区为128 字节,方便擦写。
当我们有数据要保存到Flash 存储器时,要先对目标段进行整段擦除操作,擦除操作使的对应段FLASH 存储器变成全1。
应当注意的是,此flash 的操作频率为257 kHz 到476 kHz,时钟源可选择,因此我们做时钟分频时应当保证频率在这之间,以下为我编写的参考程序。
void Flash_erase(uint addr){//段擦除,512bytes 一段uchar s; s=__get_interrupt_state();//保存当前中断状态__disable_interrupt(); while(FCTL3&BUSY); FCTL3=FWKEY;FCTL1=FWKEY+ERASE; *(uchar*)addr=0; while(FCTL3&BUSY); FCTL3=FWKEY+LOCK; __set_interrupt_state(s);//恢复中断状态}void Flash_write(uint addr,uchar dat){//单字节写入uchar s; s=__get_interrupt_state(); __disable_interrupt(); while(FCTL3&BUSY); FCTL3=FWKEY; FCTL1=FWKEY+WRT; *(uchar*)addr=dat; while(FCTL3&BUSY); FCTL1=FWKEY; FCTL3=FWKEY+LOCK;__set_interrupt_state(s);}void Flash_read(uint addr,uint len){//读取到数组,此处堆栈应改大uint i; for(i=0;i *(R+i)=*(uchar*)(addr+i);}。
MSP430F149的USART0的UART方式MSP430F149 的USART0 的UART 方式(UCTL0 中的SYNC 位清0)用于串口通信,以下是一段初始化过程:P3SEL |= 0x30;P3DIR |= BIT4;ME1 |= UTXE0 + URXE0; //允许USART0 接受和发送UCTL0 |= CHAR;U0TCTL|=SSEL1;UBR00 = 0x68;//波特率9600UBR10 = 0x00;UMCTL0 = 0x40;UCTL0 &= ~SWRST;IE1|=URXIE0;__enable_interrupt();首先是设置引脚的方向,RX 为输入,TX 为输出,所以TX 的DIR 位应设为1。
ME1 是功能模块,即允许UART 的接收和发送,CHAR 置1 是设置数据为8 位,SSELx 选择UART 的时钟源,波特率的设置可以用MSP430 波特率计算器来算。
IE1 中的UTXIE0 和URXIE0 分别用来使能接收和发送中断,中断标志分别为UTXIFG0 和URXIFG0,UTXIFG0 置1 表示等待新的数据写入发送寄存器,即上一次发送已完成,而URXIFG0 置1 表示已接收到数据并装入接收缓存寄存器中void main(){Init();while(1){for(num=0;num{//发数组TXBUF0=T[num];//数据被写入发送缓冲寄存器,发送中断标志清0while ((IFG1 & UTXIFG0)!=0x80);//等待中断标志置1,即等待接收完成}num=0;while(1);}}#pragma vector=USART0RX_VECTOR__interrupt void UART0RX (void){R[num]=RXBUF0;//当读接收寄缓冲存器时,接收中断标志清0num++;if(num==5) num=0;}tips:感谢大家的阅读,本文由我司收集整编。
MSP430 频率(时钟)配置MSP430时钟:1、在MSP430单片机中一共有四个时钟源:(1)LFXT1CLK,为低速/高速晶振源,通常接晶振(2)XT2CLK,可选高频振荡器,外接标准高速晶振,通常是接8Mhz,也可以接400kHz~16Mhz;(3)DCOCLK,数控振荡器,为内部时钟,由RC震荡回路构成,受温度和电压的影响较大;若外部不接稳定的晶振电路,直接由内部时钟工作,则会因环境变化而导致性能不稳定。
(4)VLOCLK,内部低频振荡器,12kHz标准振荡器。
(要得到标准的12k则必须外接32768等晶振)2、在MSP430单片机内部一共有三个时钟系统:(1)ACLK:辅助时钟,通常由LFXT1CLK或VLOCLK作为时钟源,可以通过软件控制更改时钟的分频系数;(2)MCLK:主时钟,为系统内核提供时钟,它可以通过软件从四个时钟源选择或者从四个时钟源分频后选择为主时钟;(3)SMCLK:子时钟,也是可以由软件选择时钟源。
3、MSP430的时钟设置包括3个寄存器,DCOCTL、BCSCTL1、BCSCTL2、BCSCTL3DCOCTL,DCO控制寄存器,地址为56H,初始值为60HDCO0~DCO2: DCO Select Bit,定义了8种频率之一,而频率由注入直流发生器的电流定义。
MOD0~MOD4: Modulation Bit,频率的微调。
一般不需要DCO的场合保持默认初始值就行了。
BCSCTL1,地址为57H,初始值为84HRSEL0~RSEL2: 选择某个内部电阻以决定标称频率.0最低,7最高。
XT5V: 1.DIVA0~DIVA1:选择ACLK的分频系数。
DIVA=0,1,2,3,ACLK的分频系数分别是1,2,4,8; XTS: 选择LFXT1工作在低频晶体模式(XTS=0)还是高频晶体模式(XTS=1)。
XT2OFF: 控制XT2振荡器的开启(XT2OFF=0)与关闭(XT2OFF=1)。
MSP430时钟分析最近开始学习MSP430,在所有单片机学习中,时钟的设置无疑是最基本的一项工作!尤其对于现在的单片机,外部有低速,高速两种晶振,内部还有PLL 的内部时钟源,设置好系统工作的时钟则是工作完美开始的表现。
我一共用了两种系列的430 单片机,MSP430F149 和MSP430F437,系列的不同,时钟的设置也略有不同,下面从149 的时钟一步一步来说吧!在f149 中,基础时钟是被叫做basic clock module,其一共有三个时钟源:一个LFXT1CLK,为低速/高速晶振源,通常接32.768khz,也可以接(400khz~8Mhz)一个为XT2CLK,外接标准高速晶振,通常是接8Mhz,也可以接(400khz~8Mhz)还有一个叫DCOCLK,为内部晶振,有RC震荡回路构成。
在430 内部一共有三个时钟系统一个为ACLK,通常由LFXT1CLK 作为时钟源,可以通过软件控制改时钟的分频系树。
一个为MCLK,即Main CLK,一听就知道是主时钟单元,为系统内核提供时钟,它可以通过软件从三个时钟源选择,一个为SMCLK,称作辅助主时钟,也是可以由软件选择时钟源。
Basic Clock Module Registers(基础时钟寄存器)DCO control register DCOCTLBasic clock system control 1 BCSCTL1Basic clock system control 2 BCSCTL2SFR interrupt enable register 1 IE1SFR interrupt flag register 1 IFG1DCOCTL 寄存器是用来配置DCOCLK 的,这里暂且不提BCSCTL1 与BCSCTL2 寄存器则显得比较重要,这两个寄存器控制了你整个系统中430 的工作时钟系统。
BCSCTL1 寄存器:7 654 3 210XT2OFF XTS DIVAx XT5V RSELxXT20FF:用来控制XT2 晶振的开启和关闭,置1 时关闭,置0 时,开启XTS:用来选择低速晶体的工作模式(可忽略)DIVAx:用来选择ACLK 的分频系数XT5V: 无用。
#include <msp430x14x.h>#define Exterior_8MHz 0x55 //MCLK和SMCLK选择外部8M高频晶振#define u8 unsigned char#define u16 unsigned short#define u32 unsigned longvoid Delay_ms(u16 Time) //软件ms延时,1MHz频率下{#ifdef Exterior_8MHzu16 i,j,z;for(i=0;i<Time;i++)for(j=0;j<10;j++)for(z=0;z<158;z++);#elseu16 i,j;for(i=0;i<Time;i++)for(j=0;j<200;j++);#endif}void Delay_us( u16 Time ) //软件us延时,1MHz频率下{u16 i;for(i=0;i<Time;i++){_NOP();_NOP();}}void System_Clock_Init(void) //系统时钟源配置{#ifdef Exterior_8MHz/*------选择系统主时钟为8MHz-------*/u8 z;BCSCTL1 &= ~XT2OFF; //打开XT2高频晶体振荡器do{IFG1 &= ~OFIFG; //清除晶振失败标志for (z = 0xFF; z > 0; z--); //等待8MHz晶体起振}while ((IFG1 & OFIFG)); //晶振失效标志仍然存在?BCSCTL2 |= SELM_2 + SELS; //MCLK和SMCLK选择高频晶振#else/*------选择系统主时钟为DCO1MHz-------*/DCOCTL =0x00;BCSCTL1 &=~0x07; //清零DCOx,MODx,RSELx位DCOCTL |=DCO2+DCO1+MOD2+MOD1+MOD0; //DCO=6,MOD=7 BCSCTL1 |=RSEL2; //RSEL=4#endif}void main(void){WDTCTL = WDTPW + WDTHOLD; //关闭看门狗System_Clock_Init();//设置定时器A时钟源,1MHz#ifdef Exterior_8MHzTACTL = TACLR; //清零寄存器TACTL = TASSEL_2 + ID_3 + MC_1; //SMCLK,8分频,增计数#elseTACTL = TACLR; //清零寄存器TACTL = TASSEL_2 + ID_0 + MC_1 + TACLR; //SMCLK,0分频,增计数#endifCCR0 = 10000-1; //设定周期10000*1us=10ms,100K//PWM1CCR1 = 2500; //设定脉宽2500*1us=2.5msCCTL1 = OUTMOD_7; //PWM模式7,复位/置位P1DIR |= BIT2; //P1.2 输出P1SEL |= BIT2; //P1.2 TA1//PWM2CCR2 = 7500; //设定脉宽7500*1us=7.5msCCTL2 = OUTMOD_7; //PWM模式7,复位/置位P1DIR |= BIT3; //P1.3 输出P1SEL |= BIT3; //P1.3 TA2while(1){}}。
基于MSP430F149单片机的多功能电子时钟设计作者:胡彪田亚菲来源:《数字技术与应用》2015年第05期摘要:嵌入式系统设计中处于最核心的设计是嵌入式操作系统,本文采用的微处理器是MSP430F149,系统内核是μC/OS-II。
通过软件功能扩充和硬件功能扩展实现了一个较完整的嵌入式实时操作系统,并最终设计了一个多功能电子时钟。
本系统是利用MSP430F149单片机实现其具有计时、校时等多功能的数字时钟。
同时运用LCD12864液晶同时显示“时分秒、年月日、星期、温度”的现代计时装置。
关键词:微处理器MSP430F149 μC/OS-II 多功能电子时钟中图分类号:TP368.12 文献标识码:A 文章编号:1007-9416(2015)05-0000-001 引言随着电子技术的发展,微处理器在性能提升的同时功耗能够降得更低,功能也更加强大,16位和32位微处理器逐渐成为嵌入式系统设计的主流芯片。
一个较完整的系统不但要有微处理器,还需要在微处理器上运行一个比较稳定的操作系统;因此,系统要有比较良好的可移植性,能够运用于根据不同应用要求选择的微处理器中。
μCOS-II作为一个实时操作系统内核,由于其源代码公开、代码规范、价格便宜。
为了研究MSP430系列单片机支持多任务、并行、实时操作,移植的稳定性、可靠性等优越的功能。
本设计在运用MSP430单片机和μCOS-II的相关知识的基础上,设计了个多功能电子时钟。
通过软件功能扩充和硬件功能扩展设计了一个较完整的嵌入式实时操作系统,从而验证了μCOS-II操作系统移植在MSP430F149的可行性和稳定性。
2 总体电路设计与多功能时钟实现本设计采用MSP430F149作为整个电路的核心部件,运用4*4矩阵键盘作为输入设备,外接LCD12864进行显示,同时还连接一些扩展电路以便增加电子时钟功能。
本设计的硬件电路比较简单,计数、调时、译码显示等功能全部都由软件控制实现,准确性较高。
MSP430F149的时钟操作1)时钟图解图1 内部时钟图解2)内部时钟MSP430F149系统开启时,默认的时钟来源是内部的DCO,然后可以通过用户的软件设置切换到外部的晶体振荡器。
而MSP430F149可以选择的时钟来源可以有三个:1.来自外部高速晶振振动器。
2.来自外部的低速晶振振荡器,其实低速晶体振荡器也可以外接高速晶体振荡器跟第一个一样。
3.来自单片机内部的DCO时钟。
内部的DCO还可以通过DCOX和RSELX来选择其振荡频率。
而初始时,DCOX=3,RESLX=4。
其频率选择如下图:图2 DCO频率选择其中DCO一个为增加10%,RSEL一格增加25%。
MSP430F149内部有三种时钟:1.主系统时钟(MCLK);主系统时钟可以有三个来源。
2.子系统时钟(SMCLK);子系统时钟可以有两个来源:外部高速和DCO。
3.辅助系统时钟(ACLK);只有一个来源:外部低速。
他们都可以进行各自分频。
3)时钟的寄存器。
1.DCOCTLDCOx:选择DCO振荡频率(和RSELx共同决定)。
MODx:调制器的选择。
2.BCSCTL1XT2OFF:是否关闭高频震荡器。
0开;1关。
XTS:选择低速晶体振荡器的工作方式(其实低速晶体振荡器也可以接成高速晶体的)。
0为低;1为高。
DIVAx:选择对辅助系统时钟分频。
XT5V:无用。
RSELx:选择DCO的频率(和DCOx共同决定)。
3.BCSCTL2SELMx:选择主系统时钟的来源。
DIVMx:主系统时钟的分频。
SELS:选择子系统时钟来源。
DIVSx:选择子系统时钟的分频。
DCOR:DCO选择用片内电阻还是用外接电阻。
默认内接。
4.IE1OFIE:检测晶体振荡器是否正常工作使能控制。
0关;1开。
(产生的是非可屏蔽中断。
)5.IFG1:OFIFG:晶体振荡是否正常工作中断标志位。
(就算不打开使能端也只能置位,打开使能端只是能够进行打断CPU,使CPU进入中断程序。
MSP430F149开发板说明一,MSP430F149自带硬件资源:(1) 基础时钟模块,包括1个数控振荡器(DCO)和2个晶体振荡器;(2) 看门狗定时器Watchdog Timer,可用作通用定时器:(3) 带有3个捕捉/比较寄存器的16位定时器Timer-A;(4) 带有7个捕捉/比较寄存器的16位定时器Timer_B;(5) 2个具有中断功能的8位并行端口:P1与P21(6) 6个8位端口:P1、P2、P3、P4、P5、P6。
(7) 模拟比较器COMPARATOR_A;(8) 12位A/D转换器;(9) 2通道串行通信接口(软件选择UART/SPI模式);(10) 1个硬件乘法器;(11) 60KB+256字节FLASH,2KBRAM。
二,MSP430F149开发板外围电路和硬件:1、两种可选供电方式(标准5V稳压器接口、USB接口)2、3.3V和5V电平接口3、一个兼容USB2.0规范、符合USB1.1规范的标准USB接口4、一个12864液晶显示屏接口5、一个JTAG仿真调试下载端口6、一个蜂鸣器7、一个NRF905射频通信模块接口8、一个8位的LED指示灯模块9、一个8路12-Bit模数转换(ADC)接口10、一个ZIGBEE(型号SZ05)无线通信接口11、一个IR红外串口无线通信模块12、一个8位数码管显示和4X4键盘模块13、一个L298电机驱动模块(可驱动两个电机)14、一个IIC模块包含:PCF8563时钟、LM75温度传感器、AT24C02数据存储15、一个单路输出10位DA转换芯片(TLC5615)16、一个标准的MAX3232接口17、一个的MAX485接口三,MSP430F149的性能MSP430系列单片机最显著的特点就是它的超低功耗。
在1.8—3.6V 电压、1MHz的时钟条件下运行。
耗电电流在0.1—400mA.之间,RAM 在节电模式耗电为0.1mA,等待模式下仅为0.7mA。