Пример #1
0
int main()
{
    WDTCTL = WDTPW + WDTHOLD;                 // Stop WDT

    Clock_Init(0,0,0,1); // 1M DCO
    Drive_Init(0, 100);

    LCD5110_Init();
    LCD5110_Write_String(0,0,LCD_BUFFER1);
    _EINT();
    while(1)
    {
        if(SPEED_DISPLAY_FLAG == 1)
        {
            SPEED_DISPLAY_FLAG = 0;

            SPEED_L = Drive_Speed_L();
            SPEED_R = Drive_Speed_R();
            LCD5110_Long2char(SPEED_L / 5);
            LCD5110_Write_String(0,1,LCD5110_BUFFER);
            LCD5110_Long2char(SPEED_R / 5);
            LCD5110_Write_String(0,2,LCD5110_BUFFER);
        }
    }
}
Пример #2
0
int main()
{
    WDTCTL = WDTPW + WDTHOLD;                 // Stop WDT
    Clock_Init(0,0,0,12); // 12M DCO
    TimerB_ConMode_Init(2, 4); // 3M的持续计数模式.

    LCD5110_Init();
    LCD5110_Write_String(0,0,LCD_BUFFER1);

    Drive_UTL_Init();

    _EINT();

    while(1)    //间隔1s 进行一次超声波测距
    {

        ULT_TRIG1;
        DELAY_US(30);
        ULT_TRIG0;

        DELAY_MS(300);

        Drive_UTL_DISTANCE();
        UTL_START_TIME = 0;
        LCD5110_Long2Char(UTL_BUFFER);
        LCD5110_Write_String(0,1,0);
        UTL_FLAG = 0;
    }


}
Пример #3
0
void main()
{
    WDTCTL = WDTPW + WDTHOLD;
    Clock_Init(0,0,0,CPU_FF); // 12M DCO

    LCD5110_Init();

    LCD5110_Write_String(0,0,LCD_MAIN_BUFFER1);
    LCD5110_Write_String(0,1,LCD_MAIN_BUFFER2);
    LCD5110_Write_String(0,2,LCD_MAIN_BUFFER3);

    LCD5110_Write_String(0,3,LCD_MAIN_BUFFER4);
    LCD5110_Write_String(0,4,LCD_MAIN_BUFFER5);

    MPU6050_Init();


    while(1)
    {
        MPU6050_AccelX();
        LCD5110_Long2Char(MPU6050_AX);
        LCD5110_Write_String(18,0,0);

        MPU6050_AccelY();
        LCD5110_Long2Char(MPU6050_AY);
        LCD5110_Write_String(18,1,0);

        MPU6050_AccelZ();
        LCD5110_Long2Char(MPU6050_AZ);
        LCD5110_Write_String(18,2,0);

        MPU6050_Angle_XZX();
        MPU6050_Angle_YZY();
        LCD5110_Long2Char(MPU6050_ANGLE_XZX);
        LCD5110_Write_String(18,3,0);
        LCD5110_Long2Char(MPU6050_ANGLE_YZY);
        LCD5110_Write_String(18,4,0);




        /*
                MPU6050_AnguX();
                LCD5110_Long2Char(MPU6050_GX);
                LCD5110_Write_String(18,3,0);

                MPU6050_AnguY();
                LCD5110_Long2Char(MPU6050_GY);
                LCD5110_Write_String(18,4,0);

                MPU6050_AnguZ();
                LCD5110_Long2Char(MPU6050_GZ);
                LCD5110_Write_String(18,5,0);
        */
        DELAY_MS(500);

    }

}
Пример #4
0
__interrupt void ADC12ISR (void)
{
    temp = ADC12MEM0;
    LCD5110_Long2Char(temp);
    LCD5110_Write_String(0,1,0);

    temp = ADC12MEM1;
    LCD5110_Long2Char(temp);
    LCD5110_Write_String(0,2,0);
}
Пример #5
0
__interrupt void ADC12ISR (void)
{
    temp = ADC12MEM0;
    temp = ADC12_Result_2_5(temp);
    temp = ADC12_T(temp);
    LCD5110_Long2char(temp);
    LCD5110_Write_String(0,1,LCD5110_BUFFER);
}
Пример #6
0
uint32_t testSRAM(uint32_t startAddress, uint32_t size, uint16_t bufferSize) {
	uint16_t check;
	uint32_t loop;
	char AddressLine[24] = "Addr:xxxxxxxx : yyyyy \r\n";

	PSRAM_Init();

	LCD5110_Set_XY(0, 2);
	LCD5110_Write_String("Addr : ");
	for (loop = startAddress; loop < startAddress + size; loop++) {
		PSRAM_WriteWord((uint16_t) loop, loop);
		check = PSRAM_ReadWord(loop);

		if ((loop & 0xFFF) == 0x0) {
			LCD5110_Set_XY(7, 2);
			LCD5110_Write_Dec32(loop, 7);

			getHexFromLong(AddressLine + 5, loop, 8);
			getDecimalFromShort(AddressLine + 16, check, 5);
			SerialSendBytes(AddressLine, 24);
		}
		if ((uint16_t) loop != check) {
			WriteReadStatus++;
			break;
		}
	}
	if (WriteReadStatus == 0) {
		LCD5110_Set_XY(0, 2);
		LCD5110_Write_String("RAM Ok.       ");
		LCD5110_Set_XY(0, 3);
		LCD5110_Write_String("Size :");
		LCD5110_Set_XY(7, 3);
		LCD5110_Write_Dec(size >> 9, 4);
		LCD5110_Set_XY(11, 3);
		LCD5110_Write_String(" Ko");
	} else {
Пример #7
0
void main(void)
{
    WDTCTL = WDTPW + WDTHOLD;                 // Stop watchdog
    Clock_Init(0,0,0,CPU_FF);  // 1M DCO, 9K VLO ACLK

    LCD5110_Init();
    LCD5110_Write_String(0,0,(char*)LCD_BUFFER1);


    P6SEL = 0x03;                             // Enable A/D channel inputs
    ADC12CTL0 = ADC12ON + MSC + SHT0_8;           // Turn on ADC12, extend sampling time
    // to avoid overflow of results
    ADC12CTL1 = SHP + CONSEQ_3;                 // Use sampling timer, repeated sequence
    ADC12MCTL0 = INCH_0;                      // ref+=AVcc, channel = A0
    ADC12MCTL1 = INCH_1 + EOS;                  // ref+=AVcc, channel = A1, end seq.
    ADC12IE = 0x02;                           // Enable ADC12IFG.3
    ADC12CTL0 |= ENC;                         // Enable conversions
    ADC12CTL0 |= ADC12SC;                     // Start convn - software trigger
    _BIS_SR(LPM0_bits + GIE);                 // Enter LPM0, Enable interrupts
}
Пример #8
0
void main(void)
{
    WDTCTL = WDTPW + WDTHOLD;                 // Stop watchdog
    Clock_Init(0,0,0,1); // 1M DCO, 9K VLO ACLK

    P1OUT = 0x00;                             // Clear P1
    P1DIR = 0x01;                             // P1.0 as output LED.
    LCD5110_Init();
    LCD5110_Write_String(0,0,(char*)LCD_BUFFER1);

    ADC12_Init(3,1,2,7);        // smclk, /1, 单通道序列采样, 采样保持时间2^7 adcclk.
    ADC12_Sample_Source(1, 1);  // TimeA.out 触发采样,采样定时器控制采样
    ADC12_Set_VREF2_5();        // 2.5V参考电压开启

    ADC12_MCTL(0, 1, 10);       // 内存单元0开启温度传感器通道A10, 参考电压选择VREF+.
    ADC12_Enable((BIT0));           //内存单元中断,存放值以后是否中断.
    ADC12_ENC;

    TACCTL1 = OUTMOD_4;                       // Toggle on EQU1 (TAR = 0)
    TACTL = TASSEL_2 + MC_2;                  // SMCLK, cont-mode

    _EINT();
    while(1);
}
Пример #9
0
void main()
{
    WDTCTL =WDTPW + WDTHOLD;

    Clock_Init(4,4,0,CPU_FF);
    CJMCU_INIT();
    LCD5110_Init();

    _EINT();         //必须开中断

    DELAY_MS(3000);


    CJMCU_Aline();  //自动校准
    LCD5110_Long2Char(CJMCU_YAW_OFFSET);
    LCD5110_Write_String(0,0,0);
    LCD5110_Long2Char(CJMCU_PITCH_OFFSET);
    LCD5110_Write_String(0,1,0);
    LCD5110_Long2Char(CJMCU_ROLL_OFFSET);
    LCD5110_Write_String(0,2,0);

    DELAY_MS(3000);


    while(1)
    {
        CJMCU_START(); //只读取一次。每次读取数据时都要调用该函数
        while(CJMCU_RCV_FLAG==0);
        CJMCU_GET_VALUE(&yaw, &pitch, &roll);

        LCD5110_Long2Char(yaw);
        LCD5110_Write_String(0,0,0);
        LCD5110_Long2Char(pitch);
        LCD5110_Write_String(0,1,0);
        LCD5110_Long2Char(roll);
        LCD5110_Write_String(0,2,0);

        DELAY_US(10);
    }                         // Enable USCI_A0 RX interrupt
}
Пример #10
0
/**
 * @brief  HY-STM32 board test
 * @param  None
 * @retval None
 */
int main(void) {

	/* Set Systick to 1 ms */
	if (SysTick_Config(SystemCoreClock / 1000))
		while (1)
			;
	SystemTicks = 0;
	NVIC_InitStructure.NVIC_IRQChannel = SysTick_IRQn;
	NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0x0F;
	NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0x0F;
	NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
	NVIC_Init(&NVIC_InitStructure);

	/* GPIOF Periph clock enable */
	RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOF, ENABLE);

	/* Configure PF6 as output (state LED) */
	GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6;
	GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;
	GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
	GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;
	GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_DOWN;
	GPIO_Init(GPIOF, &GPIO_InitStructure);

	LCD5110_init();
	LCD5110_Led(0);
	LCD5110_Set_XY(0, 0);
	LCD5110_Write_String("HY32 Test");

	initUART4(115200);
	SerialSetCallBack((callBack) ProcessSerialInput);
	SerialSendBytes("Hello\r\n", 7);

	//WriteReadStatus = testNOR(0x10000, 0x100, 0x100);
	//WriteReadStatus = testSRAM(0, 0x400000, 0x1000);
	//testDS18B20();
	testDS1307();

	if (WriteReadStatus == 0) {
		blink = 500; /* Ok */
	} else {
		blink = 100; /* Ko */
	}

	while (1) {
		Delay_ms(blink);
		GPIO_ToggleBits(GPIOF, GPIO_Pin_6);
		if (GPIO_ReadOutputDataBit(GPIOF, GPIO_Pin_6) == 0) {
			LCD5110_Set_XY(0, 5);
			LCD5110_Write_String("- - - - - - - ");
		} else {
			LCD5110_Set_XY(0, 5);
			LCD5110_Write_String(" - - - - - - -");
		}
		if (tempInterval & 0x1) {
			DS1307ReadTime(&currDate);
			DS1307GetTimeString(&currDate, timeBuffer);
			LCD5110_Set_XY(0, 3);
			LCD5110_Write_String(timeBuffer);
			DS1307GetDateString(&currDate, timeBuffer);
			LCD5110_Set_XY(0, 4);
			LCD5110_Write_String(timeBuffer);
		}
		if (++tempInterval == 120) {
			testDS18B20(tempBuffer);
			LCD5110_Write_String(tempBuffer);

			DS1307GetDateString(&currDate, timeBuffer);
			SerialSendBytes(timeBuffer, 8);
			SerialSendBytes(" ", 1);
			DS1307GetTimeString(&currDate, timeBuffer);
			SerialSendBytes(timeBuffer, 8);
			SerialSendBytes(" ", 1);
			tempBuffer[11] = 0x0D;
			tempBuffer[12] = 0x0A;
			SerialSendBytes(tempBuffer, 13);
			tempBuffer[11] = 0x00;

			tempInterval = 0;
		}
	}
}