} } }
//________________________________________*****************************************>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
voidmain(void) {
uint8_t contrast = *((unsignedchar *)contrastSetpointAddress); //读取FLASH中对比度值
uint8_t brightness = *((unsignedchar *)brightnessSetpointAddress); //读取FLASH中背光值
SetVCore(3); //设VCore为最大
// Basic GPIO initialization
Board_init(); //初始化GPIO //////////////////////*******************LDC1000*************************************************************************
//PORT INIT
P1DIR |= BIT0; // LDC CLK for Freq counter (set to output selected clock) P1SEL |=BIT0; //INTB INIT
// //UCS SETTING
UCSCTL3 |= SELREF__REFOCLK;
__bis_SR_register(SCG0); //
Disable the FLL control loop
UCSCTL0 = 0x0000; // Set lowest possible DCOx, MODx
UCSCTL1 = DCORSEL_6; // Select DCO range 24MHz operation
UCSCTL2 = FLLD_0 + 731; // Set DCO Multiplier for 24MHz
// (N + 1) * FLLRef = Fdco // (731 + 1) * 32768 = 24MHz // Set FLL Div = fDCOCLK/2 __bic_SR_register(SCG0); // Enable the FLL control loop
UCSCTL4 |= SELA__DCOCLK + SELS__XT1CLK +SELM__DCOCLK; //ACLK=24Mhz,SMCLK=4Mhz,MCLK=24MHz Source select UCSCTL5 |= DIVPA_2; //ACLK output divide UCSCTL6 |= XT1DRIVE_3 + XCAP_0; //XT1 cap
// initialize SPI
P2DIR |= BIT0; // P2.0 IO Output TO LDC1000 STE P2SEL &= ~BIT0;
//SPI SETUP
P3SEL |=BIT0 + BIT1 + BIT2; //UCB0SPI P3.0 P3.1 P3.2
UCB0CTL1 |=UCSWRST;
UCB0CTL0 |= UCMST+UCMSB+UCSYNC+UCCKPL; // 3-pin, 8-bit SPI master,Clock polarity high, MSB //test
//反馈选择位,为1,发送的数被自己接收,用于测试,正常使用时注释掉
UCB0CTL1 |= UCSSEL_1; // CLOCK
ACLK
UCB0BR0 = 0x01; UCB0BR1 = 0;
UCB0CTL1 &= ~UCSWRST;
/*****************TEST*********TEST***************TEST*********/
//read all REG value using default setting charorgVal[20];
//write to register
spi_writeByte(LDC1000_CMD_RPMAX, RPMAX); spi_writeByte(LDC1000_CMD_RPMIN, RPMIN); spi_writeByte(LDC1000_CMD_SENSORFREQ, 0x94); spi_writeByte(LDC1000_CMD_LDCCONFIG, 0x17); spi_writeByte(LDC1000_CMD_CLKCONFIG, 0x02); spi_writeByte(LDC1000_CMD_INTCONFIG, 0x02);
spi_writeByte(LDC1000_CMD_THRESHILSB, 0x50); spi_writeByte(LDC1000_CMD_THRESHIMSB, 0x14); spi_writeByte(LDC1000_CMD_THRESLOLSB, 0xC0); spi_writeByte(LDC1000_CMD_THRESLOMSB, 0x12);
spi_writeByte(LDC1000_CMD_PWRCONFIG, 0x01);
//read all registers
spi_readBytes(LDC1000_CMD_REVID, &orgVal[0],12);
__enable_interrupt(); //中断
// Setup real time clock
使能全局SetupRTC(); //设置实时时钟
// Set up LCD
Dogs102x6_init(); //初始化LCD
Dogs102x6_backlightInit(); //背光初始化
contrast = 11;
brightness = 11;
Dogs102x6_setBacklight(brightness); //始背光值
Dogs102x6_setContrast(contrast); //始对比度值
Dogs102x6_clearScreen(); //
// Set up wheel
Wheel_init(); //位计
Buttons_init(BUTTON_ALL); //Buttons_interruptEnable(BUTTON_ALL); //键中断
buttonsPressed = 0; //
// Display TI logo
Dogs102x6_imageDraw(tiBug, 0, 16); //图案
设置初设置初清屏 初始化齿轮电初始化按键 使能所有按键值清零 显示TI////////////////////////////////////////////////两个步进电机控制///////////////////////////////////////////////// //a1用于步进电机正转时间,反转时间,停止转动时间;b1用于选择步进电机是正转,反转还是停止;c1用于选择电机的转动速度 //推荐参数:a1--1000,b1---0-正转,1-反转,c1--为2时最佳 //test
//电机IO口设置 P4DIR |=BIT4; P4DIR |=BIT5; P4DIR |=BIT6; P4DIR |=BIT7; P4OUT&=~BIT4; P4OUT&=~BIT5; P4OUT&=~BIT6; P4OUT&=~BIT7;
P7OUT &= ~(BIT0 + BIT1 + BIT2 + BIT3); P7DIR |= BIT0 + BIT1 + BIT2 + BIT3;
Dogs102x6_clearScreen();
//开定时器A中断,以检测并显示是否找到金属
TA2CCTL0 = CCIE; // CCR0 interrupt enabled TA2CCR0 = 50000; //次中断,进入程序判断是否找到金属
每2ms执行一