From 7d3fbe77a6c6883155c4a32992f38f4bf1dade8b Mon Sep 17 00:00:00 2001 From: Yuenold <1722451300@qq.com> Date: Thu, 3 Mar 2022 09:33:21 +0800 Subject: [PATCH] update --- APP/adc.c | 83 ++++++++++++------------ APP/key.c | 18 +++--- APP/key.h | 20 +++--- APP/main.c | 124 ++++++++++++++++++------------------ APP/main.h | 9 --- APP/ozone_pwm_control.c | 31 +++++---- APP/port.c | 24 +++---- APP/port.h | 56 +++++++--------- APP/pwm.c | 76 +++++++++++----------- APP/pwm.h | 4 +- APP/systick.c | 9 --- APP/systick.h | 10 --- APP/uart0.c | 34 ++++------ project_ozone/project_o.uvgui.admin | 6 +- 14 files changed, 226 insertions(+), 278 deletions(-) diff --git a/APP/adc.c b/APP/adc.c index e97b73b..9fb5573 100644 --- a/APP/adc.c +++ b/APP/adc.c @@ -4,52 +4,50 @@ static float prv_adc_get_value(); static void prv_adc_pa2_init() { ADC_InitStruType x; GPIO_InitSettingType y; - y.Signal = GPIO_Pin_Signal_Analog; //模拟 - y.Dir = GPIO_Direction_Input; //输入 + y.Signal = GPIO_Pin_Signal_Analog; //妯℃嫙 + y.Dir = GPIO_Direction_Input; //杈撳叆 y.Func = GPIO_Reuse_Func0; - // x.CHS设置adc采集的通道每个引脚对应一个通道 + // x.CHS璁剧疆adc閲囬泦鐨勯氶亾姣忎釜寮曡剼瀵瑰簲涓涓氶亾 GPIO_Init(GPIO_Pin_A2, &y); - //经过分频以后Tadclk=1/(PCLK/4)约等于0.083us + //缁忚繃鍒嗛浠ュ悗Tadclk=1/(PCLK/4)绾︾瓑浜0.083us x.CLKS = ADC_CLKS_PCLK; - x.CLKDIV = ADC_CLKDIV_1_32; /* ADC时钟源预分频 */ + x.CLKDIV = ADC_CLKDIV_1_32; /* ADC鏃堕挓婧愰鍒嗛 */ - //采集到的模拟量*3.3/4096=现在的电压 - - x.VREF_SEL = ADC_VREF_SEL_0; /* 内部参考电压2.048v,仅设置内部参考电压为多少 */ - x.VREFP = ADC_VREFP_VDD; /* 选择芯片的工作电压VDD,这个是设置adc具体是要哪个电压来做参考adc的参考电压为多少 */ - x.VREFN = ADC_VREFN_VSS; /* 负向参考电压选择 */ + //閲囬泦鍒扮殑妯℃嫙閲*3.3/4096=鐜板湪鐨勭數鍘 + x.VREF_SEL = ADC_VREF_SEL_0; /* 鍐呴儴鍙傝冪數鍘2.048v,浠呰缃唴閮ㄥ弬鑰冪數鍘嬩负澶氬皯 */ + x.VREFP = ADC_VREFP_VDD; /* 閫夋嫨鑺墖鐨勫伐浣滅數鍘媀DD锛岃繖涓槸璁剧疆adc鍏蜂綋鏄鍝釜鐢靛帇鏉ュ仛鍙傝僡dc鐨勫弬鑰冪數鍘嬩负澶氬皯 */ + x.VREFN = ADC_VREFN_VSS; /* 璐熷悜鍙傝冪數鍘嬮夋嫨 */ x.CHS = ADC_CHS_AIN8; - x.SMPS = ADC_SMPS_SOFT; /* AD采样模式为软件控制 */ - //采样时间st*2+1(个Tadclk)=1.743us - x.ST = 10; /* AD硬件采样时间选择 */ - x.BITSEL = ADC_BITSEL_12; /* AD分辨率12位 */ + x.SMPS = ADC_SMPS_SOFT; /* AD閲囨牱妯″紡涓鸿蒋浠舵帶鍒 */ + //閲囨牱鏃堕棿st*2+1(涓猅adclk)=1.743us + x.ST = 10; /* AD纭欢閲囨牱鏃堕棿閫夋嫨 */ + x.BITSEL = ADC_BITSEL_12; /* AD鍒嗚鲸鐜12浣 */ ADC_Init(&x); prv_adc_get_value(); } static void prv_adc_pb8_init() { ADC_InitStruType x; GPIO_InitSettingType y; - y.Signal = GPIO_Pin_Signal_Analog; //模拟 - y.Dir = GPIO_Direction_Input; //输入 + y.Signal = GPIO_Pin_Signal_Analog; //妯℃嫙 + y.Dir = GPIO_Direction_Input; //杈撳叆 y.Func = GPIO_Reuse_Func0; - // x.CHS设置adc采集的通道每个引脚对应一个通道 + // x.CHS璁剧疆adc閲囬泦鐨勯氶亾姣忎釜寮曡剼瀵瑰簲涓涓氶亾 GPIO_Init(GPIO_Pin_B8, &y); - //经过分频以后Tadclk=1/(PCLK/4)约等于0.083us + //缁忚繃鍒嗛浠ュ悗Tadclk=1/(PCLK/4)绾︾瓑浜0.083us x.CLKS = ADC_CLKS_PCLK; - x.CLKDIV = ADC_CLKDIV_1_32; /* ADC时钟源预分频 */ - - //采集到的模拟量*3.3/4096=现在的电压 + x.CLKDIV = ADC_CLKDIV_1_32; /* ADC鏃堕挓婧愰鍒嗛 */ - x.VREF_SEL = ADC_VREF_SEL_0; /* 内部参考电压2.048v,仅设置内部参考电压为多少 */ - x.VREFP = ADC_VREFP_VDD; /* 选择芯片的工作电压VDD,这个是设置adc具体是要哪个电压来做参考adc的参考电压为多少 */ - x.VREFN = ADC_VREFN_VSS; /* 负向参考电压选择 */ + //閲囬泦鍒扮殑妯℃嫙閲*3.3/4096=鐜板湪鐨勭數鍘 + x.VREF_SEL = ADC_VREF_SEL_0; /* 鍐呴儴鍙傝冪數鍘2.048v,浠呰缃唴閮ㄥ弬鑰冪數鍘嬩负澶氬皯 */ + x.VREFP = ADC_VREFP_VDD; /* 閫夋嫨鑺墖鐨勫伐浣滅數鍘媀DD锛岃繖涓槸璁剧疆adc鍏蜂綋鏄鍝釜鐢靛帇鏉ュ仛鍙傝僡dc鐨勫弬鑰冪數鍘嬩负澶氬皯 */ + x.VREFN = ADC_VREFN_VSS; /* 璐熷悜鍙傝冪數鍘嬮夋嫨 */ x.CHS = ADC_CHS_AIN3; - x.SMPS = ADC_SMPS_SOFT; /* AD采样模式为软件控制 */ - //采样时间st*2+1(个Tadclk)=1.743us - x.ST = 10; /* AD硬件采样时间选择 */ - x.BITSEL = ADC_BITSEL_12; /* AD分辨率12位 */ + x.SMPS = ADC_SMPS_SOFT; /* AD閲囨牱妯″紡涓鸿蒋浠舵帶鍒 */ + //閲囨牱鏃堕棿st*2+1(涓猅adclk)=1.743us + x.ST = 10; /* AD纭欢閲囨牱鏃堕棿閫夋嫨 */ + x.BITSEL = ADC_BITSEL_12; /* AD鍒嗚鲸鐜12浣 */ ADC_Init(&x); prv_adc_get_value(); } @@ -57,27 +55,26 @@ static void prv_adc_pb8_init() { static void prv_adc_pb9_init() { ADC_InitStruType x; GPIO_InitSettingType y; - y.Signal = GPIO_Pin_Signal_Analog; //模拟 - y.Dir = GPIO_Direction_Input; //输入 + y.Signal = GPIO_Pin_Signal_Analog; //妯℃嫙 + y.Dir = GPIO_Direction_Input; //杈撳叆 y.Func = GPIO_Reuse_Func0; - // x.CHS设置adc采集的通道每个引脚对应一个通道 + // x.CHS璁剧疆adc閲囬泦鐨勯氶亾姣忎釜寮曡剼瀵瑰簲涓涓氶亾 GPIO_Init(GPIO_Pin_B9, &y); - //经过分频以后Tadclk=1/(PCLK/32) + //缁忚繃鍒嗛浠ュ悗Tadclk=1/(PCLK/32) x.CLKS = ADC_CLKS_PCLK; - x.CLKDIV = ADC_CLKDIV_1_32; /* ADC时钟源预分频 */ + x.CLKDIV = ADC_CLKDIV_1_32; /* ADC鏃堕挓婧愰鍒嗛 */ - //采集到的模拟量*3.3/4096=现在的电压 - - x.VREF_SEL = ADC_VREF_SEL_0; /* 内部参考电压2.048v,仅设置内部参考电压为多少 */ - x.VREFP = ADC_VREFP_VDD; /* 选择芯片的工作电压VDD,这个是设置adc具体是要哪个电压来做参考adc的参考电压为多少 */ - x.VREFN = ADC_VREFN_VSS; /* 负向参考电压选择 */ + //閲囬泦鍒扮殑妯℃嫙閲*3.3/4096=鐜板湪鐨勭數鍘 + x.VREF_SEL = ADC_VREF_SEL_0; /* 鍐呴儴鍙傝冪數鍘2.048v,浠呰缃唴閮ㄥ弬鑰冪數鍘嬩负澶氬皯 */ + x.VREFP = ADC_VREFP_VDD; /* 閫夋嫨鑺墖鐨勫伐浣滅數鍘媀DD锛岃繖涓槸璁剧疆adc鍏蜂綋鏄鍝釜鐢靛帇鏉ュ仛鍙傝僡dc鐨勫弬鑰冪數鍘嬩负澶氬皯 */ + x.VREFN = ADC_VREFN_VSS; /* 璐熷悜鍙傝冪數鍘嬮夋嫨 */ x.CHS = ADC_CHS_AIN4; // x.CHS = ADC_CHS_AIN8; - x.SMPS = ADC_SMPS_SOFT; /* AD采样模式为软件控制 */ - //采样时间st*2+1(个Tadclk)=1.743us - x.ST = 10; /* AD硬件采样时间选择 */ - x.BITSEL = ADC_BITSEL_12; /* AD分辨率12位 */ + x.SMPS = ADC_SMPS_SOFT; /* AD閲囨牱妯″紡涓鸿蒋浠舵帶鍒 */ + //閲囨牱鏃堕棿st*2+1(涓猅adclk)=1.743us + x.ST = 10; /* AD纭欢閲囨牱鏃堕棿閫夋嫨 */ + x.BITSEL = ADC_BITSEL_12; /* AD鍒嗚鲸鐜12浣 */ ADC_Init(&x); prv_adc_get_value(); } @@ -114,4 +111,4 @@ float adc_get_value_pb8(void) { float adc_get_value_pb9(void) { prv_adc_pb9_init(); return prv_adc_get_value_average(AVERAGE_TABLE_SIZE); -} +} \ No newline at end of file diff --git a/APP/key.c b/APP/key.c index 2500ade..8abbd6c 100644 --- a/APP/key.c +++ b/APP/key.c @@ -27,12 +27,12 @@ void zkey_process_each(zkey_t *each); void zkey_init(zkey_module_t *module) { /** - * @brief 按键初始化,三个状态的初始化,之前的,现在的,之后的 + * @brief 鎸夐敭鍒濆鍖栵紝涓変釜鐘舵佺殑鍒濆鍖栵紝涔嬪墠鐨勶紝鐜板湪鐨勶紝涔嬪悗鐨 * */ s_module = module; - s_inited = true; //标志位说明按键初始化完成 - + s_inited = true; //鏍囧織浣嶈鏄庢寜閿垵濮嬪寲瀹屾垚 + for (int i = 0; i < s_module->nkey; i++) { s_module->keys[i].cur_state = zks_keep; s_module->keys[i].last_io_state = s_module->keys[i].get_key_state(); @@ -41,21 +41,21 @@ void zkey_init(zkey_module_t *module) { } void zkey_process_each(zkey_t *each) { /** - * @brief 按键是否发生变换,没变换的时候进行时间记录 + * @brief 鎸夐敭鏄惁鍙戠敓鍙樻崲锛屾病鍙樻崲鐨勬椂鍊欒繘琛屾椂闂磋褰 * * @param each */ each->keep_state_count++; - bool now_io_state = each->get_key_state(); //获取现在的按键io状态 + bool now_io_state = each->get_key_state(); //鑾峰彇鐜板湪鐨勬寜閿甶o鐘舵 if (each->currentstatekeep_count < 1000) { each->currentstatekeep_count++; } - if (now_io_state != each->last_real_state) //发生变换 + if (now_io_state != each->last_real_state) //鍙戠敓鍙樻崲 { each->currentstatekeep_count = 0; } - if (each->currentstatekeep_count >= 1) //按键状态保持时间大于20ms,更新按键状态 + if (each->currentstatekeep_count >= 1) //鎸夐敭鐘舵佷繚鎸佹椂闂村ぇ浜20ms,鏇存柊鎸夐敭鐘舵 { each->after_filter_state = now_io_state; } @@ -64,11 +64,11 @@ void zkey_process_each(zkey_t *each) { } void zkey_do_loop_in_each_period(void *_null) { /** - * @brief 循环查询按键的状态 + * @brief 寰幆鏌ヨ鎸夐敭鐨勭姸鎬 * */ if (!s_inited) return; - for (int i = 0; i < s_module->nkey; i++) //开始对每个按键进行查询 + for (int i = 0; i < s_module->nkey; i++) //寮濮嬪姣忎釜鎸夐敭杩涜鏌ヨ { zkey_process_each(&s_module->keys[i]); } diff --git a/APP/key.h b/APP/key.h index e84d3ab..8c46dc2 100644 --- a/APP/key.h +++ b/APP/key.h @@ -3,7 +3,7 @@ #include "port.h" #include "pwm.h" #define POWER_KEY_TRIGGER_TIME 3000 -#define KEY_SCAN_PERIOD 20 //扫描周期20ms +#define KEY_SCAN_PERIOD 20 //鎵弿鍛ㄦ湡20ms #define ARRAY_SIZE(x) (sizeof(x) / sizeof(x[0])) #define ZKEY_INIT(_name, _get_key_state) \ @@ -20,12 +20,12 @@ typedef bool (*get_key_state_t)(void); typedef enum { // mode1 zks_keep, - zks_rising_edge, //上升沿按键按下从0-1 - zks_falling_edge, //下降沿按键抬起1-0 - + zks_rising_edge, //涓婂崌娌挎寜閿寜涓嬩粠0-1 + zks_falling_edge, //涓嬮檷娌挎寜閿姮璧1-0 + // mode2 - zks_trigger_event, //触发 - zks_longtime_trigger_event, //长时间触发 + zks_trigger_event, //瑙﹀彂 + zks_longtime_trigger_event, //闀挎椂闂磋Е鍙 } zkey_state_t; /** @@ -36,14 +36,14 @@ typedef struct { get_key_state_t get_key_state; bool last_io_state; - zkey_state_t cur_state; //当前的状态 - uint32_t keep_state_count; /*按键当前状态保持了多久*/ + zkey_state_t cur_state; //褰撳墠鐨勭姸鎬 + uint32_t keep_state_count; /*鎸夐敭褰撳墠鐘舵佷繚鎸佷簡澶氫箙*/ bool hasProcessed; /*useful for user*/ bool after_filter_state; - uint32_t currentstatekeep_count; //消抖使用 - bool last_real_state; //消抖使用 + uint32_t currentstatekeep_count; //娑堟姈浣跨敤 + bool last_real_state; //娑堟姈浣跨敤 } zkey_t; /** diff --git a/APP/main.c b/APP/main.c index d18c56f..f2183be 100644 --- a/APP/main.c +++ b/APP/main.c @@ -1,16 +1,16 @@ #include "main.h" -#include //定义布尔 +#include //瀹氫箟甯冨皵 #include "board.h" -#define PWM_FREQHZ 25000 //硬件pwm频率 +#define PWM_FREQHZ 25000 //纭欢pwm棰戠巼 /*********************************************************************************************************************** - * =====================================================函数声明====================================================== * + * =====================================================鍑芥暟澹版槑====================================================== * ***********************************************************************************************************************/ void onkey(zkey_t *key, zkey_state_t key_state); /*********************************************************************************************************************** - * =====================================================全局变量====================================================== * + * =====================================================鍏ㄥ眬鍙橀噺====================================================== * ***********************************************************************************************************************/ static zkey_t s_keys[] = { @@ -22,22 +22,22 @@ static zkey_t s_keys[] = { zkey_module_t key_module = ZMODULE_INIT(s_keys, onkey); /*********************************************************************************************************************** - * =====================================================全局状态====================================================== * + * =====================================================鍏ㄥ眬鐘舵====================================================== * ***********************************************************************************************************************/ -static bool error_even_trigger_after_stop_ozone_work_state; //错误事件触发后停止臭氧工作标志位 +static bool error_even_trigger_after_stop_ozone_work_state; //閿欒浜嬩欢瑙﹀彂鍚庡仠姝㈣嚟姘у伐浣滄爣蹇椾綅 -// 设置 -bool g_setting_interval_work_flag = false; //现在的档位 -WORK_LEVEL_T g_setting_level = WORK_LEVEL_LOW; //关机前的档位 +// 璁剧疆 +bool g_setting_interval_work_flag = false; //鐜板湪鐨勬。浣 +WORK_LEVEL_T g_setting_level = WORK_LEVEL_LOW; //鍏虫満鍓嶇殑妗d綅 -//标志位 -bool g_power_flag = false; //开关机标志位 +//鏍囧織浣 +bool g_power_flag = false; //寮鍏虫満鏍囧織浣 static int g_error_num; -bool g_auto_shutdown_flag = false; //定时功能使能标志位 -static uint32_t g_auto_shutdown_countdown_s; //定时时间 +bool g_auto_shutdown_flag = false; //瀹氭椂鍔熻兘浣胯兘鏍囧織浣 +static uint32_t g_auto_shutdown_countdown_s; //瀹氭椂鏃堕棿 -//其他 -static bool pwm_modble_enable_falg; //硬件pwm使能标志位 +//鍏朵粬 +static bool pwm_modble_enable_falg; //纭欢pwm浣胯兘鏍囧織浣 /*********************************************************************************************************************** * =======================================================HOOK======================================================== * @@ -47,7 +47,7 @@ void HOOK_pwm_module_set_pwm_duty(uint32_t frequencyhz, uint32_t duty) { pwm_modble_enable_falg = true; } void HOOK_pwm_stop(void) { - set_pwm_modbul_freq_duty(PWM_FREQHZ, 0); //关闭PWM输出 + set_pwm_modbul_freq_duty(PWM_FREQHZ, 0); //鍏抽棴PWM杈撳嚭 pwm_modble_enable_falg = false; } bool HOOK_pwm_is_enable(void) { return pwm_modble_enable_falg; } @@ -57,7 +57,7 @@ int hook_get_autoshutdown_timecount() { return g_auto_shutdown_countdown_s; } * =================================================INTERNAL_FUNCTION================================================= * ***********************************************************************************************************************/ /** - * @brief 根据档位设置pwm输出,rgb的颜色 + * @brief 鏍规嵁妗d綅璁剧疆pwm杈撳嚭锛宺gb鐨勯鑹 * * @param gears */ @@ -90,7 +90,7 @@ void update_ozone_work_level(bool interval_work, WORK_LEVEL_T level) { } /** - * @brief 关机 + * @brief 鍏虫満 */ void shutdown(void) { printf("shutdown\n"); @@ -101,83 +101,83 @@ void shutdown(void) { update_ozone_work_level(false, WORK_LEVEL_CLOSE); - port_fan_set(false); //关闭风扇 + port_fan_set(false); //鍏抽棴椋庢墖 light_module_close_all_light(); } /*********************************************************************************************************************** - * ======================================================看门狗======================================================= * + * ======================================================鐪嬮棬鐙======================================================= * ***********************************************************************************************************************/ void iwdt_init(void) { /** - * @brief 看门狗介绍:当计数到0时,窗口计数器+1 - * 当窗口计数为“2”的时候,产生中断 - * 当窗口计数器为“4”的之前没有进行喂狗操作,产生复位 + * @brief 鐪嬮棬鐙椾粙缁嶏細褰撹鏁板埌0鏃讹紝绐楀彛璁℃暟鍣+1 + * 褰撶獥鍙h鏁颁负鈥2鈥濈殑鏃跺欙紝浜х敓涓柇 + * 褰撶獥鍙h鏁板櫒涓衡4鈥濈殑涔嬪墠娌℃湁杩涜鍠傜嫍鎿嶄綔锛屼骇鐢熷浣 */ IWDT_InitStruType x; x.WDT_Tms = 4000; - x.WDT_IE = Enable; /* IWDT中断使能 */ - x.WDT_Rst = Enable; /* IWDT复位使能 */ + x.WDT_IE = Enable; /* IWDT涓柇浣胯兘 */ + x.WDT_Rst = Enable; /* IWDT澶嶄綅浣胯兘 */ x.WDT_Clock = IWDT_CLOCK_WDT; /* LRC */ IWDT_Init(&x); - /* 使能IWDT */ + /* 浣胯兘IWDT */ IWDT_Enable(); } void feed_iwdt(void) { - //喂狗 + //鍠傜嫍 if (0x01 == IWDT_GetFlagStatus()) { IWDT_Clear(); - // printf("喂狗\r\n"); + // printf("鍠傜嫍\r\n"); } } void onkey(zkey_t *key, zkey_state_t key_state) { if (key->hasProcessed) return; /** - * @brief 关机时,只处理电源按键 + * @brief 鍏虫満鏃讹紝鍙鐞嗙數婧愭寜閿 */ if (!g_power_flag) { if (key == &s_keys[3] && key->cur_state == zks_falling_edge) { key->hasProcessed = true; // printf("key zks_rising_edge\r\n"); /** - * @brief 开机 - * 1.设置标志位 - * 2.打开风扇 - * 3.打开臭氧并打开相应的指示灯 + * @brief 寮鏈 + * 1.璁剧疆鏍囧織浣 + * 2.鎵撳紑椋庢墖 + * 3.鎵撳紑鑷哀骞舵墦寮鐩稿簲鐨勬寚绀虹伅 */ - g_power_flag = true; //开关机标志位 + g_power_flag = true; //寮鍏虫満鏍囧織浣 g_error_num = 0; - g_auto_shutdown_flag = false; //定时功能使能标志位 - g_auto_shutdown_countdown_s = 0; //定时时间 + g_auto_shutdown_flag = false; //瀹氭椂鍔熻兘浣胯兘鏍囧織浣 + g_auto_shutdown_countdown_s = 0; //瀹氭椂鏃堕棿 - port_fan_set(true); //打开你风扇 + port_fan_set(true); //鎵撳紑浣犻鎵 update_ozone_work_level(g_setting_interval_work_flag, g_setting_level); } return; } /** - * @brief 发生异常时,除了电源按键外,所有按键失效。 + * @brief 鍙戠敓寮傚父鏃讹紝闄や簡鐢垫簮鎸夐敭澶栵紝鎵鏈夋寜閿け鏁堛 */ - if (g_error_num != 0) { //设备存在异常 + if (g_error_num != 0) { //璁惧瀛樺湪寮傚父 if (key == &s_keys[3] && key->cur_state == zks_falling_edge) { key->hasProcessed = true; printf("process key[2] event\r\n"); /** - * @brief 关机 + * @brief 鍏虫満 */ shutdown(); } return; } - if (key == &s_keys[0] && key->cur_state == zks_falling_edge) //小于3s + if (key == &s_keys[0] && key->cur_state == zks_falling_edge) //灏忎簬3s { printf("process key[0] event\r\n"); /** - * @brief 处理定时按键事件 + * @brief 澶勭悊瀹氭椂鎸夐敭浜嬩欢 */ if (!g_auto_shutdown_flag) { g_auto_shutdown_flag = true; @@ -193,7 +193,7 @@ void onkey(zkey_t *key, zkey_state_t key_state) { } else if (key == &s_keys[1] && key->cur_state == zks_falling_edge) { /** - * @brief 处理等级按键 + * @brief 澶勭悊绛夌骇鎸夐敭 */ printf("process key[1] event\r\n"); if (g_setting_level == WORK_LEVEL_HIGHT) { @@ -209,14 +209,14 @@ void onkey(zkey_t *key, zkey_state_t key_state) { } else if (key == &s_keys[2] && key->cur_state == zks_falling_edge) { printf("process key[2] event\r\n"); /** - * @brief 处理间歇按键事件 + * @brief 澶勭悊闂存瓏鎸夐敭浜嬩欢 */ g_setting_interval_work_flag = !g_setting_interval_work_flag; update_ozone_work_level(g_setting_interval_work_flag, g_setting_level); } else if (key == &s_keys[3] && key->cur_state == zks_falling_edge) { printf("process key[2] event\r\n"); /** - * @brief 关机 + * @brief 鍏虫満 */ shutdown(); } @@ -232,36 +232,36 @@ void onkey(zkey_t *key, zkey_state_t key_state) { } \ } /*********************************************************************************************************************** - * ======================================================主函数======================================================= + * ======================================================涓诲嚱鏁======================================================= ***********************************************************************************************************************/ int main(void) { - HRC_Config(Enable, SCU_HRC_48M, Enable); //时钟源SCU_CLK_HRC + HRC_Config(Enable, SCU_HRC_48M, Enable); //鏃堕挓婧怱CU_CLK_HRC SystemInit(); - DeviceClockAllEnable(); //打开所有外设时钟 - User_SysTickInit(); //滴答定时器初始化为(配置为1ms中断) + DeviceClockAllEnable(); //鎵撳紑鎵鏈夊璁炬椂閽 + User_SysTickInit(); //婊寸瓟瀹氭椂鍣ㄥ垵濮嬪寲涓(閰嶇疆涓1ms涓柇) SysTick_Enable(); - //硬件初始化 + //纭欢鍒濆鍖 unused_gpio_init(); gpio_init(); uart0_init(); - //模块初始化 + //妯″潡鍒濆鍖 zkey_init(&key_module); - //上电默认关机 + //涓婄數榛樿鍏虫満 shutdown(); - //启动结束 + //鍚姩缁撴潫 printf("Initialization completed\r\n"); - //测试 + //娴嬭瘯 // set_pwm_modbul_freq_duty(25000, 10); // while (1) { // } while (true) { /******************************************************************************************************************* - * ==================================================调试指示灯=================================================== * + * ==================================================璋冭瘯鎸囩ず鐏=================================================== * *******************************************************************************************************************/ DO_IT_EACH_MS(200) { static uint8_t debug_led_state = 1; @@ -270,22 +270,22 @@ int main(void) { } END() /*********************************************************************************************************************** - * =================================================按键模块调度代码================================================== * + * =================================================鎸夐敭妯″潡璋冨害浠g爜================================================== * ***********************************************************************************************************************/ DO_IT_EACH_MS(KEY_PERIOD) { zkey_do_loop_in_each_period(NULL); } END(); /*********************************************************************************************************************** - * ===============================================灯光控制模块调度代码================================================ * + * ===============================================鐏厜鎺у埗妯″潡璋冨害浠g爜================================================ * ***********************************************************************************************************************/ light_module_schedule(); /*********************************************************************************************************************** - * ===============================================臭氧控制模块调度代码================================================ * + * ===============================================鑷哀鎺у埗妯″潡璋冨害浠g爜================================================ * ***********************************************************************************************************************/ ozone_pwm_control_module_loop(); /*********************************************************************************************************************** - * ===================================================自动关机逻辑==================================================== * + * ===================================================鑷姩鍏虫満閫昏緫==================================================== * ***********************************************************************************************************************/ // DO_IT_EACH_MS(1000) { @@ -296,7 +296,7 @@ int main(void) { } else { g_auto_shutdown_flag = false; /** - * @brief 触发定时关机 + * @brief 瑙﹀彂瀹氭椂鍏虫満 */ shutdown(); } @@ -304,12 +304,12 @@ int main(void) { } END(); /*********************************************************************************************************************** - * ===================================================异常监控逻辑==================================================== + * ===================================================寮傚父鐩戞帶閫昏緫==================================================== ***********************************************************************************************************************/ DO_IT_EACH_MS(EXCEPTION_CHECK_PERIOD) { /** * @brief - * 这里检测ADC的数值是否超出规定范围 + * 杩欓噷妫娴婣DC鐨勬暟鍊兼槸鍚﹁秴鍑鸿瀹氳寖鍥 */ if (false) { } diff --git a/APP/main.h b/APP/main.h index 2877159..996ea9f 100644 --- a/APP/main.h +++ b/APP/main.h @@ -1,12 +1,3 @@ -/********************************************************* - *Copyright (C), 2017, Shanghai Eastsoft Microelectronics Co., Ltd - *鏂囦欢鍚: main.h - *浣 鑰: AE Team - *鐗 鏈: V1.00 - *鏃 鏈: 2021/05/13 - *鎻 杩: - *澶 娉: 鏈蒋浠朵粎渚涘涔犲拰婕旂ず浣跨敤锛屽鐢ㄦ埛鐩存帴寮曠敤浠g爜鎵甯︽潵鐨勯闄╂垨鍚庢灉涓嶆壙鎷呬换浣曟硶寰嬭矗浠汇 - **********************************************************/ #ifndef __MAIN_H__ #define __MAIN_H__ diff --git a/APP/ozone_pwm_control.c b/APP/ozone_pwm_control.c index 81d4926..b1e92d8 100644 --- a/APP/ozone_pwm_control.c +++ b/APP/ozone_pwm_control.c @@ -1,9 +1,8 @@ #include "ozone_pwm_control.h" - uint32_t s_hardware_frequency; // hz -uint32_t s_hardware_duty; //单位ms,保存现在的PWM占空比 -uint32_t s_large_period; //单位ms,保存现在的定时周期 -uint32_t s_large_duty = 100; //单位ms,保存现在的定时占空比 +uint32_t s_hardware_duty; //鍗曚綅ms锛屼繚瀛樼幇鍦ㄧ殑PWM鍗犵┖姣 +uint32_t s_large_period; //鍗曚綅ms锛屼繚瀛樼幇鍦ㄧ殑瀹氭椂鍛ㄦ湡 +uint32_t s_large_duty = 100; //鍗曚綅ms锛屼繚瀛樼幇鍦ㄧ殑瀹氭椂鍗犵┖姣 uint32_t begin_ticket; bool ozone_pwm_control_enable_falg = false; @@ -12,14 +11,14 @@ void HOOK_pwm_stop(void); bool HOOK_pwm_is_enable(void); static void prv_update_begin_ticket(void) { - begin_ticket = get_sys_ticket(); //更新大周期的开始时间(间歇时间的开始的时间) + begin_ticket = get_sys_ticket(); //鏇存柊澶у懆鏈熺殑寮濮嬫椂闂达紙闂存瓏鏃堕棿鐨勫紑濮嬬殑鏃堕棿锛 } bool ozone_pwm_control_is_enable(void) { return ozone_pwm_control_enable_falg; } /** - * @brief 一直工作的时间定时的占空比为100, - * 间歇时间设置300000 + * @brief 涓鐩村伐浣滅殑鏃堕棿瀹氭椂鐨勫崰绌烘瘮涓100锛 + * 闂存瓏鏃堕棿璁剧疆300000 * @param freq * @param duty */ @@ -27,12 +26,12 @@ void ozone_pwm_control_module_set_pwm_output_1(uint32_t freqhz, uint8_t hardware ozone_pwm_control_module_set_pwm_output_2(freqhz, hardware_duty, 100 * 1000, 100); } /** - * @brief 定时和PWM + * @brief 瀹氭椂鍜孭WM * - * @param hardware_period pwm频率 - * @param hardware_duty pwm占空比 - * @param large_period 定时周期 - * @param large_duty 定时占空比 + * @param hardware_period pwm棰戠巼 + * @param hardware_duty pwm鍗犵┖姣 + * @param large_period 瀹氭椂鍛ㄦ湡 + * @param large_duty 瀹氭椂鍗犵┖姣 */ void ozone_pwm_control_module_set_pwm_output_2(uint32_t freqhz, uint8_t hardware_duty, uint32_t large_period, uint8_t large_duty) { s_hardware_frequency = freqhz; @@ -49,7 +48,7 @@ void ozone_pwm_control_module_stop_pwm(void) { ozone_pwm_control_enable_falg = f void ozone_pwm_control_module_loop(void) { static uint32_t hardware_frequency; static uint32_t hardware_duty; - if (ozone_pwm_control_is_enable() == false) { //没有使能直接退出 + if (ozone_pwm_control_is_enable() == false) { //娌℃湁浣胯兘鐩存帴閫鍑 if (HOOK_pwm_is_enable()) { HOOK_pwm_stop(); } @@ -63,9 +62,9 @@ void ozone_pwm_control_module_loop(void) { } else { if (HOOK_pwm_is_enable()) { printf("set rest\r\n"); - hardware_frequency = s_hardware_frequency; //将关闭之前的频率进行保存 - hardware_duty = s_hardware_duty; //将关闭之前的占空比进行保存 + hardware_frequency = s_hardware_frequency; //灏嗗叧闂箣鍓嶇殑棰戠巼杩涜淇濆瓨 + hardware_duty = s_hardware_duty; //灏嗗叧闂箣鍓嶇殑鍗犵┖姣旇繘琛屼繚瀛 HOOK_pwm_stop(); } } -} +} \ No newline at end of file diff --git a/APP/port.c b/APP/port.c index a14a796..9154baa 100644 --- a/APP/port.c +++ b/APP/port.c @@ -1,13 +1,13 @@ #include "port.h" -// 用到的io 串口:两个 led:4+1 RGB:3 风扇:1 +// 鐢ㄥ埌鐨刬o 涓插彛锛氫袱涓 led锛4+1 RGB:3 椋庢墖锛1 /** - * @brief 未使用的io设置为输出模式,固定电平并浮空 + * @brief 鏈娇鐢ㄧ殑io璁剧疆涓鸿緭鍑烘ā寮忥紝鍥哄畾鐢靛钩骞舵诞绌 * */ void unused_gpio_init(void) { GPIO_InitSettingType x; x.Signal = GPIO_Pin_Signal_Digital; - x.Dir = GPIO_Direction_Output; //输出模式 + x.Dir = GPIO_Direction_Output; //杈撳嚭妯″紡 // x.Dir = GPIO_Direction_Input; x.Func = GPIO_Reuse_Func0; x.ODE = GPIO_ODE_Output_Disable; @@ -16,10 +16,10 @@ void unused_gpio_init(void) { x.PDE = GPIO_PDE_Input_Enable; GPIO_Init(GPIO_Pin_A10, &x); GPIO_Init(GPIO_Pin_A23, &x); - GPIO_Init(GPIO_Pin_A27, &x); // 自己原理图上是26 - GPIO_Init(GPIO_Pin_A28, &x); // 自己原理图上是27 + GPIO_Init(GPIO_Pin_A27, &x); // 鑷繁鍘熺悊鍥句笂鏄26 + GPIO_Init(GPIO_Pin_A28, &x); // 鑷繁鍘熺悊鍥句笂鏄27 GPIO_Init(GPIO_Pin_B0, &x); - //三个adc + //涓変釜adc GPIO_Init(GPIO_Pin_B8, &x); GPIO_Init(GPIO_Pin_B9, &x); GPIO_Init(GPIO_Pin_A2, &x); @@ -50,7 +50,7 @@ static void led_gpio_init(void) { GPIO_Init(GPIO_Pin_A7, &x); GPIO_Init(GPIO_Pin_A8, &x); GPIO_Init(GPIO_Pin_A9, &x); - GPIO_Init(GPIO_Pin_B1, &x); //风扇 + GPIO_Init(GPIO_Pin_B1, &x); //椋庢墖 GPIO_Init(GPIO_Pin_A22, &x); } @@ -87,12 +87,12 @@ void port_led_r_set(bool state) { GPIO_SET(A, 7, !, state); } void port_led_g_set(bool state) { GPIO_SET(A, 8, !, state); } void port_led_b_set(bool state) { GPIO_SET(A, 9, !, state); } -bool port_gpio_get_timer_key_state(void) { return GPIO_GET(A, 11, !!); } //??H -bool port_gpio_get_gears_key_state(void) { return GPIO_GET(A, 16, !!); } //??M +bool port_gpio_get_timer_key_state(void) { return GPIO_GET(A, 11, !!); } +bool port_gpio_get_gears_key_state(void) { return GPIO_GET(A, 16, !!); } bool port_gpio_get_switch_key_state(void) { return GPIO_GET(A, 12, !!); } bool port_gpio_get_interval_key_state(void) { return GPIO_GET(A, 13, !!); } -bool port_led0_get_state(void) { return GPIO_GET(A, 3, !); } //??H -bool port_led1_get_state(void) { return GPIO_GET(B, 13, !); } //??M +bool port_led0_get_state(void) { return GPIO_GET(A, 3, !); } +bool port_led1_get_state(void) { return GPIO_GET(B, 13, !); } bool port_led2_get_state(void) { return GPIO_GET(A, 5, !); } -bool port_led3_get_state(void) { return GPIO_GET(A, 6, !); } +bool port_led3_get_state(void) { return GPIO_GET(A, 6, !); } \ No newline at end of file diff --git a/APP/port.h b/APP/port.h index df6a428..ea5c199 100644 --- a/APP/port.h +++ b/APP/port.h @@ -1,20 +1,17 @@ #pragma once -#include //定义布尔 - +#include //瀹氫箟甯冨皵 #include "lib_config.h" #include "system_ES8P5066.h" - // #define UART0_RXD0_PIN GPIO_Pin_A22 // #define UART0_TXD0_PIN GPIO_Pin_A23 #define UART0_RXD0_PIN GPIO_Pin_A24 #define UART0_TXD0_PIN GPIO_Pin_A25 #define GPIO_GET(port, pin, mirror) (mirror(GPIO_ReadBit(GPIO_Pin_##port##pin) == 1)) #define GPIO_SET(port, pin, mirror, _state) GPIO_WriteBit(GPIO_Pin_##port##pin, mirror _state ? 1 : 0); - void unused_gpio_init(void); void gpio_init(void); -//声明 +//澹版槑 void port_debug_set(bool state); void port_led0_set(bool state); void port_led1_set(bool state); @@ -36,17 +33,14 @@ bool port_led2_get_state(void); bool port_led3_get_state(void); /* - - GPIO_Pin_B0 = 0, //未使用 - GPIO_Pin_B1 = 1,//风扇 - + GPIO_Pin_B0 = 0, //鏈娇鐢 + GPIO_Pin_B1 = 1,//椋庢墖 GPIO_Pin_B8 = 8,//ADC GPIO_Pin_B9 = 9,//ADC GPIO_Pin_B10 = 10,//OSCI GPIO_Pin_B11 = 11,//OSCO GPIO_Pin_B12 = 12,//MRSTN GPIO_Pin_B13 = 13,//LED1 - GPIO_Pin_A1 = 15,//VCC GPIO_Pin_A2 = 16,//ADC GPIO_Pin_A3 = 17,//LED0 @@ -56,27 +50,24 @@ bool port_led3_get_state(void); GPIO_Pin_A7 = 21,//LED_R GPIO_Pin_A8 = 22,//LED_G GPIO_Pin_A9 = 23,//LED_B - GPIO_Pin_A10 = 24, //未使用 + GPIO_Pin_A10 = 24, //鏈娇鐢 GPIO_Pin_A11 = 25,//KEY1 GPIO_Pin_A12 = 26,//KEY2 GPIO_Pin_A13 = 27,//KEY3 GPIO_Pin_A14 = 28,//ISPSCK GPIO_Pin_A15 = 29,//ISPSDA GPIO_Pin_A16 = 30,//KEY4 - GPIO_Pin_A22 = 36,//DEBUG - GPIO_Pin_A23 = 37, //未使用 + GPIO_Pin_A23 = 37, //鏈娇鐢 GPIO_Pin_A24 = 38,//RX0 GPIO_Pin_A25 = 39,//RX1 - GPIO_Pin_A27 = 41, //未使用 - GPIO_Pin_A28 = 42, //未使用 - - 引脚分配 FUN0 - 主键H PA11 定时按键 - 主键M PA16 高低档的选择和关闭(1开机高档红,2绿色,3蓝色,4关闭) - 间歇 PA13 - 开关 PA12 - + GPIO_Pin_A27 = 41, //鏈娇鐢 + GPIO_Pin_A28 = 42, //鏈娇鐢 + 寮曡剼鍒嗛厤 FUN0 + 涓婚敭H PA11 瀹氭椂鎸夐敭 + 涓婚敭M PA16 楂樹綆妗g殑閫夋嫨鍜屽叧闂紙1寮鏈洪珮妗g孩锛2缁胯壊锛3钃濊壊锛4鍏抽棴锛 + 闂存瓏 PA13 + 寮鍏 PA12 LED0 PA3 LED1 PB13 LED2 PA5 @@ -85,25 +76,24 @@ bool port_led3_get_state(void); LED_G PA8 LED_B PA9 PWM PA4 - 风扇 PB1 - - 时间的设置 |√ + 椋庢墖 PB1 + 鏃堕棿鐨勮缃 |鈭 --------------------|------ - 档位的设置 | √ + 妗d綅鐨勮缃 | 鈭 --------------------|------ - 对应led的亮灭 | √ + 瀵瑰簲led鐨勪寒鐏 | 鈭 --------------------|------ - RGB灯 | + RGB鐏 | --------------------|------ - 设置PWM频率 | + 璁剧疆PWM棰戠巼 | --------------------|------ - 设置pwm占空比 |√ + 璁剧疆pwm鍗犵┖姣 |鈭 --------------------|------ - 倒计时 |√ + 鍊掕鏃 |鈭 --------------------|------ */ /* -未使用: +鏈娇鐢細 PA10 PA23 PA26 PA27 PB0 -*/ +*/ \ No newline at end of file diff --git a/APP/pwm.c b/APP/pwm.c index d462d70..6ce1d97 100644 --- a/APP/pwm.c +++ b/APP/pwm.c @@ -1,6 +1,5 @@ #include "pwm.h" #define CLCK 48 - static double calculate_top(double target_frequency_hz) { int clck = 0; int top = 0; @@ -10,7 +9,7 @@ static double calculate_top(double target_frequency_hz) { } void set_pwm_t16_pa4(int freqhz, float duty) { - double top_double = calculate_top(freqhz); //根据需要的频率计算出TOP(自动重装载值) + double top_double = calculate_top(freqhz); //鏍规嵁闇瑕佺殑棰戠巼璁$畻鍑篢OP锛堣嚜鍔ㄩ噸瑁呰浇鍊硷級 uint16_t top = (uint16_t)top_double; uint16_t Mat2 = (uint16_t)top_double * (duty / 100.0); uint16_t Mat3 = top; @@ -19,68 +18,65 @@ void set_pwm_t16_pa4(int freqhz, float duty) { printf("Mat3:%d\r\n", Mat3); printf("top:%d\r\n", top); ///////////////////////////////////////////////// - T16Nx_Disable(T16N0); // PA4 T16N0_1 T16Nx_BaseInitStruType x; T16Nx_PWMInitStruType y; - /* 初始化T16Nx定时器*/ - x.T16Nx_ClkS = T16Nx_ClkS_PCLK; //时钟源48M - x.T16Nx_SYNC = Disable; //不同步 - x.T16Nx_EDGE = T16Nx_EDGE_Rise; //上升沿触发 - x.T16Nx_Mode = T16Nx_Mode_PWM; // 选用PWM模式 - x.T16Nx_PREMAT = 0x01; /* 预分频比1:1 */ + /* 鍒濆鍖朤16Nx瀹氭椂鍣*/ + x.T16Nx_ClkS = T16Nx_ClkS_PCLK; //鏃堕挓婧48M + x.T16Nx_SYNC = Disable; //涓嶅悓姝 + x.T16Nx_EDGE = T16Nx_EDGE_Rise; //涓婂崌娌胯Е鍙 + x.T16Nx_Mode = T16Nx_Mode_PWM; // 閫夌敤PWM妯″紡 + x.T16Nx_PREMAT = 0x01; /* 棰勫垎棰戞瘮1:1 */ T16Nx_BaseInit(T16N0, &x); - /* 配置T16N0通道1输出 */ + /* 閰嶇疆T16N0閫氶亾1杈撳嚭 */ y.T16Nx_MOE0 = Disable; y.T16Nx_MOE1 = Enable; - y.T16Nx_POL0 = POSITIVE; //在串口发送的时候,正极性代表发送的数据与接受的数据相同,负极性代表与发送的数据相反,在这么不知道有没有作用 + y.T16Nx_POL0 = POSITIVE; //鍦ㄤ覆鍙e彂閫佺殑鏃跺欙紝姝f瀬鎬т唬琛ㄥ彂閫佺殑鏁版嵁涓庢帴鍙楃殑鏁版嵁鐩稿悓锛岃礋鏋佹т唬琛ㄤ笌鍙戦佺殑鏁版嵁鐩稿弽锛屽湪杩欎箞涓嶇煡閬撴湁娌℃湁浣滅敤 y.T16Nx_POL1 = POSITIVE; - y.T16Nx_PWMMODE = T16Nx_PWMMode_INDEP; //选择独立模式 - y.PWMDZE = Disable; // PWM互补模式死区使能 - y.REGBUFEN = Enable; //缓冲寄存器使能 (REGBUFEN目前不知道干什么用的) + y.T16Nx_PWMMODE = T16Nx_PWMMode_INDEP; //閫夋嫨鐙珛妯″紡 + y.PWMDZE = Disable; // PWM浜掕ˉ妯″紡姝诲尯浣胯兘 + y.REGBUFEN = Enable; //缂撳啿瀵勫瓨鍣ㄤ娇鑳 (REGBUFEN鐩墠涓嶇煡閬撳共浠涔堢敤鐨) T16Nx_PMWOutInit(T16N0, &y); - /* 配置T16N0 通道1输出 */ - /*MAT2 MAT3 通道的中断配置*/ - //匹配寄存器值匹配后的工作模式,计数到以后: 继续计数不产生中断 + /* 閰嶇疆T16N0 閫氶亾1杈撳嚭 */ + /*MAT2 MAT3 閫氶亾鐨勪腑鏂厤缃*/ + //鍖归厤瀵勫瓨鍣ㄥ煎尮閰嶅悗鐨勫伐浣滄ā寮忥紝璁℃暟鍒颁互鍚庯細 缁х画璁℃暟涓嶄骇鐢熶腑鏂 T16Nx_MAT2ITConfig(T16N0, T16Nx_Go_No); - //匹配寄存器值匹配后的工作模式,清零并重新计数,产生中断 + //鍖归厤瀵勫瓨鍣ㄥ煎尮閰嶅悗鐨勫伐浣滄ā寮,娓呴浂骞堕噸鏂拌鏁帮紝浜х敓涓柇 T16Nx_MAT3ITConfig(T16N0, T16Nx_Clr_Int); - /*MAT2 MAT3 匹配后的输出电平高低*/ + /*MAT2 MAT3 鍖归厤鍚庣殑杈撳嚭鐢靛钩楂樹綆*/ T16Nx_MAT2Out1Config(T16N0, - T16Nx_Out_Low); //匹配后输出端口的模式,输出高还是低 + T16Nx_Out_Low); //鍖归厤鍚庤緭鍑虹鍙g殑妯″紡锛岃緭鍑洪珮杩樻槸浣 T16Nx_MAT3Out1Config(T16N0, - T16Nx_Out_High); //匹配后输出端口的模式,输出高还是低 - //以上是设置模式,输出高低电平 - - T16Nx_SetCNT1(T16N0, 0); //设定计数器的初始值 - T16Nx_SetMAT2(T16N0, Mat2); //设置匹配寄存器的数值 - T16Nx_SetMAT3(T16N0, Mat3); //设置匹配寄存器的数值 - //设置计数器峰值//根据这个得到定时的时钟48M/48000=1khZ(在独立模式下PWM的周期由TOP1决定为TOP+1,周期算出来是1ms) + T16Nx_Out_High); //鍖归厤鍚庤緭鍑虹鍙g殑妯″紡锛岃緭鍑洪珮杩樻槸浣 + //浠ヤ笂鏄缃ā寮忥紝杈撳嚭楂樹綆鐢靛钩 + T16Nx_SetCNT1(T16N0, 0); //璁惧畾璁℃暟鍣ㄧ殑鍒濆鍊 + T16Nx_SetMAT2(T16N0, Mat2); //璁剧疆鍖归厤瀵勫瓨鍣ㄧ殑鏁板 + T16Nx_SetMAT3(T16N0, Mat3); //璁剧疆鍖归厤瀵勫瓨鍣ㄧ殑鏁板 + //璁剧疆璁℃暟鍣ㄥ嘲鍊//鏍规嵁杩欎釜寰楀埌瀹氭椂鐨勬椂閽48M/48000=1khZ(鍦ㄧ嫭绔嬫ā寮忎笅PWM鐨勫懆鏈熺敱TOP1鍐冲畾涓篢OP+1锛屽懆鏈熺畻鍑烘潵鏄1ms) T16Nx_SetTOP1(T16N0, top); - //以上是设置占空比 - /* 配置输出管脚 */ + //浠ヤ笂鏄缃崰绌烘瘮 + /* 閰嶇疆杈撳嚭绠¤剼 */ GPIO_InitSettingType initset; - initset.Signal = GPIO_Pin_Signal_Digital; //数字 - initset.Dir = GPIO_Direction_Output; //输出模式 - initset.Func = GPIO_Reuse_Func2; //复用到T16N0_1功能 - initset.ODE = GPIO_ODE_Output_Disable; //开漏使能 - initset.DS = GPIO_DS_Output_Normal; //普通电流模式 - initset.PUE = GPIO_PUE_Input_Enable; //弱上拉使能 - initset.PDE = GPIO_PDE_Input_Disable; //弱下拉禁止 - /* 配置PA4为T16N0输出通道1 */ + initset.Signal = GPIO_Pin_Signal_Digital; //鏁板瓧 + initset.Dir = GPIO_Direction_Output; //杈撳嚭妯″紡 + initset.Func = GPIO_Reuse_Func2; //澶嶇敤鍒癟16N0_1鍔熻兘 + initset.ODE = GPIO_ODE_Output_Disable; //寮婕忎娇鑳 + initset.DS = GPIO_DS_Output_Normal; //鏅氱數娴佹ā寮 + initset.PUE = GPIO_PUE_Input_Enable; //寮变笂鎷変娇鑳 + initset.PDE = GPIO_PDE_Input_Disable; //寮变笅鎷夌姝 + /* 閰嶇疆PA4涓篢16N0杈撳嚭閫氶亾1 */ GPIO_Init(GPIO_Pin_A4, &initset); T16Nx_Enable(T16N0); return; } //###################################################### - /** - * @brief 设置pwm的周期占空比 + * @brief 璁剧疆pwm鐨勫懆鏈熷崰绌烘瘮 * * @param frequency * @param duty @@ -90,4 +86,4 @@ void set_pwm_modbul_freq_duty(uint32_t frequencyhz, uint32_t duty) { set_pwm_t16_pa4(frequencyhz, duty); printf("set_pwm_modbul_freq_duty freq:%d,duty%d\n", frequencyhz, duty); } -//###################################################### +//###################################################### \ No newline at end of file diff --git a/APP/pwm.h b/APP/pwm.h index 29dd75e..a69cac4 100644 --- a/APP/pwm.h +++ b/APP/pwm.h @@ -1,5 +1,5 @@ -#ifndef _pwm_module_H_ -#define _pwm_module_H_ +#ifndef _PWM_MODULE_H_ +#define _PWM_MODULE_H_ #include "lib_config.h" #include "light.h" diff --git a/APP/systick.c b/APP/systick.c index 1f2fd49..1b6d266 100644 --- a/APP/systick.c +++ b/APP/systick.c @@ -1,12 +1,3 @@ -/********************************************************* -*Copyright (C), 2017, Shanghai Eastsoft Microelectronics Co., Ltd. -*鏂囦欢鍚: systick.c -*浣 鑰: AE Team -*鐗 鏈: V1.00 -*鏃 鏈: 2021/05/13 -*鎻 杩: 绯荤粺婊寸瓟妯″潡绋嬪簭 -*澶 娉: 鏈蒋浠朵粎渚涘涔犲拰婕旂ず浣跨敤锛屽鐢ㄦ埛鐩存帴寮曠敤浠g爜鎵甯︽潵鐨勯闄╂垨鍚庢灉涓嶆壙鎷呬换浣曟硶寰嬭矗浠汇 -**********************************************************/ #include "systick.h" extern uint32_t g_sys_sick; diff --git a/APP/systick.h b/APP/systick.h index 91ff848..a9ccfde 100644 --- a/APP/systick.h +++ b/APP/systick.h @@ -1,13 +1,3 @@ -/********************************************************* -*Copyright (C), 2017, Shanghai Eastsoft Microelectronics Co., Ltd. -*鏂囦欢鍚: systick.h -*浣 鑰: AE Team -*鐗 鏈: V1.00 -*鏃 鏈: 2021/05/13 -*鎻 杩: 绯荤粺婊寸瓟妯″潡绋嬪簭澶存枃浠 -*澶 娉: - 鏈蒋浠朵粎渚涘涔犲拰婕旂ず浣跨敤锛屽鐢ㄦ埛鐩存帴寮曠敤浠g爜鎵甯︽潵鐨勯闄╂垨鍚庢灉涓嶆壙鎷呬换浣曟硶寰嬭矗浠汇 -**********************************************************/ #ifndef __SYSTICK_H__ #define __SYSTICK_H__ diff --git a/APP/uart0.c b/APP/uart0.c index df1968e..48b6f0c 100644 --- a/APP/uart0.c +++ b/APP/uart0.c @@ -1,9 +1,8 @@ #include "uart0.h" - void uart0_init(void) { /** - * @brief 配置串口0的波特率为115200 - * 时钟为系统时钟 Fpclk 为系统时钟频率 + * @brief 閰嶇疆涓插彛0鐨勬尝鐗圭巼涓115200 + * 鏃堕挓涓虹郴缁熸椂閽 Fpclk 涓虹郴缁熸椂閽熼鐜 * */ GPIO_InitSettingType InitSet; @@ -27,26 +26,26 @@ void uart0_init(void) { UART_InitStruType UART_InitStruct; - UART_InitStruct.UART_BaudRate = 115200; //波特率 - UART_InitStruct.UART_ClockSet = UART_Clock_1; //时钟选择不分频 - UART_InitStruct.UART_RxMode = UART_DataMode_8; // 8数据位无奇偶校验位 - //标准极性端口数据和传输数据相同 + UART_InitStruct.UART_BaudRate = 115200; //娉㈢壒鐜 + UART_InitStruct.UART_ClockSet = UART_Clock_1; //鏃堕挓閫夋嫨涓嶅垎棰 + UART_InitStruct.UART_RxMode = UART_DataMode_8; // 8鏁版嵁浣嶆棤濂囧伓鏍¢獙浣 + //鏍囧噯鏋佹х鍙f暟鎹拰浼犺緭鏁版嵁鐩稿悓 UART_InitStruct.UART_RxPolar = UART_Polar_Normal; - UART_InitStruct.UART_StopBits = UART_StopBits_1; //一个停止位 - UART_InitStruct.UART_TxMode = UART_DataMode_8; // 8数据位无奇偶校验位 - UART_InitStruct.UART_TxPolar = UART_Polar_Normal; //标准usart极性 + UART_InitStruct.UART_StopBits = UART_StopBits_1; //涓涓仠姝綅 + UART_InitStruct.UART_TxMode = UART_DataMode_8; // 8鏁版嵁浣嶆棤濂囧伓鏍¢獙浣 + UART_InitStruct.UART_TxPolar = UART_Polar_Normal; //鏍囧噯usart鏋佹 UART_Init(UART0, &UART_InitStruct); - UART_ITConfig(UART0, UART_IT_RB, Enable); /* UART0接收中断使能 */ - /* UART0发送缓冲区空中断模式: 全空中断 */ + UART_ITConfig(UART0, UART_IT_RB, Enable); /* UART0鎺ユ敹涓柇浣胯兘 */ + /* UART0鍙戦佺紦鍐插尯绌轰腑鏂ā寮: 鍏ㄧ┖涓柇 */ UART_TBIMConfig(UART0, UART_TBIM_Byte); - NVIC_Init(NVIC_UART0_IRQn, NVIC_Priority_1, Enable); //使能串口0中断 + NVIC_Init(NVIC_UART0_IRQn, NVIC_Priority_1, Enable); //浣胯兘涓插彛0涓柇 UART0_TxEnable(); UART0_RxEnable(); } void UART0_IRQHandler(void) { /** - * @brief 接收来自串口的数据并做回显 + * @brief 鎺ユ敹鏉ヨ嚜涓插彛鐨勬暟鎹苟鍋氬洖鏄 * */ uint8_t uart0_data; @@ -62,9 +61,4 @@ void Uart0SendBuff(uint8_t *buff) { UART_ClearITPendingBit(UART0, UART_FLAG_TC); buff++; } -} - - - - - +} \ No newline at end of file diff --git a/project_ozone/project_o.uvgui.admin b/project_ozone/project_o.uvgui.admin index d597603..d6f837c 100644 --- a/project_ozone/project_o.uvgui.admin +++ b/project_ozone/project_o.uvgui.admin @@ -87,7 +87,7 @@ 44 0 - 1 + 2 -32000 -32000 @@ -107,7 +107,7 @@ 0 943 - 0100000004000000010000000100000001000000010000000000000002000000000000000100000001000000000000002800000028000000010000000800000000000000010000003D443A5C55736572735C61646D696E5C4465736B746F705C7A68616F5C70726F6A6563745F6F7A6F6E655F65733870353036365C4150505C6D61696E2E6300000000066D61696E2E6300000000C5D4F200FFFFFFFF51443A5C55736572735C61646D696E5C4465736B746F705C7A68616F5C70726F6A6563745F6F7A6F6E655F65733870353036365C4D444B5F537461727455705C737461727475705F45533850353036362E730000000012737461727475705F45533850353036362E7300000000FFDC7800FFFFFFFF4C443A5C55736572735C61646D696E5C4465736B746F705C7A68616F5C70726F6A6563745F6F7A6F6E655F65733870353036365C4C6962726172795C536F757263655C6C69625F756172742E63000000000A6C69625F756172742E6300000000BECEA100FFFFFFFF4E443A5C55736572735C61646D696E5C4465736B746F705C7A68616F5C70726F6A6563745F6F7A6F6E655F65733870353036365C4C6962726172795C536F757263655C6C69625F7072696E74662E63000000000C6C69625F7072696E74662E6300000000F0A0A100FFFFFFFF3D443A5C55736572735C61646D696E5C4465736B746F705C7A68616F5C70726F6A6563745F6F7A6F6E655F65733870353036365C4150505C706F72742E630000000006706F72742E6300000000BCA8E100FFFFFFFF3C443A5C55736572735C61646D696E5C4465736B746F705C7A68616F5C70726F6A6563745F6F7A6F6E655F65733870353036365C4150505C70776D2E63000000000570776D2E63000000009CC1B600FFFFFFFF48443A5C55736572735C61646D696E5C4465736B746F705C7A68616F5C70726F6A6563745F6F7A6F6E655F65733870353036365C506C6174466F726D5C69727168616E646C65722E63000000000C69727168616E646C65722E6300000000F7B88600FFFFFFFF3E443A5C55736572735C61646D696E5C4465736B746F705C7A68616F5C70726F6A6563745F6F7A6F6E655F65733870353036365C4150505C75617274302E63000000000775617274302E6300000000D9ADC200FFFFFFFF0100000010000000C5D4F200FFDC7800BECEA100F0A0A100BCA8E1009CC1B600F7B88600D9ADC200A5C2D700B3A6BE00EAD6A300F6FA7D00B5E99D005FC3CF00C1838300CACAD500010000000000000002000000AE010000E40000004A06000008030000 + 0100000004000000010000000100000001000000010000000000000002000000000000000100000001000000000000002800000028000000010000000800000000000000010000003D443A5C55736572735C61646D696E5C4465736B746F705C7A68616F5C70726F6A6563745F6F7A6F6E655F65733870353036365C4150505C6D61696E2E6300000000066D61696E2E6300000000C5D4F200FFFFFFFF51443A5C55736572735C61646D696E5C4465736B746F705C7A68616F5C70726F6A6563745F6F7A6F6E655F65733870353036365C4D444B5F537461727455705C737461727475705F45533850353036362E730000000012737461727475705F45533850353036362E7300000000FFDC7800FFFFFFFF4C443A5C55736572735C61646D696E5C4465736B746F705C7A68616F5C70726F6A6563745F6F7A6F6E655F65733870353036365C4C6962726172795C536F757263655C6C69625F756172742E63000000000A6C69625F756172742E6300000000BECEA100FFFFFFFF4E443A5C55736572735C61646D696E5C4465736B746F705C7A68616F5C70726F6A6563745F6F7A6F6E655F65733870353036365C4C6962726172795C536F757263655C6C69625F7072696E74662E63000000000C6C69625F7072696E74662E6300000000F0A0A100FFFFFFFF3D443A5C55736572735C61646D696E5C4465736B746F705C7A68616F5C70726F6A6563745F6F7A6F6E655F65733870353036365C4150505C706F72742E630000000006706F72742E6300000000BCA8E100FFFFFFFF3C443A5C55736572735C61646D696E5C4465736B746F705C7A68616F5C70726F6A6563745F6F7A6F6E655F65733870353036365C4150505C70776D2E63000000000570776D2E63000000009CC1B600FFFFFFFF48443A5C55736572735C61646D696E5C4465736B746F705C7A68616F5C70726F6A6563745F6F7A6F6E655F65733870353036365C506C6174466F726D5C69727168616E646C65722E63000000000C69727168616E646C65722E6300000000F7B88600FFFFFFFF3E443A5C55736572735C61646D696E5C4465736B746F705C7A68616F5C70726F6A6563745F6F7A6F6E655F65733870353036365C4150505C75617274302E63000000000775617274302E6300000000D9ADC200FFFFFFFF0100000010000000C5D4F200FFDC7800BECEA100F0A0A100BCA8E1009CC1B600F7B88600D9ADC200A5C2D700B3A6BE00EAD6A300F6FA7D00B5E99D005FC3CF00C1838300CACAD500010000000000000002000000F483FFFF4F83FFFF9088FFFF7385FFFF @@ -1818,7 +1818,7 @@ Build 976 - 00200000010000001000FFFF01001100434D4643546F6F6C426172427574746F6ECF7F0000000000001C0000000000000000000000000000000001000000010000000180D07F0000000002001D000000000000000000000000000000000100000001000000018030800000000000001E000000000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6EC7040000000000006A0000000C4261746368204275696C2664000000000000000000000000010000000100000000000000000000000100000004000580C7040000000000006A0000000C4261746368204275696C266400000000000000000000000001000000010000000000000000000000010000000000058046070000000000006B0000000D42617463682052656275696C640000000000000000000000000100000001000000000000000000000001000000000005804707000000000000FFFFFFFF0B426174636820436C65616E0000000000000000010000000000000001000000000000000000000001000000000005809E8A0000000000001F0000000F4261746326682053657475702E2E2E000000000000000000000000010000000100000000000000000000000100000000000180D17F0000000004002000000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001804C8A0000000000002100000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000FFFF01001900434D4643546F6F6C426172436F6D626F426F78427574746F6EBA000000000000000000000000000000000000000000000000010000000100000096000000030020500000000008546172676574203196000000000000000100085461726765742031000000000180EB880000000000002200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C07F000000000000230000000000000000000000000000000001000000010000000180B08A000000000400240000000000000000000000000000000001000000010000000180A8010000000004004E00000000000000000000000000000000010000000100000001807202000000000400530000000000000000000000000000000001000000010000000180BE010000000000005000000000000000000000000000000000010000000100000000000000054275696C64DC010000 + 00200000010000001000FFFF01001100434D4643546F6F6C426172427574746F6ECF7F0000000000001C0000000000000000000000000000000001000000010000000180D07F0000000000001D000000000000000000000000000000000100000001000000018030800000000000001E000000000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6EC7040000000000006A0000000C4261746368204275696C2664000000000000000000000000010000000100000000000000000000000100000004000580C7040000000000006A0000000C4261746368204275696C266400000000000000000000000001000000010000000000000000000000010000000000058046070000000000006B0000000D42617463682052656275696C640000000000000000000000000100000001000000000000000000000001000000000005804707000000000000FFFFFFFF0B426174636820436C65616E0000000000000000010000000000000001000000000000000000000001000000000005809E8A0000000000001F0000000F4261746326682053657475702E2E2E000000000000000000000000010000000100000000000000000000000100000000000180D17F0000000004002000000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001804C8A0000000000002100000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000FFFF01001900434D4643546F6F6C426172436F6D626F426F78427574746F6EBA000000000000000000000000000000000000000000000000010000000100000096000000030020500000000008546172676574203196000000000000000100085461726765742031000000000180EB880000000000002200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C07F000000000000230000000000000000000000000000000001000000010000000180B08A000000000400240000000000000000000000000000000001000000010000000180A8010000000004004E00000000000000000000000000000000010000000100000001807202000000000400530000000000000000000000000000000001000000010000000180BE010000000000005000000000000000000000000000000000010000000100000000000000054275696C64DC010000 583