随笔分类 -  MSP430

摘要:1 /* 2 * DS1302.h 3 * 4 * Created on: 2013-11-27 5 * Author: Allen 6 */ 7 8 #ifndef DS1302_H_ 9 #define DS1302_H_10 11 #include 12 #include "MyType.h"13 14 //时间结构体15 typedef struct16 {17 uchar year; //00-99,前面自己加入20,比如读出13为201318 uchar month;19 uchar date;20 uc... 阅读全文
posted @ 2013-12-01 21:20 wwjdwy 阅读(813) 评论(0) 推荐(0)
摘要:前段时间忙着画板子搞运放搞滤波了,程序更新的少,发现MSP430不是太好用,尤其Timer,不过也与我使用内部晶振有关,产生正玄波之前用MSP430发出PWM,再进行滤波变为正弦波太麻烦了,这次改用DDS芯片,今天板子回来一会就调了出来很方便。AD9850为一款DDS芯片,这里不做什么详细介绍了,有两种接口:serial 和 parrel,两种接口驱动均完成 1 /* 2 * AD9850.h 3 * 4 * Created on: 2013-7-12 5 * Author: Allen 6 */ 7 8 #ifndef AD9850_H_ 9 #define AD98... 阅读全文
posted @ 2013-10-21 15:51 wwjdwy 阅读(941) 评论(0) 推荐(0)
摘要:因为这次省去了RESET按键,RST没做任何处理,程序下载完之后插上电池无法运行,最终原因:RST引脚没有拉高。呼呼切记啊 阅读全文
posted @ 2013-09-30 16:17 wwjdwy 阅读(380) 评论(0) 推荐(0)
摘要:之前在使用PWM,AD时候用到过第二功能,不过都是copy没有注意过PXSEL究竟怎么设置,今天在设置晶振管脚时候遇到了麻烦,细致看了一下其实很简单,在SPEC的最后详细讲了每个管脚如何设置为其他功能,附上图一看就明白了。不过我只有把P2SEL,P2SEL2都设置为0才可以。那个P2SEL的X(无关)不管不行啊。P2SEL &= ~(BIT6+BIT7); //晶振用作GPIOP2SEL2 &= ~(BIT6+BIT7);晶振的两个角可以当做GPIO了。再附一个其他pin的 阅读全文
posted @ 2013-08-09 18:27 wwjdwy 阅读(607) 评论(0) 推荐(0)
摘要:MSP430 WDT 有两种模式:1,看门狗 2,定时器我们这次只用定时器模式,注意有两个决定定时时间的地方:1,时钟源选择 2,间隔时间选择时钟源可以为:SMCLK 或者 ACLK时间间隔只有四种time = count/ftime间隔时间,count 上面的四个数字,f选择的时钟源的频率比如选择SMCLK 频率1MHz WDTISX 为10 即512 则中断时间为0.5ms WDTCTL = WDT_MDLY_32; // Set Watchdog Timer interval to ~30ms IE1 |= WDTIE; // Enable WDT interrupt// Watchdo 阅读全文
posted @ 2013-08-06 20:07 wwjdwy 阅读(371) 评论(0) 推荐(0)
摘要:目前总共用到了四个中断向量,我觉得已经把G2553的所有定时器中断都用到了。定时器有两个,TA0与TA1,每个定时器又有两个中断向量1,CCR0到达时的中断,在计数模式时候很有用,平时定时器的基本功能。2,CCR1,CCR2,以及 overflow时候的中断向量,这里面又有三个中断标志。#define TIMER0_A1_VECTOR (8 * 2u) /* 0xFFF0 Timer0)A CC1, TA0 */ #define TIMER0_A0_VECTOR (9 * 2u) /* 0xFFF2 Timer0_A CC0 */ . . #define TIMER1_A1_VECTOR (1 阅读全文
posted @ 2013-08-06 16:22 wwjdwy 阅读(2172) 评论(0) 推荐(0)
摘要:Timer_A, Toggle P1.0, CCR0 Up Mode ISR, DCO SMCLK// Description: Toggle P1.0 using software and TA_0 ISR. Timer_A is// configured for up mode, thus the timer overflows when TAR counts to CCR0.1 void Timer0_Init(void)2 {3 4 CCTL0 = CCIE; // CCR0 interrupt enabled5 ... 阅读全文
posted @ 2013-08-06 15:36 wwjdwy 阅读(472) 评论(0) 推荐(0)
摘要:使用的MSP430G2553,为AD10,正常有8路输出,P1.0-P1.7为A0-A7有七个寄存器,参考电压可以是VCC或者内部参考电压1.5V或者2.5V参考时钟可以是内部ADC10OSC最高转换速率达200ksps转换方式四种:单通道单次,序列通道单次,单通道多次,序列通道多次。多次转换时候会用到DTC功能防止数据还没被取出就被覆盖单通道的实例程序,开启的为通道5,也就是P1.5 1 void AD_Channel5_Config(void) 2 { 3 /* Configure ADC Channel */ 4 ADC10CTL1 = INCH_5 + ADC10DIV_0 ... 阅读全文
posted @ 2013-07-13 23:15 wwjdwy 阅读(756) 评论(0) 推荐(0)
摘要:在做超声模块时用到 1 //捕获上升沿 2 void Capture_Pos(void) 3 { 4 P2SEL |= Echo; //选择P23作为捕捉的输入端子 Timer1_A 5 6 //TA1CCTL1 |=CM_3+SCS+CAP+CCIE; //上下沿都触发捕捉,用于测脉宽,同步模式、时能中断 CCI1A 7 8 TA1CCTL1 |=CM_1+SCS+CAP+CCIE; //上升沿触发捕捉,同步模式、时能中断 CCI1A 9 10 TA1CTL |= TASSEL1+MC_2; //选择SMCLK时钟作为... 阅读全文
posted @ 2013-07-12 13:49 wwjdwy 阅读(1258) 评论(0) 推荐(0)
摘要:初始化 1 void Uart_Init(void) 2 { 3 BCSCTL1 = CALBC1_1MHZ; // Set DCO 4 DCOCTL = CALDCO_1MHZ; 5 P1SEL = BIT1 + BIT2 ; // P1.1 = RXD, P1.2=TXD 6 P1SEL2 = BIT1 + BIT2 ; // P1.1 = RXD, P1.2=TXD 7 UCA0CTL1 |= UCSSEL_2; ... 阅读全文
posted @ 2013-07-12 10:08 wwjdwy 阅读(714) 评论(0) 推荐(0)
摘要:通过P1.0输出ACLK,P1.4输出SMCLK 1 int main(void) { 2 volatile unsigned int i; // Volatile to prevent removal 3 4 WDTCTL = WDTPW + WDTHOLD; // Stop watchdog timer 5 6 /* 7 BCSCTL3 |= LFXT1S_2; // LFXT1 = VLO 低频时钟选择为VLO ACLK选为VLO 8 9... 阅读全文
posted @ 2013-07-12 10:06 wwjdwy 阅读(497) 评论(0) 推荐(0)
摘要:#define PWM BIT6// Description: This program generates one PWM output on P1.2 or P1.6 using// Timer_A configured for up mode. The value in CCR0, 25-1, defines the PWM// period and the value in CCR1 the PWM duty cycles.// A 50% duty cycle on P1.6.// ACLK = na, SMCLK = MCLK = TACLK = default DCOvoid P 阅读全文
posted @ 2013-06-27 20:24 wwjdwy 阅读(671) 评论(0) 推荐(0)
摘要:4. 定时器TA一、时钟源1、时钟源:ACLK/SMCLK 外部TACLK/INCLK2、分频:1/2/4/8 当 (注:TACLR 置位时,分频器复位)二、计数模式通过设置MCx可以设置定时器的计数模式1、停止模式:停止计数2、单调增模式:定时器循环地从0增加到TACCR0值周期 :TACCR0CCIFG :Timer计到TACCR0值时触发TAIFG :Timer计到0时触发3、连续模式 :定时器循环从0连续增加到0xFFFF周期 :0x10000TAIFG :Timer计到0时触发4、增减模式 :定时器增计数到TACCR0 再从 TACCR0 减计数到 0周期 :TACCR0值的2倍CC 阅读全文
posted @ 2013-06-26 11:05 wwjdwy 阅读(1760) 评论(0) 推荐(1)
摘要:(5)、中断应用程序举例(外部中断):void interrupt_initial(){P1DIR&=~BIT7; //P1.7为输入P1IE|=0x80; //P1.7中断允许P1IES|=0x00; //P1.7上升沿触发P1IFG=0; //P1.7中断标志清除,对于多源中断必须先清中断标志再打开中断_EINT(); //总中断允许}#pragma vector=PORT1_VECTOR__interrupt void Port_1(void){ P1IFG&=~BIT7; //P1.7中断标志清除/*在此写中断服务子程序*/}• #pragma vector - 下面的 阅读全文
posted @ 2013-06-24 16:02 wwjdwy 阅读(548) 评论(0) 推荐(0)
摘要:1、P口端口寄存器: (1)、PxDIR 输入/输出方向寄存器 (0:输入模式 1:输出模式) (2)、PxIN 输入寄存器 输入寄存器是只读寄存器,用户不能对其写入,只能通过读取该寄存器的内容知道I/O口的输入信号。 (3)、PxOUT 输出寄存器 寄存器内的内容不会受引脚方向改变的影响。 (4)、PxIFG 中断标志寄存器 (0:没有中断请求 1:有中断请求) 该寄存器有8个标志位,对应相应的引脚是否有待处理的中断请求; 这8个中断标志共用一个中断向量,中断标志不会自动复位,必须软件复位; 外部中断事件的时间必须>=1.5倍的MCLK的时间,以保证中断请求被接受; (5)、PxIES 阅读全文
posted @ 2013-06-24 14:54 wwjdwy 阅读(816) 评论(0) 推荐(0)