/* \brief Set the intensity of the LED which are On to a specific value. * * \param intensity Input. The LED intensity (0% to 100%) * * \return the status of the command execution. */ bool e_ledm_refresh_intensity( U32 intensity ) { // Adjust LED intensity if( LED_Test( LED_MONO0_GREEN ) ) LED_Set_Intensity(LED_MONO0_GREEN, intensity); if( LED_Test( LED_MONO1_GREEN ) ) LED_Set_Intensity(LED_MONO1_GREEN, intensity); if( LED_Test( LED_MONO2_GREEN ) ) LED_Set_Intensity(LED_MONO2_GREEN, intensity); if( LED_Test( LED_MONO3_GREEN ) ) LED_Set_Intensity(LED_MONO3_GREEN, intensity); return true; }
/*! * \brief Get the ledm2 current value. * * \param buf char buffer in which the ledm2 state is stored. * * \return true upon success, false if error. */ bool b_ledm2_get_value( char* buf ) { // Build the log string. if( LED_Test( LED_MONO1_GREEN ) ) { sprintf( buf, "%s\r\n", CPLED_ON_STR); } else { sprintf( buf, "%s\r\n", CPLED_OFF_STR); } return true; }
/* * Name : main * Input : None * Output : None * Return : None */ int main(void) { uint8_t ch; RCC_Configuration(); RCC->APB2ENR |= RCC_APB2Periph_GPIOA; RCC->APB2ENR |= RCC_APB2Periph_GPIOB; RCC->APB2ENR |= RCC_APB2Periph_USART1; GPIO_Configuration(); USART1_Init(); while(1) { printf("\n---------------------\n"); printf("Press menu key\n"); printf("---------------------\n"); printf("0> System Information\n"); printf("---------------------\n"); printf("1> LED Test\n"); printf("2> KEY Test\n"); printf("3> 7-Segment Test\n"); printf("---------------------\n"); printf("x> quit\n\n"); ch = USART_GetCharacter(USART1); printf(" is selected\n\n"); switch((char)ch) { case '0': System_Information(); break; case '1': LED_Test(); break; case '2': KEY_Test(); break; case '3': Seven_Segment_Test(); break; } if('x' == (char)ch) { break; } } }
/*! * \brief Get the ledm1 current value. * * \param pxLog a Log structure. * * \return true upon success, false if error. */ bool b_ledm1_get_value( xLogDef *pxLog ) { // Build the log string. if( LED_Test( LEDM1 ) ) pxLog->pcStringLog = (char *)CPLED_ON_STR; else pxLog->pcStringLog = (char *)CPLED_OFF_STR; pxLog->pfFreeStringLog = NULL; // We use a constant return( true ); }
void APP_EvntHandler(EVNT_Handle event) { switch(event) { case EVNT_STARTUP: #if !PL_CONFIG_EVENTS_AUTO_CLEAR EVNT_ClearEvent(EVNT_STARTUP); #endif LED_Test(); break; default: #if PL_CONFIG_HAS_KEYS APP_KeyEvntHandler(event); #endif break; } }
/* * 根据串口不同的命令执行不同的程序 * 用户也可以自行添加相应的程序 */ void Board_Test(void) { while( 1 ) { switch( rec_cmd ) { case 1: //来自液晶触摸 case '1': //来自串口数据 printf("按回车返回菜单 \r\n"); printf("实验现象:LED1 LE2 LED3 轮流闪烁 \r\n"); Lcd_Note(1); LCD_DispEnCh(20,110,"实验现象:LED1 LE2 LED3 轮流闪烁",BLUE); LED_Test(); break; case 2: case '2': printf("按回车返回菜单 \r\n"); printf("实验现象:KEY1控制LED1反转,KEY2控制LE2反转 \r\n"); Lcd_Note(2); LCD_DispEnCh(20,110,"实验现象:KEY1控制LED1反转,KEY2控制LE2反转",BLUE); Key_Test(); break; case 3: case '3': printf("按回车返回菜单 \r\n"); printf("实验现象:串口打印出:eeprom读写测试成功 \r\n"); Lcd_Note(3); Eeprom_Test(); break; case 4: case '4': printf("按回车返回菜单 \r\n"); printf("实验步骤 \r\n"); printf("1-按照提示在串口中输入时间\r\n"); printf("实验现象:串口输出新历农历和时间戳\r\n"); Lcd_Note(4); LCD_DispEnCh(20,110,"实验说明:初始时间为程序固定的时间,若下面显示的时间每秒更新一次则说明RTC模块正常",BLUE); RTC_Test(); break; case 5: case '5': printf("按回车返回菜单 \r\n"); printf("实验现象:串口每隔一段时间打印出采集到的电压值 \r\n 旋转ISO上的电位器,可使用电压值在0~3.25之间变动\r\n"); Lcd_Note(5); LCD_DispEnCh(20,110,"实验说明:电压范围0-3.3 V,可调整电位器改变电压",BLUE); ADC_Test(); break; case 6: case '6': testing_state = SB_FM ; printf("按回车返回菜单 \r\n"); printf("实验步骤 \r\n"); printf("1-将ISO上的MP3-FM-SPK开关拨到FM档位\r\n"); printf("2-接上耳机,同时耳机也是天线,当搜不到台的时候可移动耳机线接收信号\r\n"); printf("实验现象:KEY1向上自动搜台,搜到台LED1亮。KEY2向下自动搜台,搜到台LED2亮 \r\n"); Lcd_Note(6); LCD_DispEnCh(20,110,"实验说明:1-将ISO上的MP3-FM-SPK开关拨到FM档位",BLUE); LCD_DispEnCh(20,145,"2-接上耳机,同时耳机也是天线,当搜不到台的时候可移动耳机线接收信号",BLUE); LCD_DispEnCh(20,195,"稍后将进入FM收音机界面,硬件复位时返回",BLUE); // delay(0xFFFF); // delay(0xFFFF); // delay(0xFFFF); // delay(0xFFFF); RDA5807_FM_Test(); break; case 7: case '7': testing_state=SB_MP3; printf("按回车返回菜单 \r\n"); printf("实验步骤 \r\n"); printf("1-将ISO上的MP3-FM-SPK开关拨到MP3档位\r\n"); printf("2-接上耳机,选择音乐即可播放,点击屏幕中的野火logo可以使用扬声器\r\n"); Lcd_Note(7); LCD_DispEnCh(20,110,"实验说明:1-将ISO上的MP3-FM-SPK开关拨到MP3档位",BLUE); LCD_DispEnCh(20,145,"2-接上耳机,选择音乐即可播放,点击屏幕中的野火logo可以使用扬声器",BLUE); LCD_DispEnCh(20,195,"稍后将进入MP3界面,硬件复位时返回",BLUE); // delay(0xFFFF); // delay(0xFFFF); // delay(0xFFFF); // delay(0xFFFF); MP3_test(); break; case 8: case '8': printf("按回车返回菜单 \r\n"); printf("实验现象:串口打印信息:CAN回环测试成功同时LED1和LED2亮\r\n"); Lcd_Note(8); LCD_DispEnCh(20,110,"实验说明:CAN回环测试,不需要外部接线",BLUE); CAN_Loopback_Test(); break; case 9: case '9': printf("按回车返回菜单 \r\n"); printf("实验步骤 \r\n"); printf("1-在ISO上插上DHT11模块 \r\n"); printf("实验现象:串口打印出:湿度为xxxRH,温度为xxx℃ \r\n"); Lcd_Note(9); LCD_DispEnCh(20,110,"实验说明:把DHT11模块接入开发板,正常时在屏幕显示温湿度",BLUE); DHT11_Test(); break; case 10: case 'a': printf("按回车返回菜单 \r\n"); printf("实验步骤 \r\n"); printf("1-在ISO上插上DS18b20模块 \r\n"); printf("实验现象:串口每隔1s打印一次温度值,同时led1闪烁一次\r\n"); Lcd_Note(10); LCD_DispEnCh(20,110,"实验说明:把DS18b20模块接入开发板,正常时在屏幕显示温度,同时LED闪烁",BLUE); DS18B20_Test(); break; case 11: case 'b': printf("按回车返回菜单 \r\n"); printf("实验步骤\r\n"); printf("1-在ISO上插上SD卡,容量需小于32GB\r\n"); printf("2-用microusb线连接电脑和ISO上的供电的microusb口(并不是 usb to uart) \r\n"); printf("实验现象:串口会打印出:野火 ISO STM32 USB MASS STORAGE 实验\r\n LED1闪烁,同时SD卡会在电脑上模拟出一个U盘\r\n"); Lcd_Note(11); LCD_DispEnCh(20,110,"实验说明:1-在ISO上插上SD卡,容量需小于32GB",BLUE); LCD_DispEnCh(20,150,"2-用microusb线连接电脑和ISO上的供电的microusb口(并不是 usb to uart)",BLUE); LCD_DispEnCh(20,195,"正常时LED1闪烁,同时SD卡会在电脑上模拟出一个U盘",BLUE); UsbMassStorage_Test(); break; case 12: case 'c': printf("按回车返回菜单 \r\n"); printf("实验步骤 \r\n"); printf("1-在ISO上插上摄像头模块(火眼OV7725)\r\n"); printf("实验现象:液晶实时显示摄像头拍回来的图像\r\n"); Lcd_Note(12); LCD_DispEnCh(20,110,"实验说明:把摄像头模块接入到ISO开发板中,正常时稍后液晶会显示摄像头拍回来的图像,使用硬件复位退出",BLUE); delay(0xFFFF); // delay(0xFFFF); // delay(0xFFFF); // delay(0xFFFF); Camera_Test(); //采用二、三级代码优化会出错 break; case 13: case 'd': printf("按回车返回菜单 \r\n"); printf("实验步骤 \r\n"); printf("1-在ISO上插上ENC28J60以太网模块,以太网模块用网线连接电脑或者路由器\r\n"); printf("2-在DOS模式下输入命令: ping 192.168.1.15 \r\n"); printf("3-电脑的IP地址或者局域网内的电脑的IP地址必须是192.168.1.x\r\n 但不能是192.168.1.15 \r\n"); Lcd_Note(13); LCD_DispEnCh(20,110,"实验说明:1-在ISO上插上以太网模块,以太网模块用网线连接电脑或者路由器",BLUE); LCD_DispEnCh(20,160,"2-在DOS模式下输入命令: ping 192.168.1.15 (能ping通表示正常)",BLUE); LCD_DispEnCh(20,193,"3-电脑IP地址或者局域网内电脑的IP地址必须是192.168.1.x",BLUE); ENC28J60_Test(); break; case 14: case 'e': printf("按回车返回菜单 \r\n"); printf("实验现象:LED1在PWM信号的控制下在呼吸\r\n"); Lcd_Note(14); LCD_DispEnCh(20,110,"实验说明:LED1在PWM信号的控制下在呼吸",BLUE); Breathing_Test(); break; case 15: case 'f': printf("按回车返回菜单 \r\n"); printf("实验步骤\r\n"); printf("1-在ISO上插上SRAM模块\r\n"); printf("实验现象:串口打印出SRAM测试成功,同时LED2闪烁\r\n"); Lcd_Note(15); LCD_DispEnCh(20,110,"Please connect SRAM module to ISO board",BLUE); delay(50000); SRAM_Test(); break; case 16: case 'g': printf("按回车返回菜单 \r\n"); printf("实验步骤\r\n"); printf("1-在ISO上插上NORFLASH模块\r\n"); printf("实验现象:串口打印出NORFLASH测试成功,同时LED2闪烁\r\n"); printf("\r\n 擦除时间有点长,请耐心等待...... \r\n"); Lcd_Note(16); LCD_DispEnCh(20,110,"实验说明:测试时把NORFLASH模块接入到ISO开发板中,擦除时间有点长,请耐心等待......",BLUE); NORFLASH_Test(); break; case 17: case 'h': printf("按回车返回菜单 \r\n"); printf("实验步骤\r\n"); printf("1-在ISO上插上NANDFLASH模块\r\n"); printf("实验现象:串口打印NANDFLASH Test finished,同时LE1闪烁r\n"); Lcd_Note(17); LCD_DispEnCh(20,110,"实验说明:测试时把NANDFLASH模块接入到ISO开发板中,正常时会显示NANDFLASH的ID",BLUE); NANDFLASH_Test(); break; default: break; } } }
/** * @brief Main program. * @param None * @retval None */ int main(void) { /*!< At this stage the microcontroller clock setting is already configured, this is done through SystemInit() function which is called from startup file (startup_stm32f0xx.s) before to branch to application main. To reconfigure the default setting of SystemInit() function, refer to system_stm32f0xx.c file*/ /* Setup SysTick Timer for 1 msec interrupts.*/ if (SysTick_Config(SystemCoreClock / 1000)) { /* Capture error */ while (1); } /* Initialize LEDs, User Button on STM32F072B-DISCO board ***********/ STM_EVAL_PBInit(BUTTON_USER, BUTTON_MODE_EXTI); STM_EVAL_LEDInit(LED3); STM_EVAL_LEDInit(LED4); STM_EVAL_LEDInit(LED5); STM_EVAL_LEDInit(LED6); /* Initialize Mems Gyroscope */ Demo_GyroConfig(); /* Initialize USB Device */ USBD_Init(&USB_Device_dev, &USR_desc, &USBD_HID_cb, &USR_cb); /* Init STMTouch driver */ TSL_user_Init(); /* End of Initialisation */ /* Delay 1s to select Test Program or to go directly through the demo*/ Delay (1000); if (STM_EVAL_PBGetState(BUTTON_USER) == Bit_SET ) { /* Wait for User button is released */ while (STM_EVAL_PBGetState(BUTTON_USER) != Bit_RESET) {} /* Set ButtonPressed at 0 value */ ButtonPressed = 0; /* LED test : Blinking LEDs */ LED_Test(); /* Wait for User button to be pressed to switch to USB Test the cursor move in square path and led On corresponding to such direction */ USB_Test(); /* Move Discovery board to execute MEMS Test, Mems detect the angular rate and led On corresponding to such direction*/ MEMS_Test(); /* Wait for User button to be pressed to switch to Touch Sensor Test each TouchKey pointed correspond to specific Leds On, test can performed in both direction */ LTS_Test(); } /* Infinite loop */ while (1) { Demo(); } }