- /**
 
-   **************************************************************************
 
-   * [url=home.php?mod=space&uid=288409]@file[/url]     main.c
 
-   * [url=home.php?mod=space&uid=247401]@brief[/url]    main program
 
-   **************************************************************************
 
-   *                       Copyright notice & Disclaimer
 
-   *
 
-   * The software Board Support Package (BSP) that is made available to
 
-   * download from Artery official website is the copyrighted work of Artery.
 
-   * Artery authorizes customers to use, copy, and distribute the BSP
 
-   * software and its related documentation for the purpose of design and
 
-   * development in conjunction with Artery microcontrollers. Use of the
 
-   * software is governed by this copyright notice and the following disclaimer.
 
-   *
 
-   * THIS SOFTWARE IS PROVIDED ON "AS IS" BASIS WITHOUT WARRANTIES,
 
-   * GUARANTEES OR REPRESENTATIONS OF ANY KIND. ARTERY EXPRESSLY DISCLAIMS,
 
-   * TO THE FULLEST EXTENT PERMITTED BY LAW, ALL EXPRESS, IMPLIED OR
 
-   * STATUTORY OR OTHER WARRANTIES, GUARANTEES OR REPRESENTATIONS,
 
-   * INCLUDING BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY,
 
-   * FITNESS FOR A PARTICULAR PURPOSE, OR NON-INFRINGEMENT.
 
-   *
 
-   **************************************************************************
 
-   */
 
 
- /* includes */
 
- #include "at32f402_405_board.h"
 
- #include "at32f402_405_clock.h"
 
- #include "spitft.h"
 
- #include "gxht30.h"
 
 
- #define MYMAC_PORT GPIOB
 
- #define MYMAC_WATER_POS_PIN     GPIO_PINS_8           // 水位采集口,输入
 
- #define MYMAC_MOTOR_PIN         GPIO_PINS_9           // 抽水马达控制口,输出
 
- #define MYMAC_H_POWER_PIN       GPIO_PINS_7           // 加湿器电源
 
 
- // 启动加湿器时的湿度临界点
 
- #define WORK_HUMI  60
 
 
- // 每补水一次,隔多长时间再次见此是否缺水
 
- #define WORK_JIANXIE_SEC  -10
 
 
- // 每次补水的时间
 
- #define WORK_BUSHUI_SEC  4
 
 
- // 控制加湿器电源
 
- #define OPEN_H_POWER()          gpio_bits_set(MYMAC_PORT, MYMAC_H_POWER_PIN);
 
- #define CLOSE_H_POWER()         gpio_bits_reset(MYMAC_PORT, MYMAC_H_POWER_PIN);
 
 
- // 控制补水马达工作
 
- #define OPEN_MOTOR()            gpio_bits_set(MYMAC_PORT, MYMAC_MOTOR_PIN);
 
- #define CLOSE_MOTOR()           gpio_bits_reset(MYMAC_PORT, MYMAC_MOTOR_PIN);
 
 
 
- // 补水标志
 
- int32_t bushui_flag = 0;
 
 
- /** @addtogroup AT32F405_periph_examples
 
-   * @{
 
-   */
 
 
- /** @addtogroup 405_GPIO_led_toggle GPIO_led_toggle
 
-   * @{
 
-   */
 
 
 
 
 
- /**
 
-  * 加湿器相关控制口初始化
 
-  * PB8 - 水位传感器采集信号
 
-  * PB9 - 抽水马达控制信号
 
-  * PB7 - 控制加湿器的电源信号
 
-  */
 
- void mymac_Init(void) {
 
-     gpio_init_type gpio_init_struct;
 
 
-     // 允许总线时钟
 
-     crm_periph_clock_enable(CRM_GPIOB_PERIPH_CLOCK, TRUE);
 
 
-     // 设置初始化缺省参数
 
-     gpio_default_para_init(&gpio_init_struct);
 
 
-     // 设置水位信号采集口,输入模式
 
-     gpio_init_struct.gpio_drive_strength = GPIO_DRIVE_STRENGTH_STRONGER;
 
-     gpio_init_struct.gpio_out_type  = GPIO_OUTPUT_PUSH_PULL;
 
-     gpio_init_struct.gpio_mode = GPIO_MODE_INPUT;
 
-     gpio_init_struct.gpio_pull = GPIO_PULL_DOWN;
 
-     gpio_init_struct.gpio_pins = MYMAC_WATER_POS_PIN;
 
-     gpio_init(MYMAC_PORT, &gpio_init_struct);
 
-     
 
-   
 
-     // 抽水马达控制口,输出模式; 加湿器电源,输出模式
 
-     gpio_init_struct.gpio_drive_strength = GPIO_DRIVE_STRENGTH_STRONGER;
 
-     gpio_init_struct.gpio_out_type  = GPIO_OUTPUT_PUSH_PULL;
 
-     gpio_init_struct.gpio_mode = GPIO_MODE_OUTPUT;
 
-     gpio_init_struct.gpio_pins = MYMAC_MOTOR_PIN | MYMAC_H_POWER_PIN;
 
-     gpio_init_struct.gpio_pull = GPIO_PULL_NONE;
 
-     gpio_init(MYMAC_PORT, &gpio_init_struct);  
 
-     
 
-     
 
- }
 
 
 
 
 
 
- /**
 
-   * [url=home.php?mod=space&uid=247401]@brief[/url]  main function.
 
-   * @param  none
 
-   * @retval none
 
-   */
 
- int main(void) {
 
-     float         temperature;        // temperature [°C]
 
-     float        humidity;                // relative humidity [%RH]
 
-     char val[32]={'\0'};
 
-     etError   error;        // error code
 
-     
 
-     system_clock_config();
 
 
-     at32_board_init();
 
-     uart_print_init(115200);
 
-     
 
 
-     printf("Start main ...\r\n");
 
-     
 
-     // 初始化TFT显示屏
 
-     Lcd_Init();
 
-     
 
-     // 测试
 
-     Lcd_Clear(BLACK);
 
-     Gui_DrawFont_GBK16(8,10,WHITE, BLACK, (unsigned char *)"Artery & 21IC");
 
-     Gui_DrawFont_GBK16(30,36,WHITE, BLACK, (unsigned char *)"AT32F405");    
 
 
-     Gui_DrawFont_GBK16(0, 60,WHITE, BLACK, (unsigned char *)"初始化:");
 
-     
 
-     Gui_DrawFont_GBK16(10, 76,WHITE, BLACK, (unsigned char *)"水位控制接口");    
 
-     // 初始化水位传感器、抽水马达控制口
 
-     at32_led_on(LED2);
 
-     mymac_Init();
 
-     Gui_DrawFont_GBK16(10, 92,WHITE, BLACK, (unsigned char *)"OK");    
 
-     
 
-     at32_led_off(LED2);
 
-     at32_led_on(LED3);
 
-     // 初始化温湿度传感器GXHT-30
 
-     Gui_DrawFont_GBK16(10, 76,WHITE, BLACK, (unsigned char *)"温度传感器");
 
-     gxht30_Init(GXHT30_ADDRESS);
 
-     Gui_DrawFont_GBK16(10, 92,WHITE, BLACK, (unsigned char *)"OK");
 
 
-     Gui_DrawFont_GBK16(0, 60, WHITE, BLACK, (unsigned char *)"            ");
 
-     Gui_DrawFont_GBK16(10, 76,WHITE, BLACK, (unsigned char *)"            ");
 
-     Gui_DrawFont_GBK16(10, 92,WHITE, BLACK, (unsigned char *)"            ");
 
-     
 
-     at32_led_off(LED3);
 
-     Gui_DrawFont_GBK16(0, 110, WHITE, BLACK, (unsigned char *)"温度");
 
-     Gui_DrawFont_GBK16(32,110, WHITE, BLACK, (unsigned char *)"=");
 
-     Gui_DrawFont_GBK16(0, 126,WHITE, BLACK, (unsigned char *)"湿度");
 
-     Gui_DrawFont_GBK16(32,126,WHITE, BLACK, (unsigned char *)"=");
 
-     while(1) {
 
-         //at32_led_toggle(LED2);
 
-         //delay_ms(200);
 
-         //at32_led_toggle(LED3);
 
-         //delay_ms(200);
 
-         //at32_led_toggle(LED4);
 
-         //delay_ms(200);
 
-         
 
-         // 测量温湿度,方法2:OK
 
-         SHT30_read_result(GXHT30_ADDRESS, &temperature, &humidity);
 
-         
 
-         sprintf(val, "%5.1f", temperature);
 
-         Gui_DrawFont_GBK16(48,110,WHITE, BLACK, (unsigned char *)val);
 
 
-         sprintf(val, "%5.1f", humidity);
 
-         Gui_DrawFont_GBK16(48,126, WHITE, BLACK, (unsigned char *)val);
 
-         
 
-         // 湿度在60以上时,加湿器不工作
 
-         if (humidity >= 60) {
 
-             CLOSE_H_POWER();
 
-             continue;
 
-         } else {
 
-             // 启动加湿器
 
-             OPEN_H_POWER();
 
-         }
 
-         
 
-         // 检查水位
 
-         if (gpio_input_data_bit_read(MYMAC_PORT, MYMAC_WATER_POS_PIN)) {
 
-             Gui_DrawFont_GBK16(0, 60, WHITE, BLACK, (unsigned char *)"            ");
 
-             //gpio_bits_reset(GXHT30_PORT, MYMAC_MOTOR_PIN);
 
-         } else {
 
-             // 水量不足时
 
-             Gui_DrawFont_GBK16(0, 60, WHITE, BLACK, (unsigned char *)"水量不足    ");
 
-             // 设置加水标志
 
-             if (bushui_flag==0) {
 
-                 bushui_flag = 1;
 
-             }
 
-         }
 
-         if (bushui_flag==1) {
 
-             // 启动补水马达
 
-             OPEN_MOTOR();
 
-             Gui_DrawFont_GBK16(0, 76, WHITE, BLACK, (unsigned char *)"开始补水    ");
 
-         }
 
 
-         if (bushui_flag>0) {
 
-             sprintf(val, "开始补水:%d", bushui_flag);
 
-             Gui_DrawFont_GBK16(0,76, WHITE, BLACK, (unsigned char *)val);
 
-             
 
-             bushui_flag++;
 
-             if (bushui_flag > WORK_BUSHUI_SEC) {
 
-                 // 补水3秒后,关闭补水马达,清除补水标志
 
-                 CLOSE_MOTOR();
 
-                 bushui_flag = WORK_JIANXIE_SEC;
 
-                 Gui_DrawFont_GBK16(0, 76, WHITE, BLACK, (unsigned char *)"补水完成    ");
 
-             }
 
-         }
 
-         
 
-         if (bushui_flag<0) {
 
-             bushui_flag++;
 
-             sprintf(val, "间歇期:%d", 0-bushui_flag);
 
-             Gui_DrawFont_GBK16(0,76, WHITE, BLACK, (unsigned char *)val);
 
-         }
 
 
-         
 
-         delay_ms(1000);
 
-     }
 
- }
 
 
- /**
 
-   * @}
 
-   */
 
 
- /**
 
-   * @}
 
-   */
 
 
 启动抽水马达,开始补水
