From 8157ce41bd14797ec40a6b537ee64dfce51d2726 Mon Sep 17 00:00:00 2001 From: wangfq Date: Mon, 20 Jul 2026 09:07:37 +0800 Subject: [PATCH] =?UTF-8?q?=E7=BC=96=E7=A0=81=E8=BD=AC=E6=8D=A2:=20GBK=20-?= =?UTF-8?q?>=20UTF-8=EF=BC=8C=E6=89=80=E6=9C=89.c/.h=E6=BA=90=E6=96=87?= =?UTF-8?q?=E4=BB=B6=E4=B8=AD=E6=96=87=E6=B3=A8=E9=87=8A=E7=BB=9F=E4=B8=80?= =?UTF-8?q?UTF-8=E7=BC=96=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../APP/include/ota.h | 86 ++-- .../APP/include/peripheral.h | 2 +- BLE/592OnlyUpdateApp_IAP_28K/APP/peripheral.c | 92 ++--- .../APP/peripheral_main.c | 24 +- .../Profile/OTAprofile.c | 26 +- .../Profile/include/OTAprofile.h | 30 +- .../APP/peripheral_main.c | 6 +- BLE/DLD110S_Peripheral_28K/APP/dbn_ble_srv.c | 42 +- .../APP/include/cmcng.h | 16 +- .../APP/include/dbn_ble_srv.h | 14 +- .../APP/include/storage.h | 38 +- BLE/DLD110S_Peripheral_28K/APP/peripheral.c | 22 +- .../APP/peripheral_main.c | 294 +++++++------- .../Profile/devinfoservice.c | 2 +- .../Profile/gattprofile.c | 2 +- BLE/HAL/KEY.c | 12 +- BLE/HAL/LED.c | 2 +- BLE/HAL/MCU.c | 40 +- BLE/HAL/RTC.c | 16 +- BLE/HAL/include/CONFIG.h | 74 ++-- BLE/HAL/include/HAL.h | 12 +- BLE/HAL/include/KEY.h | 4 +- BLE/HAL/include/LED.h | 2 +- BLE/HAL/include/RTC.h | 4 +- BLE/HAL/include/SLEEP.h | 6 +- BLE/LIB/CH59xBLE_LIB.h | 8 +- BLE/LIB/CH59xBLE_ROM.h | 12 +- SRC/StdPeriphDriver/CH59x_adc.c | 54 +-- SRC/StdPeriphDriver/CH59x_clk.c | 92 ++--- SRC/StdPeriphDriver/CH59x_flash.c | 24 +- SRC/StdPeriphDriver/CH59x_gpio.c | 46 +-- SRC/StdPeriphDriver/CH59x_lcd.c | 10 +- SRC/StdPeriphDriver/CH59x_pwm.c | 20 +- SRC/StdPeriphDriver/CH59x_pwr.c | 86 ++-- SRC/StdPeriphDriver/CH59x_spi0.c | 100 ++--- SRC/StdPeriphDriver/CH59x_sys.c | 68 ++-- SRC/StdPeriphDriver/CH59x_timer0.c | 12 +- SRC/StdPeriphDriver/CH59x_timer1.c | 22 +- SRC/StdPeriphDriver/CH59x_timer2.c | 22 +- SRC/StdPeriphDriver/CH59x_timer3.c | 12 +- SRC/StdPeriphDriver/CH59x_uart0.c | 40 +- SRC/StdPeriphDriver/CH59x_uart1.c | 40 +- SRC/StdPeriphDriver/CH59x_uart2.c | 40 +- SRC/StdPeriphDriver/CH59x_uart3.c | 40 +- SRC/StdPeriphDriver/CH59x_usbdev.c | 32 +- SRC/StdPeriphDriver/CH59x_usbhostBase.c | 298 +++++++------- SRC/StdPeriphDriver/CH59x_usbhostClass.c | 378 +++++++++--------- SRC/StdPeriphDriver/inc/CH59x_adc.h | 142 +++---- SRC/StdPeriphDriver/inc/CH59x_clk.h | 112 +++--- SRC/StdPeriphDriver/inc/CH59x_common.h | 4 +- SRC/StdPeriphDriver/inc/CH59x_flash.h | 2 +- SRC/StdPeriphDriver/inc/CH59x_gpio.h | 94 ++--- SRC/StdPeriphDriver/inc/CH59x_lcd.h | 52 +-- SRC/StdPeriphDriver/inc/CH59x_pwm.h | 88 ++-- SRC/StdPeriphDriver/inc/CH59x_pwr.h | 74 ++-- SRC/StdPeriphDriver/inc/CH59x_spi.h | 126 +++--- SRC/StdPeriphDriver/inc/CH59x_sys.h | 86 ++-- SRC/StdPeriphDriver/inc/CH59x_timer.h | 290 +++++++------- SRC/StdPeriphDriver/inc/CH59x_uart.h | 246 ++++++------ SRC/StdPeriphDriver/inc/CH59x_usbdev.h | 60 +-- SRC/StdPeriphDriver/inc/CH59x_usbhost.h | 234 +++++------ SRC/StdPeriphDriver/inc/ISP592.h | 4 +- 62 files changed, 1969 insertions(+), 1969 deletions(-) diff --git a/BLE/592OnlyUpdateApp_IAP_28K/APP/include/ota.h b/BLE/592OnlyUpdateApp_IAP_28K/APP/include/ota.h index 6e3db87..08b31c6 100644 --- a/BLE/592OnlyUpdateApp_IAP_28K/APP/include/ota.h +++ b/BLE/592OnlyUpdateApp_IAP_28K/APP/include/ota.h @@ -3,7 +3,7 @@ * Author : WCH * Version : V1.10 * Date : 2018/12/14 - * Description : oad相关配置定义 + * Description : oad鐩稿叧閰嶇疆瀹氫箟 ********************************************************************************* * Copyright (c) 2021 Nanjing Qinheng Microelectronics Co., Ltd. * Attention: This software (modified or not) and binary are used for @@ -19,18 +19,18 @@ * ------------------------------------------------------------------------------------------------ */ -/* 整个用户code区分成四块,依次为4K,44K,16K,128K 后三块分别叫做imageA(APP),imageB(IAP),LIB */ +/* 鏁翠釜鐢ㄦ埛code鍖哄垎鎴愬洓鍧楋紝渚濇涓4K锛44K锛16K锛128K 鍚庝笁鍧楀垎鍒彨鍋歩mageA锛圓PP锛夛紝imageB锛圛AP锛夛紝LIB */ -/* FLASH定义 */ +/* FLASH瀹氫箟 */ #define FLASH_BLOCK_SIZE EEPROM_BLOCK_SIZE -/* imageA定义 */ +/* imageA瀹氫箟 */ #define IMAGE_A_FLAG 0x01 #define IMAGE_A_START_ADD 0x1000 #define IMAGE_A_SIZE 44 * 1024 -/* imageB定义 */ +/* imageB瀹氫箟 */ #define IMAGE_B_FLAG 0x02 #define IMAGE_B_START_ADD (IMAGE_A_START_ADD + IMAGE_A_SIZE) #define IMAGE_B_SIZE 16 * 1024 @@ -39,72 +39,72 @@ #define jumpApp ((void (*)(void))((uint32_t *)IMAGE_A_START_ADD)) -/* IAP定义 */ -/* 以下为IAP下载命令定义 */ -#define CMD_IAP_PROM 0x80 // IAP编程命令 -#define CMD_IAP_ERASE 0x81 // IAP擦除命令 -#define CMD_IAP_VERIFY 0x82 // IAP校验命令 -#define CMD_IAP_END 0x83 // IAP结束标志 -#define CMD_IAP_INFO 0x84 // IAP获取设备信息 +/* IAP瀹氫箟 */ +/* 浠ヤ笅涓篒AP涓嬭浇鍛戒护瀹氫箟 */ +#define CMD_IAP_PROM 0x80 // IAP缂栫▼鍛戒护 +#define CMD_IAP_ERASE 0x81 // IAP鎿﹂櫎鍛戒护 +#define CMD_IAP_VERIFY 0x82 // IAP鏍¢獙鍛戒护 +#define CMD_IAP_END 0x83 // IAP缁撴潫鏍囧織 +#define CMD_IAP_INFO 0x84 // IAP鑾峰彇璁惧淇℃伅 -/* 数据帧长度定义 */ +/* 鏁版嵁甯ч暱搴﹀畾涔 */ #define IAP_LEN 247 -/* 存放在DataFlash地址,不能占用蓝牙的位置 */ +/* 瀛樻斁鍦―ataFlash鍦板潃锛屼笉鑳藉崰鐢ㄨ摑鐗欑殑浣嶇疆 */ #define OTA_DATAFLASH_ADD 0x00077000 - FLASH_ROM_MAX_SIZE -/* 存放在DataFlash里的OTA信息 */ +/* 瀛樻斁鍦―ataFlash閲岀殑OTA淇℃伅 */ typedef struct { - unsigned char ImageFlag; //记录的当前的image标志 + unsigned char ImageFlag; //璁板綍鐨勫綋鍓嶇殑image鏍囧織 unsigned char Revd[3]; } OTADataFlashInfo_t; -/* OTA IAP通讯协议定义 */ -/* 地址使用4倍偏移 */ +/* OTA IAP閫氳鍗忚瀹氫箟 */ +/* 鍦板潃浣跨敤4鍊嶅亸绉 */ typedef union { struct { - unsigned char cmd; /* 命令码 0x81 */ - unsigned char len; /* 后续数据长度 */ - unsigned char addr[2]; /* 擦除地址 */ - unsigned char block_num[2]; /* 擦除块数 */ + unsigned char cmd; /* 鍛戒护鐮 0x81 */ + unsigned char len; /* 鍚庣画鏁版嵁闀垮害 */ + unsigned char addr[2]; /* 鎿﹂櫎鍦板潃 */ + unsigned char block_num[2]; /* 鎿﹂櫎鍧楁暟 */ - } erase; /* 擦除命令 */ + } erase; /* 鎿﹂櫎鍛戒护 */ struct { - unsigned char cmd; /* 命令码 0x83 */ - unsigned char len; /* 后续数据长度 */ - unsigned char status[2]; /* 两字节状态,保留 */ - } end; /* 结束命令 */ + unsigned char cmd; /* 鍛戒护鐮 0x83 */ + unsigned char len; /* 鍚庣画鏁版嵁闀垮害 */ + unsigned char status[2]; /* 涓ゅ瓧鑺傜姸鎬侊紝淇濈暀 */ + } end; /* 缁撴潫鍛戒护 */ struct { - unsigned char cmd; /* 命令码 0x82 */ - unsigned char len; /* 后续数据长度 */ - unsigned char addr[2]; /* 校验地址 */ - unsigned char buf[IAP_LEN - 4]; /* 校验数据 */ - } verify; /* 校验命令 */ + unsigned char cmd; /* 鍛戒护鐮 0x82 */ + unsigned char len; /* 鍚庣画鏁版嵁闀垮害 */ + unsigned char addr[2]; /* 鏍¢獙鍦板潃 */ + unsigned char buf[IAP_LEN - 4]; /* 鏍¢獙鏁版嵁 */ + } verify; /* 鏍¢獙鍛戒护 */ struct { - unsigned char cmd; /* 命令码 0x80 */ - unsigned char len; /* 后续数据长度 */ - unsigned char addr[2]; /* 地址 */ - unsigned char buf[IAP_LEN - 4]; /* 后续数据 */ - } program; /* 编程命令 */ + unsigned char cmd; /* 鍛戒护鐮 0x80 */ + unsigned char len; /* 鍚庣画鏁版嵁闀垮害 */ + unsigned char addr[2]; /* 鍦板潃 */ + unsigned char buf[IAP_LEN - 4]; /* 鍚庣画鏁版嵁 */ + } program; /* 缂栫▼鍛戒护 */ struct { - unsigned char cmd; /* 命令码 0x84 */ - unsigned char len; /* 后续数据长度 */ - unsigned char buf[IAP_LEN - 2]; /* 后续数据 */ - } info; /* 编程命令 */ + unsigned char cmd; /* 鍛戒护鐮 0x84 */ + unsigned char len; /* 鍚庣画鏁版嵁闀垮害 */ + unsigned char buf[IAP_LEN - 2]; /* 鍚庣画鏁版嵁 */ + } info; /* 缂栫▼鍛戒护 */ struct { - unsigned char buf[IAP_LEN]; /* 接收数据包*/ + unsigned char buf[IAP_LEN]; /* 鎺ユ敹鏁版嵁鍖*/ } other; } OTA_IAP_CMD_t; -/* 记录当前的Image */ +/* 璁板綍褰撳墠鐨処mage */ extern unsigned char CurrImageFlag; #endif diff --git a/BLE/592OnlyUpdateApp_IAP_28K/APP/include/peripheral.h b/BLE/592OnlyUpdateApp_IAP_28K/APP/include/peripheral.h index 0ac3967..5fdeccb 100644 --- a/BLE/592OnlyUpdateApp_IAP_28K/APP/include/peripheral.h +++ b/BLE/592OnlyUpdateApp_IAP_28K/APP/include/peripheral.h @@ -28,7 +28,7 @@ extern "C" { // Simple BLE Peripheral Task Events #define SBP_START_DEVICE_EVT 0x0001 #define SBP_PERIODIC_EVT 0x0002 -#define OTA_FLASH_ERASE_EVT 0x0004 //OTA Flash擦除任务 +#define OTA_FLASH_ERASE_EVT 0x0004 //OTA Flash鎿﹂櫎浠诲姟 /********************************************************************* * MACROS diff --git a/BLE/592OnlyUpdateApp_IAP_28K/APP/peripheral.c b/BLE/592OnlyUpdateApp_IAP_28K/APP/peripheral.c index f2cbb51..c68b86e 100644 --- a/BLE/592OnlyUpdateApp_IAP_28K/APP/peripheral.c +++ b/BLE/592OnlyUpdateApp_IAP_28K/APP/peripheral.c @@ -3,7 +3,7 @@ * Author : WCH * Version : V1.0 * Date : 2018/12/10 - * Description : 外设从机应用程序,初始化广播连接参数,然后广播,直至连接主机后,通过自定义服务传输数据 + * Description : 澶栬浠庢満搴旂敤绋嬪簭锛屽垵濮嬪寲骞挎挱杩炴帴鍙傛暟锛岀劧鍚庡箍鎾紝鐩磋嚦杩炴帴涓绘満鍚庯紝閫氳繃鑷畾涔夋湇鍔′紶杈撴暟鎹 ********************************************************************************* * Copyright (c) 2021 Nanjing Qinheng Microelectronics Co., Ltd. * Attention: This software (modified or not) and binary are used for @@ -128,26 +128,26 @@ static uint8_t advertData[] = { static uint8_t attDeviceName[GAP_DEVICE_NAME_LEN] = "OTAOTA_OTAOTA_OTA"; // OTA IAP VARIABLES -/* OTA通讯的帧 */ +/* OTA閫氳鐨勫抚 */ OTA_IAP_CMD_t iap_rec_data; -/* OTA解析结果 */ +/* OTA瑙f瀽缁撴灉 */ uint32_t OpParaDataLen = 0; uint32_t OpAdd = 0; -/* flash的数据临时存储 */ +/* flash鐨勬暟鎹复鏃跺瓨鍌 */ __attribute__((aligned(8))) uint8_t block_buf[16]; -/* Image跳转函数地址定义 */ +/* Image璺宠浆鍑芥暟鍦板潃瀹氫箟 */ typedef int (*pImageTaskFn)(void); pImageTaskFn user_image_tasks; -/* Flash 擦除过程 */ -uint32_t EraseAdd = 0; //擦除地址 -uint32_t EraseBlockNum = 0; //需要擦除的块数 -uint32_t EraseBlockCnt = 0; //擦除的块计数 +/* Flash 鎿﹂櫎杩囩▼ */ +uint32_t EraseAdd = 0; //鎿﹂櫎鍦板潃 +uint32_t EraseBlockNum = 0; //闇瑕佹摝闄ょ殑鍧楁暟 +uint32_t EraseBlockCnt = 0; //鎿﹂櫎鐨勫潡璁℃暟 -/* FLASH 校验过程 */ +/* FLASH 鏍¢獙杩囩▼ */ uint8_t VerifyStatus = 0; /********************************************************************* @@ -312,7 +312,7 @@ uint16_t Peripheral_ProcessEvent(uint8_t task_id, uint16_t events) PRINT("ERASE:%08x num:%d\r\n", (int)(EraseAdd + EraseBlockCnt * FLASH_BLOCK_SIZE), (int)EraseBlockCnt); status = FLASH_ROM_ERASE(EraseAdd + EraseBlockCnt * FLASH_BLOCK_SIZE, FLASH_BLOCK_SIZE); - /* 擦除失败 */ + /* 鎿﹂櫎澶辫触 */ if(status != SUCCESS) { OTA_IAP_SendCMDDealSta(status); @@ -321,7 +321,7 @@ uint16_t Peripheral_ProcessEvent(uint8_t task_id, uint16_t events) EraseBlockCnt++; - /* 擦除结束 */ + /* 鎿﹂櫎缁撴潫 */ if(EraseBlockCnt >= EraseBlockNum) { PRINT("ERASE Complete\r\n"); @@ -438,10 +438,10 @@ static void performPeriodicTask(void) /********************************************************************* * @fn OTA_IAP_SendData * - * @brief OTA IAP发送数据,使用时限制20字节以内 + * @brief OTA IAP鍙戦佹暟鎹紝浣跨敤鏃堕檺鍒20瀛楄妭浠ュ唴 * - * @param p_send_data - 发送数据的指针 - * @param send_len - 发送数据的长度 + * @param p_send_data - 鍙戦佹暟鎹殑鎸囬拡 + * @param send_len - 鍙戦佹暟鎹殑闀垮害 * * @return none */ @@ -453,9 +453,9 @@ void OTA_IAP_SendData(uint8_t *p_send_data, uint8_t send_len) /********************************************************************* * @fn OTA_IAP_SendCMDDealSta * - * @brief OTA IAP执行的状态返回 + * @brief OTA IAP鎵ц鐨勭姸鎬佽繑鍥 * - * @param deal_status - 返回的状态 + * @param deal_status - 杩斿洖鐨勭姸鎬 * * @return none */ @@ -471,7 +471,7 @@ void OTA_IAP_SendCMDDealSta(uint8_t deal_status) /********************************************************************* * @fn OTA_IAP_CMDErrDeal * - * @brief OTA IAP异常命令码处理 + * @brief OTA IAP寮傚父鍛戒护鐮佸鐞 * * @return none */ @@ -483,9 +483,9 @@ void OTA_IAP_CMDErrDeal(void) /********************************************************************* * @fn SwitchImageFlag * - * @brief 切换dataflash里的ImageFlag + * @brief 鍒囨崲dataflash閲岀殑ImageFlag * - * @param new_flag - 切换的ImageFlag + * @param new_flag - 鍒囨崲鐨処mageFlag * * @return none */ @@ -494,23 +494,23 @@ void SwitchImageFlag(uint8_t new_flag) uint16_t i; uint32_t ver_flag; - /* 读取第一块 */ + /* 璇诲彇绗竴鍧 */ EEPROM_READ(OTA_DATAFLASH_ADD, (uint32_t *)&block_buf[0], 4); - /* 擦除第一块 */ + /* 鎿﹂櫎绗竴鍧 */ EEPROM_ERASE(OTA_DATAFLASH_ADD, EEPROM_PAGE_SIZE); - /* 更新Image信息 */ + /* 鏇存柊Image淇℃伅 */ block_buf[0] = new_flag; - /* 编程DataFlash */ + /* 缂栫▼DataFlash */ EEPROM_WRITE(OTA_DATAFLASH_ADD, (uint32_t *)&block_buf[0], 4); } /********************************************************************* * @fn DisableAllIRQ * - * @brief 关闭所有的中断 + * @brief 鍏抽棴鎵鏈夌殑涓柇 * * @return none */ @@ -522,7 +522,7 @@ void DisableAllIRQ(void) /********************************************************************* * @fn Rec_OTA_IAP_DataDeal * - * @brief 接收到OTA数据包处理 + * @brief 鎺ユ敹鍒癘TA鏁版嵁鍖呭鐞 * * @return none */ @@ -530,7 +530,7 @@ void Rec_OTA_IAP_DataDeal(void) { switch(iap_rec_data.other.buf[0]) { - /* 编程 */ + /* 缂栫▼ */ case CMD_IAP_PROM: { uint32_t i; @@ -543,12 +543,12 @@ void Rec_OTA_IAP_DataDeal(void) PRINT("IAP_PROM: %08x len:%d \r\n", (int)OpAdd, (int)OpParaDataLen); - /* 当前是ImageA,直接编程 */ + /* 褰撳墠鏄疘mageA锛岀洿鎺ョ紪绋 */ status = FLASH_ROM_WRITE(OpAdd, iap_rec_data.program.buf, (uint16_t)OpParaDataLen); OTA_IAP_SendCMDDealSta(status); break; } - /* 擦除 -- 蓝牙擦除由主机控制 */ + /* 鎿﹂櫎 -- 钃濈墮鎿﹂櫎鐢变富鏈烘帶鍒 */ case CMD_IAP_ERASE: { OpAdd = (uint32_t)(iap_rec_data.erase.addr[0]); @@ -560,7 +560,7 @@ void Rec_OTA_IAP_DataDeal(void) EraseAdd = OpAdd; EraseBlockCnt = 0; - /* 检验就放在擦除里清0 */ + /* 妫楠屽氨鏀惧湪鎿﹂櫎閲屾竻0 */ VerifyStatus = 0; PRINT("IAP_ERASE start:%08x num:%d\r\n", (int)OpAdd, (int)EraseBlockNum); @@ -571,15 +571,15 @@ void Rec_OTA_IAP_DataDeal(void) } else { - /* 修改DataFlash,切换至ImageB */ + /* 淇敼DataFlash锛屽垏鎹㈣嚦ImageB */ SwitchImageFlag(IMAGE_B_FLAG); - /* 启动擦除 */ + /* 鍚姩鎿﹂櫎 */ tmos_set_event(Peripheral_TaskID, OTA_FLASH_ERASE_EVT); } break; } - /* 校验 */ + /* 鏍¢獙 */ case CMD_IAP_VERIFY: { uint32_t i; @@ -598,22 +598,22 @@ void Rec_OTA_IAP_DataDeal(void) OTA_IAP_SendCMDDealSta(VerifyStatus); break; } - /* 编程结束 */ + /* 缂栫▼缁撴潫 */ case CMD_IAP_END: { PRINT("IAP_END \r\n"); - /* 关闭当前所有使用中断,或者方便一点直接全部关闭 */ + /* 鍏抽棴褰撳墠鎵鏈変娇鐢ㄤ腑鏂紝鎴栬呮柟渚夸竴鐐圭洿鎺ュ叏閮ㄥ叧闂 */ DisableAllIRQ(); - /* 修改DataFlash,切换至ImageA */ + /* 淇敼DataFlash锛屽垏鎹㈣嚦ImageA */ SwitchImageFlag(IMAGE_A_FLAG); - /* 等待打印完成 ,跳转ImageB*/ + /* 绛夊緟鎵撳嵃瀹屾垚 锛岃烦杞琁mageB*/ mDelaymS(10); jumpApp(); - /* 不会执行到这 */ + /* 涓嶄細鎵ц鍒拌繖 */ SYS_ResetExecute(); break; @@ -639,9 +639,9 @@ void Rec_OTA_IAP_DataDeal(void) send_buf[7] = CHIP_ID&0xFF; send_buf[8] = (CHIP_ID>>8)&0xFF; - /* 有需要再增加 */ + /* 鏈夐渶瑕佸啀澧炲姞 */ - /* 发送信息 */ + /* 鍙戦佷俊鎭 */ OTA_IAP_SendData(send_buf, 20); break; @@ -658,9 +658,9 @@ void Rec_OTA_IAP_DataDeal(void) /********************************************************************* * @fn OTA_IAPReadDataComplete * - * @brief OTA 数据读取完成处理 + * @brief OTA 鏁版嵁璇诲彇瀹屾垚澶勭悊 * - * @param index - OTA 通道序号 + * @param index - OTA 閫氶亾搴忓彿 * * @return none */ @@ -672,11 +672,11 @@ void OTA_IAPReadDataComplete(unsigned char index) /********************************************************************* * @fn OTA_IAPWriteData * - * @brief OTA 通道数据接收完成处理 + * @brief OTA 閫氶亾鏁版嵁鎺ユ敹瀹屾垚澶勭悊 * - * @param index - OTA 通道序号 - * @param p_data - 写入的数据 - * @param w_len - 写入的长度 + * @param index - OTA 閫氶亾搴忓彿 + * @param p_data - 鍐欏叆鐨勬暟鎹 + * @param w_len - 鍐欏叆鐨勯暱搴 * * @return none */ diff --git a/BLE/592OnlyUpdateApp_IAP_28K/APP/peripheral_main.c b/BLE/592OnlyUpdateApp_IAP_28K/APP/peripheral_main.c index b08a48d..e6859ea 100644 --- a/BLE/592OnlyUpdateApp_IAP_28K/APP/peripheral_main.c +++ b/BLE/592OnlyUpdateApp_IAP_28K/APP/peripheral_main.c @@ -3,7 +3,7 @@ * Author : WCH * Version : V1.1 * Date : 2019/11/05 - * Description : 升级从机应用主函数及任务系统初始化 + * Description : 鍗囩骇浠庢満搴旂敤涓诲嚱鏁板強浠诲姟绯荤粺鍒濆鍖 ********************************************************************************* * Copyright (c) 2021 Nanjing Qinheng Microelectronics Co., Ltd. * Attention: This software (modified or not) and binary are used for @@ -11,14 +11,14 @@ *******************************************************************************/ /******************************************************************************/ -/* 头文件包含 */ +/* 澶存枃浠跺寘鍚 */ #include "CONFIG.h" #include "HAL.h" #include "Peripheral.h" #include "OTA.h" #include "OTAprofile.h" -/* 记录当前的Image */ +/* 璁板綍褰撳墠鐨処mage */ unsigned char CurrImageFlag = 0xff; /********************************************************************* @@ -30,11 +30,11 @@ __attribute__((aligned(4))) uint32_t MEM_BUF[BLE_MEMHEAP_SIZE / 4]; const uint8_t MacAddr[6] = {0x84, 0xC2, 0xE4, 0x03, 0x02, 0x02}; #endif -/* 注意:关于程序升级后flash的操作必须先执行,不开启任何中断,防止操作中断和失败 */ +/* 娉ㄦ剰锛氬叧浜庣▼搴忓崌绾у悗flash鐨勬搷浣滃繀椤诲厛鎵ц锛屼笉寮鍚换浣曚腑鏂紝闃叉鎿嶄綔涓柇鍜屽け璐 */ /********************************************************************* * @fn ReadImageFlag * - * @brief 读取当前的程序的Image标志,DataFlash如果为空,就默认是ImageA,如果为ImageA,则跳转ImageA + * @brief 璇诲彇褰撳墠鐨勭▼搴忕殑Image鏍囧織锛孌ataFlash濡傛灉涓虹┖锛屽氨榛樿鏄疘mageA锛屽鏋滀负ImageA锛屽垯璺宠浆ImageA * * @return none */ @@ -45,7 +45,7 @@ void ReadImageFlag(void) EEPROM_READ(OTA_DATAFLASH_ADD, &p_image_flash, 4); CurrImageFlag = p_image_flash.ImageFlag; - /* 程序第一次执行,或者没有更新过,以后更新后在擦除DataFlash */ + /* 绋嬪簭绗竴娆℃墽琛岋紝鎴栬呮病鏈夋洿鏂拌繃锛屼互鍚庢洿鏂板悗鍦ㄦ摝闄ataFlash */ if((CurrImageFlag != IMAGE_B_FLAG) && (CurrImageFlag != IMAGE_A_FLAG) && (CurrImageFlag != IMAGE_OTA_FLAG)) { CurrImageFlag = IMAGE_A_FLAG; @@ -64,7 +64,7 @@ void ReadImageFlag(void) /********************************************************************* * @fn Main_Circulation * - * @brief 主循环 + * @brief 涓诲惊鐜 * * @return none */ @@ -81,7 +81,7 @@ void Main_Circulation() /********************************************************************* * @fn main * - * @brief 主函数 + * @brief 涓诲嚱鏁 * * @return none */ @@ -100,18 +100,18 @@ int main(void) // GPIOA_ModeCfg(bTXD1, GPIO_ModeOut_PP_5mA); // UART1_DefInit(); #endif - /* 配置串口0:先配置IO口模式,再配置串口 */ + /* 閰嶇疆涓插彛0锛氬厛閰嶇疆IO鍙fā寮忥紝鍐嶉厤缃覆鍙 */ GPIOPinRemap(ENABLE, RB_PIN_UART0); GPIOA_SetBits(GPIO_Pin_14); - GPIOA_ModeCfg(GPIO_Pin_15, GPIO_ModeIN_PU); // RXD-配置上拉输入 - GPIOA_ModeCfg(GPIO_Pin_14, GPIO_ModeOut_PP_5mA); // TXD-配置推挽输出,注意先让IO口输出高电平 + GPIOA_ModeCfg(GPIO_Pin_15, GPIO_ModeIN_PU); // RXD-閰嶇疆涓婃媺杈撳叆 + GPIOA_ModeCfg(GPIO_Pin_14, GPIO_ModeOut_PP_5mA); // TXD-閰嶇疆鎺ㄦ尳杈撳嚭锛屾敞鎰忓厛璁㊣O鍙h緭鍑洪珮鐢靛钩 UART0_DefInit(); PRINT("%s\n", VER_LIB); ReadImageFlag(); if((R8_RESET_STATUS & RB_RESET_FLAG) == RST_FLAG_SW) { - // 软复位不跳APP + // 杞浣嶄笉璺矨PP } else { diff --git a/BLE/592OnlyUpdateApp_IAP_28K/Profile/OTAprofile.c b/BLE/592OnlyUpdateApp_IAP_28K/Profile/OTAprofile.c index 52eefc9..65b892b 100644 --- a/BLE/592OnlyUpdateApp_IAP_28K/Profile/OTAprofile.c +++ b/BLE/592OnlyUpdateApp_IAP_28K/Profile/OTAprofile.c @@ -3,7 +3,7 @@ * Author : WCH * Version : V1.0 * Date : 2018/12/10 - * Description : OTA升级蓝牙通讯接口 + * Description : OTA鍗囩骇钃濈墮閫氳鎺ュ彛 ********************************************************************************* * Copyright (c) 2021 Nanjing Qinheng Microelectronics Co., Ltd. * Attention: This software (modified or not) and binary are used for @@ -137,11 +137,11 @@ gattServiceCBs_t OTAProfileCBs = { /********************************************************************* * @fn OTAProfile_AddService * - * @brief OTA Profile初始化 + * @brief OTA Profile鍒濆鍖 * - * @param services - 服务控制字 + * @param services - 鏈嶅姟鎺у埗瀛 * - * @return 初始化的状态 + * @return 鍒濆鍖栫殑鐘舵 */ bStatus_t OTAProfile_AddService(uint32_t services) { @@ -162,11 +162,11 @@ bStatus_t OTAProfile_AddService(uint32_t services) /********************************************************************* * @fn OTAProfile_RegisterAppCBs * - * @brief OTA Profile读写回调函数注册 + * @brief OTA Profile璇诲啓鍥炶皟鍑芥暟娉ㄥ唽 * - * @param appCallbacks - 函数结构体指针 + * @param appCallbacks - 鍑芥暟缁撴瀯浣撴寚閽 * - * @return 函数执行状态 + * @return 鍑芥暟鎵ц鐘舵 */ bStatus_t OTAProfile_RegisterAppCBs(OTAProfileCBs_t *appCallbacks) { @@ -308,19 +308,19 @@ static bStatus_t OTAProfile_WriteAttrCB(uint16_t connHandle, gattAttribute_t *pA /********************************************************************* * @fn OTAProfile_SendData * - * @brief OTA Profile通道发送数据 + * @brief OTA Profile閫氶亾鍙戦佹暟鎹 * - * @param paramID - OTA通道选择 - * @param p_data - 数据指针 - * @param send_len - 发送数据长度 + * @param paramID - OTA閫氶亾閫夋嫨 + * @param p_data - 鏁版嵁鎸囬拡 + * @param send_len - 鍙戦佹暟鎹暱搴 * - * @return 函数执行状态 + * @return 鍑芥暟鎵ц鐘舵 */ bStatus_t OTAProfile_SendData(unsigned char paramID, unsigned char *p_data, unsigned char send_len) { bStatus_t status = SUCCESS; - /* 数据长度超出范围 */ + /* 鏁版嵁闀垮害瓒呭嚭鑼冨洿 */ if(send_len > 20) return 0xfe; diff --git a/BLE/592OnlyUpdateApp_IAP_28K/Profile/include/OTAprofile.h b/BLE/592OnlyUpdateApp_IAP_28K/Profile/include/OTAprofile.h index f467d70..eb87ed5 100644 --- a/BLE/592OnlyUpdateApp_IAP_28K/Profile/include/OTAprofile.h +++ b/BLE/592OnlyUpdateApp_IAP_28K/Profile/include/OTAprofile.h @@ -25,13 +25,13 @@ extern "C" { * CONSTANTS */ -// OTA Profile通道Index定义 +// OTA Profile閫氶亾Index瀹氫箟 #define OTAPROFILE_CHAR 0 -// OTA 服务的UUID定义 +// OTA 鏈嶅姟鐨刄UID瀹氫箟 #define OTAPROFILE_SERV_UUID 0xFEE0 -// OTA 通讯通道UUID定义 +// OTA 閫氳閫氶亾UUID瀹氫箟 #define OTAPROFILE_CHAR_UUID 0xFEE1 // Simple Keys Profile Services bit fields @@ -49,7 +49,7 @@ extern "C" { * Profile Callbacks */ -// 读写操作函数回调 +// 璇诲啓鎿嶄綔鍑芥暟鍥炶皟 typedef void (*OTAProfileRead_t)(unsigned char paramID); typedef void (*OTAProfileWrite_t)(unsigned char paramID, unsigned char *p_data, unsigned char w_len); @@ -64,31 +64,31 @@ typedef struct */ /** - * @brief OTA Profile初始化 + * @brief OTA Profile鍒濆鍖 * - * @param services - 服务控制字 + * @param services - 鏈嶅姟鎺у埗瀛 * - * @return 初始化的状态 + * @return 鍒濆鍖栫殑鐘舵 */ bStatus_t OTAProfile_AddService(uint32_t services); /** - * @brief OTA Profile读写回调函数注册 + * @brief OTA Profile璇诲啓鍥炶皟鍑芥暟娉ㄥ唽 * - * @param appCallbacks - 函数结构体指针 + * @param appCallbacks - 鍑芥暟缁撴瀯浣撴寚閽 * - * @return 函数执行状态 + * @return 鍑芥暟鎵ц鐘舵 */ bStatus_t OTAProfile_RegisterAppCBs(OTAProfileCBs_t *appCallbacks); /** - * @brief OTA Profile通道发送数据 + * @brief OTA Profile閫氶亾鍙戦佹暟鎹 * - * @param paramID - OTA通道选择 - * @param p_data - 数据指针 - * @param send_len - 发送数据长度 + * @param paramID - OTA閫氶亾閫夋嫨 + * @param p_data - 鏁版嵁鎸囬拡 + * @param send_len - 鍙戦佹暟鎹暱搴 * - * @return 函数执行状态 + * @return 鍑芥暟鎵ц鐘舵 */ bStatus_t OTAProfile_SendData(unsigned char paramID, unsigned char *p_data, unsigned char send_len); diff --git a/BLE/592OnlyUpdateApp_JumpIAP_28K/APP/peripheral_main.c b/BLE/592OnlyUpdateApp_JumpIAP_28K/APP/peripheral_main.c index f61d6b9..3ecc070 100644 --- a/BLE/592OnlyUpdateApp_JumpIAP_28K/APP/peripheral_main.c +++ b/BLE/592OnlyUpdateApp_JumpIAP_28K/APP/peripheral_main.c @@ -3,7 +3,7 @@ * Author : WCH * Version : V1.1 * Date : 2020/08/06 - * Description : 跳转指令 + * Description : 璺宠浆鎸囦护 ********************************************************************************* * Copyright (c) 2021 Nanjing Qinheng Microelectronics Co., Ltd. * Attention: This software (modified or not) and binary are used for @@ -12,12 +12,12 @@ /******************************************************************************/ -// 如需修改跳转地址,直接修改启动文件 startup_CH59x.s 中跳转指令 “j” 之后的地址 +// 濡傞渶淇敼璺宠浆鍦板潃锛岀洿鎺ヤ慨鏀瑰惎鍔ㄦ枃浠 startup_CH59x.s 涓烦杞寚浠 鈥渏鈥 涔嬪悗鐨勫湴鍧 /********************************************************************* * @fn main * - * @brief 主函数 + * @brief 涓诲嚱鏁 * * @return none */ diff --git a/BLE/DLD110S_Peripheral_28K/APP/dbn_ble_srv.c b/BLE/DLD110S_Peripheral_28K/APP/dbn_ble_srv.c index 40f74c7..0ba2b37 100644 --- a/BLE/DLD110S_Peripheral_28K/APP/dbn_ble_srv.c +++ b/BLE/DLD110S_Peripheral_28K/APP/dbn_ble_srv.c @@ -11,7 +11,7 @@ #include "CH59x_common.h" -uint8_t g_flag_notify_temp = 0; //临时通知notify flag, 0 disable, 1 enable +uint8_t g_flag_notify_temp = 0; //涓存椂閫氱煡notify flag, 0 disable, 1 enable BLE_Notify_Buf g_notify_buftemp = {0,0, ""}; BLE_Notify_Buf g_ble_rcv_buf = {0,0, ""}; @@ -70,8 +70,8 @@ void clear_buf_dbn_ble_all(Buf_DBN_BLE * buf) } -// 0: 包检测异常 -//检测包是否完整,Magic Byte, Header Byte, CK Byte, 校验字节(异或校验,以及和校验) +// 0: 鍖呮娴嬪紓甯 +//妫娴嬪寘鏄惁瀹屾暣锛孧agic Byte, Header Byte, CK Byte, 鏍¢獙瀛楄妭锛堝紓鎴栨牎楠岋紝浠ュ強鍜屾牎楠岋級 uint8_t check_pkg(uint8_t * pkg, uint8_t len) { if(len < 6) //min length of ble pkg is 6 @@ -84,7 +84,7 @@ uint8_t check_pkg(uint8_t * pkg, uint8_t len) } uint8_t _dxor = 0; uint8_t _dsum = 0; - uint8_t _cklen = _len + 3; //不计算 校验字节 + uint8_t _cklen = _len + 3; //涓嶈绠 鏍¢獙瀛楄妭 uint8_t i = 0; for(i = 1; i < _cklen; i++) { @@ -200,7 +200,7 @@ uint8_t set_response_to_notify(Buf_DBN_BLE *response_ori, BLE_Notify_Buf * notif } if(response_ori->pkg_amount <= 1) { - //没有分包的情况 + //娌℃湁鍒嗗寘鐨勬儏鍐 notify_dst->buf[0] = response_ori->magic; if(response_ori->magic == MAGIC_BYTE_DBN_TRANSPARENT) { @@ -436,7 +436,7 @@ static void unpack_pkg_set_cjq_param(uint8_t *pkg, uint8_t len) tmp[i++] = g_loop_cng_unit.sensitvity; tmp[i++] = g_loop_cng_unit.delay_time; tmp[i++] = g_loop_cng_unit.output_mode; - tmp[i++] = g_loop_cng_unit.direction_mode; //默认 0 + tmp[i++] = g_loop_cng_unit.direction_mode; //榛樿 0 tmp[i++] = g_loop_cng_unit.loopFreq_Level; tmp[i++] = g_loop_cng_unit.loopSafe_Timeout; tmp[i++] = g_loop_cng_unit.exist_mode; @@ -470,7 +470,7 @@ void usart_packet_processing_acs_loop(uint8_t flag) g_freq_tmp = (float)(g_sys_freq )/((float)(_loop_capvd)/((float)(loop1_LPCNT))); // ?? ??????? - // why + 360? balance value ,补偿,经验值,可以根据示波器比较再进行调整 + // why + 360? balance value ,琛ュ伩锛岀粡楠屽硷紝鍙互鏍规嵁绀烘尝鍣ㄦ瘮杈冨啀杩涜璋冩暣 _current_freq = (uint32_t)(g_freq_tmp) + 360 ;// * 32); // if(flag) { @@ -483,7 +483,7 @@ void usart_packet_processing_acs_loop(uint8_t flag) // { // if(_current_freq - _last_freq > 30) // { - // //稳定显示,过滤低数值的变动 + // //绋冲畾鏄剧ず锛岃繃婊や綆鏁板肩殑鍙樺姩 // g_loop_acs_info.frequent = _current_freq; // _last_freq = _current_freq; // } @@ -492,7 +492,7 @@ void usart_packet_processing_acs_loop(uint8_t flag) // { // if(_last_freq - _current_freq > 30) // { - // // 稳定显示,过滤低数值的变动 + // // 绋冲畾鏄剧ず锛岃繃婊や綆鏁板肩殑鍙樺姩 // g_loop_acs_info.frequent = _current_freq; // _last_freq = _current_freq; // } @@ -531,7 +531,7 @@ void report_sens_acs(void) if(g_dbn_ble_state_acs_enable.enable) { - // 上报线圈动态数据 + // 涓婃姤绾垮湀鍔ㄦ佹暟鎹 // switch(g_dbn_ble_state_acs_enable.sens_type) @@ -539,7 +539,7 @@ void report_sens_acs(void) // //case SENS_LOOP_DYNAMIC: // default: // { - // 线圈动态信息 + // 绾垮湀鍔ㄦ佷俊鎭 if(g_loop_acs_info.flag_event) { // if(g_loop_acs_info.report_counter >= 3) @@ -637,7 +637,7 @@ void manage_dbn_ble_default(uint8_t *pkg, uint8_t len) // PRINT("\nGet_Cjq_param\n"); } break; // case CMD_DBN_LOOP_SAMPLE_PARAM:{ -// // 获取/设置 地感采样参数 +// // 鑾峰彇/璁剧疆 鍦版劅閲囨牱鍙傛暟 //// PRINT("SAMPLE_CNG: %02X\n", pkg[4]); // if(pkg[4] == 0){ // // get param @@ -664,13 +664,13 @@ void manage_dbn_ble_default(uint8_t *pkg, uint8_t len) // // set_response_buf(&g_buf_ble_response, MAGIC_BYTE_DBN_DEFAULT, _cmd, tmp_ble_buf, i); // -// //TODO: 不整个设备复位,复位除了蓝牙的部分,即蓝牙正常,其他部分重新初始化 +// //TODO: 涓嶆暣涓澶囧浣嶏紝澶嶄綅闄や簡钃濈墮鐨勯儴鍒嗭紝鍗宠摑鐗欐甯革紝鍏朵粬閮ㄥ垎閲嶆柊鍒濆鍖 // para_store_init(); // } // // } break; // case CMD_DBN_LOOP_BALANCE_PARAM: { -// // 获取/设置 漂移补偿参数 +// // 鑾峰彇/璁剧疆 婕傜Щ琛ュ伩鍙傛暟 //// PRINT("Balance_CNG: %02X\n", pkg[4]); // if(pkg[4] == 0){ // // get param @@ -698,14 +698,14 @@ void manage_dbn_ble_default(uint8_t *pkg, uint8_t len) // // set_response_buf(&g_buf_ble_response, MAGIC_BYTE_DBN_DEFAULT, _cmd, tmp_ble_buf, i); // -// //TODO: 不整个设备复位,复位除了蓝牙的部分,即蓝牙正常,其他部分重新初始化 +// //TODO: 涓嶆暣涓澶囧浣嶏紝澶嶄綅闄や簡钃濈墮鐨勯儴鍒嗭紝鍗宠摑鐗欐甯革紝鍏朵粬閮ㄥ垎閲嶆柊鍒濆鍖 // para_store_init(); // // } // // } break; // case CMD_DBN_LOOP_RELEASE_PLANB: { -// // 获取/设置 释放去抖动算法参数 +// // 鑾峰彇/璁剧疆 閲婃斁鍘绘姈鍔ㄧ畻娉曞弬鏁 //// PRINT("Release2_CNG: %02X\n", pkg[4]); // if(pkg[4] == 0){ // // get param @@ -733,7 +733,7 @@ void manage_dbn_ble_default(uint8_t *pkg, uint8_t len) // // set_response_buf(&g_buf_ble_response, MAGIC_BYTE_DBN_DEFAULT, _cmd, tmp_ble_buf, i); // -// //TODO: 不整个设备复位,复位除了蓝牙的部分,即蓝牙正常,其他部分重新初始化 +// //TODO: 涓嶆暣涓澶囧浣嶏紝澶嶄綅闄や簡钃濈墮鐨勯儴鍒嗭紝鍗宠摑鐗欐甯革紝鍏朵粬閮ㄥ垎閲嶆柊鍒濆鍖 // para_store_init(); // } // } break; @@ -773,23 +773,23 @@ void manage_dbn_ble_default(uint8_t *pkg, uint8_t len) write_cfg_to_store(Addr_Loop_Sens_List_Offset, &tmp_ble_buf[1], (i - 1)); DelayMs(10); - //TODO: 不整个设备复位,复位除了蓝牙的部分,即蓝牙正常,其他部分重新初始化 + //TODO: 涓嶆暣涓澶囧浣嶏紝澶嶄綅闄や簡钃濈墮鐨勯儴鍒嗭紝鍗宠摑鐗欐甯革紝鍏朵粬閮ㄥ垎閲嶆柊鍒濆鍖 para_store_init(); } } break; case CMD_DBN_SET_CJQ_FACTORY: { - // 出厂初始化 + // 鍑哄巶鍒濆鍖 tmp_ble_buf[0] = 0; set_response_buf(&g_buf_ble_response, MAGIC_BYTE_DBN_DEFAULT, _cmd, tmp_ble_buf, 1); set_factory_param(); factory_dev(); DelayMs(10); - //TODO: 不整个设备复位,复位除了蓝牙的部分,即蓝牙正常,其他部分重新初始化 + //TODO: 涓嶆暣涓澶囧浣嶏紝澶嶄綅闄や簡钃濈墮鐨勯儴鍒嗭紝鍗宠摑鐗欐甯革紝鍏朵粬閮ㄥ垎閲嶆柊鍒濆鍖 para_store_init(); } break; case CMD_SENS_ACS_ENABLE: { - // 线圈动态 + // 绾垮湀鍔ㄦ g_dbn_ble_state_acs_enable.enable = pkg[5]; if(g_dbn_ble_state_acs_enable.enable){ diff --git a/BLE/DLD110S_Peripheral_28K/APP/include/cmcng.h b/BLE/DLD110S_Peripheral_28K/APP/include/cmcng.h index 13fef33..4bf1c53 100644 --- a/BLE/DLD110S_Peripheral_28K/APP/include/cmcng.h +++ b/BLE/DLD110S_Peripheral_28K/APP/include/cmcng.h @@ -3,8 +3,8 @@ * * Created on: Aug 27, 2024 * Author: Thinkpad - * 2026-07-18: 算法移植 DLD154V4B, 移除 FltHistoryManager / SecondOrderState / - * StageRangeConfig 等旧算法结构 + * 2026-07-18: 绠楁硶绉绘 DLD154V4B, 绉婚櫎 FltHistoryManager / SecondOrderState / + * StageRangeConfig 绛夋棫绠楁硶缁撴瀯 */ #ifndef INCLUDE_CMCNG_H_ @@ -20,9 +20,9 @@ #define HARDWARE_VER_MAIN 4 #define HARDWARE_VER_SUB 1 -/* 功能模式位 (direction_mode 高4位, 协议保留; 新算法不再消费) */ -#define FUNCTION_A 0x01 // 二次判断 (已废弃) -#define FUNCTION_B 0x02 // 二次判断增强条件判断 (已废弃) +/* 鍔熻兘妯″紡浣 (direction_mode 楂4浣, 鍗忚淇濈暀; 鏂扮畻娉曚笉鍐嶆秷璐) */ +#define FUNCTION_A 0x01 // 浜屾鍒ゆ柇 (宸插簾寮) +#define FUNCTION_B 0x02 // 浜屾鍒ゆ柇澧炲己鏉′欢鍒ゆ柇 (宸插簾寮) #define FUNCTION_C 0x04 // #define FUNCTION_D 0x08 // @@ -38,9 +38,9 @@ extern uint8_t g_loop_power_up_state; extern uint8_t g_function_mode; -/* 新算法状态 (DLD154V4B 移植) */ -extern uint8_t g_loop_stable; // 稳定期结束标志 (0=收敛中, 1=稳定) -extern uint8_t g_env_activity; // 环境活跃度 (BLE condition 字段来源) +/* 鏂扮畻娉曠姸鎬 (DLD154V4B 绉绘) */ +extern uint8_t g_loop_stable; // 绋冲畾鏈熺粨鏉熸爣蹇 (0=鏀舵暃涓, 1=绋冲畾) +extern uint8_t g_env_activity; // 鐜娲昏穬搴 (BLE condition 瀛楁鏉ユ簮) uint32_t mstick(void); diff --git a/BLE/DLD110S_Peripheral_28K/APP/include/dbn_ble_srv.h b/BLE/DLD110S_Peripheral_28K/APP/include/dbn_ble_srv.h index e437c80..804edf5 100644 --- a/BLE/DLD110S_Peripheral_28K/APP/include/dbn_ble_srv.h +++ b/BLE/DLD110S_Peripheral_28K/APP/include/dbn_ble_srv.h @@ -19,7 +19,7 @@ * * Len = len(CMD) + len(Data) */ #define MAGIC_BYTE_DBN_DEFAULT 0x8F -#define MAGIC_BYTE_DBN_TRANSPARENT 0x7F // 用于 显示屏协议、地感协议、探头协议等 +#define MAGIC_BYTE_DBN_TRANSPARENT 0x7F // 鐢ㄤ簬 鏄剧ず灞忓崗璁佸湴鎰熷崗璁佹帰澶村崗璁瓑 #define CMD_DBN_GET_DEV_INFO 0x10 @@ -32,9 +32,9 @@ #define CMD_DBN_SET_NOTIFY 0x20 #define CMD_DBN_SET_NOTIFY_LOOP 0x21 -#define CMD_DBN_SET_SUB_CODE 0x22 //使能 子功能 -#define CMD_DBN_SET_CJQ_PARAM 0x23 // 设置 车检器参数 -#define CMD_DBN_GET_CJQ_PARAM 0x24 // 读取 车检器参数 +#define CMD_DBN_SET_SUB_CODE 0x22 //浣胯兘 瀛愬姛鑳 +#define CMD_DBN_SET_CJQ_PARAM 0x23 // 璁剧疆 杞︽鍣ㄥ弬鏁 +#define CMD_DBN_GET_CJQ_PARAM 0x24 // 璇诲彇 杞︽鍣ㄥ弬鏁 #define CMD_DBN_DEV_RESET 0x6D @@ -45,17 +45,17 @@ #define CMD_DBN_SET_CJQ_FACTORY 0x92 -#define CMD_SUB_SENS_REPORT 0xC0 //设备主动上报传感信息 +#define CMD_SUB_SENS_REPORT 0xC0 //璁惧涓诲姩涓婃姤浼犳劅淇℃伅 // #define CMD_REQUIRE_DEV_MAC_ADDR 0xC1 // #define CMD_CHANGE_DEV_ADDR_BY_MAC 0xC2 // #define CMD_SET_LED 0xC3 // #define CMD_SET_RELAY 0xC4 -#define CMD_SENS_ACS_ENABLE 0xC5 // 设备主动上报 使能 +#define CMD_SENS_ACS_ENABLE 0xC5 // 璁惧涓诲姩涓婃姤 浣胯兘 -#define MAX_BLE_DAT_RESPONSE_LEN (BLE_BUFF_MAX_LEN - 4) // 14 //返回 的所有字节数不能超过20个字节,除去 magic、header和ckb校验字节,剩下数据的字节数为14 +#define MAX_BLE_DAT_RESPONSE_LEN (BLE_BUFF_MAX_LEN - 4) // 14 //杩斿洖 鐨勬墍鏈夊瓧鑺傛暟涓嶈兘瓒呰繃20涓瓧鑺傦紝闄ゅ幓 magic銆乭eader鍜宑kb鏍¢獙瀛楄妭锛屽墿涓嬫暟鎹殑瀛楄妭鏁颁负14 #define MAX_BLE_Notify_Buf_LEN BLE_BUFF_MAX_LEN //24 #define MAX_BLE_BUF_LEN BLE_BUFF_MAX_LEN //128 #define MAX_BLE_TMP_BUF_LEN BLE_BUFF_MAX_LEN diff --git a/BLE/DLD110S_Peripheral_28K/APP/include/storage.h b/BLE/DLD110S_Peripheral_28K/APP/include/storage.h index 03c8b43..57f9ecf 100644 --- a/BLE/DLD110S_Peripheral_28K/APP/include/storage.h +++ b/BLE/DLD110S_Peripheral_28K/APP/include/storage.h @@ -39,20 +39,20 @@ typedef struct _Loop_Sample_CNG_ { uint8_t flag; - uint16_t max_amplitude; // 最大幅值 + uint16_t max_amplitude; // 鏈澶у箙鍊 }Loop_Sample_Cng; typedef struct _Loop_Balance_Ori_CNG_ { uint8_t flag; - uint16_t max_cnt ; // 最大补偿次数 -}Loop_Balance_Ori_Cng; // 漂移补偿 + uint16_t max_cnt ; // 鏈澶цˉ鍋挎鏁 +}Loop_Balance_Ori_Cng; // 婕傜Щ琛ュ伩 typedef struct _Loop_Release_Ori_PlanB_ { uint8_t flag_weight; - uint16_t max_amplitude; //最大幅值 - uint8_t timeout; // 单位:分钟 + uint16_t max_amplitude; //鏈澶у箙鍊 + uint8_t timeout; // 鍗曚綅锛氬垎閽 }Loop_Release_Ori_PlanB; typedef struct _Loop_Release_Change_Rate_ @@ -77,13 +77,13 @@ extern Loop_Balance_PlanB g_loop_balance_planB; typedef struct { - uint8_t sensitvity; // 高四位表示灵敏度的数量,低四位表示当前灵敏度的序号(从0开始) + uint8_t sensitvity; // 楂樺洓浣嶈〃绀虹伒鏁忓害鐨勬暟閲忥紝浣庡洓浣嶈〃绀哄綋鍓嶇伒鏁忓害鐨勫簭鍙凤紙浠0寮濮嬶級 uint8_t delay_time; uint8_t output_mode; - uint8_t direction_mode; // 方向判别模式,0 触发模式, 非0 表示方向判别模式 - uint8_t loopFreq_Level; // 高低频 - uint8_t loopSafe_Timeout; // 线圈安全模式, 0表示关闭,非0表示开启,以10秒为单位 - uint8_t exist_mode; // 0 永久存在,非0,表示有限存在的时间,单位为10秒 + uint8_t direction_mode; // 鏂瑰悜鍒ゅ埆妯″紡锛0 瑙﹀彂妯″紡锛 闈0 琛ㄧず鏂瑰悜鍒ゅ埆妯″紡 + uint8_t loopFreq_Level; // 楂樹綆棰 + uint8_t loopSafe_Timeout; // 绾垮湀瀹夊叏妯″紡锛 0琛ㄧず鍏抽棴锛岄潪0琛ㄧず寮鍚紝浠10绉掍负鍗曚綅 + uint8_t exist_mode; // 0 姘镐箙瀛樺湪锛岄潪0锛岃〃绀烘湁闄愬瓨鍦ㄧ殑鏃堕棿锛屽崟浣嶄负10绉 }Loop_Cng_Unit; extern Loop_Cng_Unit g_loop_cng_unit; @@ -105,7 +105,7 @@ extern Loop_Sens_List g_loop_sens_list; typedef struct _DBN_BLE_STATE_ { uint8_t flag; // if need to report - uint8_t enable; // 是否使能 + uint8_t enable; // 鏄惁浣胯兘 uint8_t send_flag; uint8_t obj_amount; uint8_t cmd; @@ -126,18 +126,18 @@ extern DBN_BLE_State g_dbn_ble_state_acs_enable; typedef enum { SENS_NONE = 0, - SENS_SUB_INFO = 1, // 传感器设备信息 - SENS_OBJ_DYNAMIC = 2, // 动态目标类型 - SENS_SOUTPUT_STATUS = 3, // 当前开关量输出的状态 - SENS_DETAIL_CNG = 4, // 详细配置 - SENS_LOOP_DYNAMIC = 5, // 线圈动态信息 + SENS_SUB_INFO = 1, // 浼犳劅鍣ㄨ澶囦俊鎭 + SENS_OBJ_DYNAMIC = 2, // 鍔ㄦ佺洰鏍囩被鍨 + SENS_SOUTPUT_STATUS = 3, // 褰撳墠寮鍏抽噺杈撳嚭鐨勭姸鎬 + SENS_DETAIL_CNG = 4, // 璇︾粏閰嶇疆 + SENS_LOOP_DYNAMIC = 5, // 绾垮湀鍔ㄦ佷俊鎭 SENS_OBJ_BackGround = 6, // SENS_OBJ_INSIDE = 7, // SENS_LOOP_TREND, SENS_OBJ_DYNAMIC_SIMPLE, SENS_OBJ_STATIC_XuJing, //10, 0x0A - SENS_DOBULE_LOOP_ESTIMATE //0x0B, 线圈环境评估 -} SUB_SENS_TYPE; // 传感数据类型 + SENS_DOBULE_LOOP_ESTIMATE //0x0B, 绾垮湀鐜璇勪及 +} SUB_SENS_TYPE; // 浼犳劅鏁版嵁绫诲瀷 @@ -174,7 +174,7 @@ extern Loop_ACS_Info g_loop_acs_info; #define HOLD_TIME 5*1200 -#define LC_HOLD_TIME 4*1200 //时间4分钟 +#define LC_HOLD_TIME 4*1200 //鏃堕棿4鍒嗛挓 #define IN_DELAY 10 #define OUT_DELAY 39 #define PLUSE_DELAY 10 diff --git a/BLE/DLD110S_Peripheral_28K/APP/peripheral.c b/BLE/DLD110S_Peripheral_28K/APP/peripheral.c index af1c87c..a2171be 100644 --- a/BLE/DLD110S_Peripheral_28K/APP/peripheral.c +++ b/BLE/DLD110S_Peripheral_28K/APP/peripheral.c @@ -3,8 +3,8 @@ * Author : WCH * Version : V1.0 * Date : 2018/12/10 - * Description : 外设从机多连接应用程序,初始化广播连接参数,然后广播,连接主机后, - * 请求更新连接参数,通过自定义服务传输数据 + * Description : 澶栬浠庢満澶氳繛鎺ュ簲鐢ㄧ▼搴忥紝鍒濆鍖栧箍鎾繛鎺ュ弬鏁帮紝鐒跺悗骞挎挱锛岃繛鎺ヤ富鏈哄悗锛 + * 璇锋眰鏇存柊杩炴帴鍙傛暟锛岄氳繃鑷畾涔夋湇鍔′紶杈撴暟鎹 ********************************************************************************* * Copyright (c) 2021 Nanjing Qinheng Microelectronics Co., Ltd. * Attention: This software (modified or not) and binary are used for @@ -742,19 +742,19 @@ static void simpleProfileChangeCB(uint8_t paramID, uint8_t *pValue, uint16_t len } } -/* OTA 升级标志 */ +/* OTA 鍗囩骇鏍囧織 */ #define IMAGE_OTA_FLAG 0x03 -/* 存放在DataFlash地址,不能占用蓝牙的位置 */ +/* 瀛樻斁鍦―ataFlash鍦板潃锛屼笉鑳藉崰鐢ㄨ摑鐗欑殑浣嶇疆 */ #define OTA_DATAFLASH_ADD 0x00077000 - FLASH_ROM_MAX_SIZE -/* flash的数据临时存储 */ +/* flash鐨勬暟鎹复鏃跺瓨鍌 */ __attribute__((aligned(8))) uint8_t block_buf[16]; /********************************************************************* * @fn Jump_OTA * - * @brief 跳转OTA升级 + * @brief 璺宠浆OTA鍗囩骇 * * @return none */ @@ -763,19 +763,19 @@ void Jump_OTA(void) uint16_t i; uint32_t ver_flag; - /* 读取第一块 */ + /* 璇诲彇绗竴鍧 */ EEPROM_READ(OTA_DATAFLASH_ADD, (uint32_t *)&block_buf[0], 4); - /* 擦除第一块 */ + /* 鎿﹂櫎绗竴鍧 */ EEPROM_ERASE(OTA_DATAFLASH_ADD, EEPROM_PAGE_SIZE); - /* 更新Image信息 */ + /* 鏇存柊Image淇℃伅 */ block_buf[0] = IMAGE_OTA_FLAG; - /* 编程DataFlash */ + /* 缂栫▼DataFlash */ EEPROM_WRITE(OTA_DATAFLASH_ADD, (uint32_t *)&block_buf[0], 4); - /* 软复位 */ + /* 杞浣 */ SYS_ResetExecute(); } diff --git a/BLE/DLD110S_Peripheral_28K/APP/peripheral_main.c b/BLE/DLD110S_Peripheral_28K/APP/peripheral_main.c index 15f492f..ec54652 100644 --- a/BLE/DLD110S_Peripheral_28K/APP/peripheral_main.c +++ b/BLE/DLD110S_Peripheral_28K/APP/peripheral_main.c @@ -3,15 +3,15 @@ * Author : WCH / wangfq * Version : V2.0 (algorithm ported from DLD154V4B) * Date : 2026/07/18 - * Description : DLD110SV4 单线圈蓝牙车检器 主函数 + * Description : DLD110SV4 鍗曠嚎鍦堣摑鐗欒溅妫鍣 涓诲嚱鏁 * - * 算法说明 (移植自 DLD154V4B TaskLoop V2.0, M1H 精简系): - * - 自适应测量窗: LPCNT = MEASUREMENT_BASE / Xn, 测量窗时长与线圈频率无关 - * - 一阶 IIR (79/256) + 斜率限幅 5% (拒绝 EMI 瞬态尖峰) - * - 稳定期 128 窗快速收敛 (绕过滤波, 小窗口 100) - * - 基线跟踪 窗口 500 + 冻结保护 (超时 + 稳定性双条件强制更新) - * - 进入确认 3 次; 离开: 平坦性三条件判定 (专利 CN200910309382) - * - 有限存在超时 / 安全复位: 全复位重建基线 + * 绠楁硶璇存槑 (绉绘鑷 DLD154V4B TaskLoop V2.0, M1H 绮剧畝绯): + * - 鑷傚簲娴嬮噺绐: LPCNT = MEASUREMENT_BASE / Xn, 娴嬮噺绐楁椂闀夸笌绾垮湀棰戠巼鏃犲叧 + * - 涓闃 IIR (79/256) + 鏂滅巼闄愬箙 5% (鎷掔粷 EMI 鐬佸皷宄) + * - 绋冲畾鏈 128 绐楀揩閫熸敹鏁 (缁曡繃婊ゆ尝, 灏忕獥鍙 100) + * - 鍩虹嚎璺熻釜 绐楀彛 500 + 鍐荤粨淇濇姢 (瓒呮椂 + 绋冲畾鎬у弻鏉′欢寮哄埗鏇存柊) + * - 杩涘叆纭 3 娆; 绂诲紑: 骞冲潶鎬т笁鏉′欢鍒ゅ畾 (涓撳埄 CN200910309382) + * - 鏈夐檺瀛樺湪瓒呮椂 / 瀹夊叏澶嶄綅: 鍏ㄥ浣嶉噸寤哄熀绾 ********************************************************************************* * Copyright (c) 2021 Nanjing Qinheng Microelectronics Co., Ltd. * Attention: This software (modified or not) and binary are used for @@ -19,7 +19,7 @@ *******************************************************************************/ /******************************************************************************/ -/* 头文件包含 */ +/* 澶存枃浠跺寘鍚 */ #include "CONFIG.h" #include "HAL.h" #include "gattprofile.h" @@ -30,7 +30,7 @@ #include "dbn_ble_srv.h" -uint8_t g_flag_bt_state = 0; // 0 蓝牙没有连接,1 有蓝牙连接 +uint8_t g_flag_bt_state = 0; // 0 钃濈墮娌℃湁杩炴帴锛1 鏈夎摑鐗欒繛鎺 uint8_t g_flag_output = 0; uint32_t g_xn_counter = 0; uint8_t g_function_mode = 0; @@ -51,27 +51,27 @@ uint8_t g_function_mode = 0; #define KEY_SA2 (GPIOA_ReadPortPin(GPIO_Pin_15)) const uint8_t MAX_Store_Size = 80; -uint8_t g_loop_power_up_state = 0; // 开机启动时线圈是否连接 +uint8_t g_loop_power_up_state = 0; // 寮鏈哄惎鍔ㄦ椂绾垮湀鏄惁杩炴帴 __IO uint32_t TimingDelayInc; /*=========================================================================== - * 算法参数 -- 移植自 DLD154V4B (M4 优化版), 适配 CH591R @60MHz + * 绠楁硶鍙傛暟 -- 绉绘鑷 DLD154V4B (M4 浼樺寲鐗), 閫傞厤 CH591R @60MHz * - * 测量窗: MEASUREMENT_BASE 个系统时钟 tick, 与线圈频率无关 - * 524288(2^19) / 60MHz ~= 8.74ms, 即 vd1_task 有效采样周期 ~8.74ms - * (DLD154V4B 为 131072 @120MHz + 10ms 任务轮询, 时间尺度基本一致) + * 娴嬮噺绐: MEASUREMENT_BASE 涓郴缁熸椂閽 tick, 涓庣嚎鍦堥鐜囨棤鍏 + * 524288(2^19) / 60MHz ~= 8.74ms, 鍗 vd1_task 鏈夋晥閲囨牱鍛ㄦ湡 ~8.74ms + * (DLD154V4B 涓 131072 @120MHz + 10ms 浠诲姟杞, 鏃堕棿灏哄害鍩烘湰涓鑷) *===========================================================================*/ -#define MEASUREMENT_BASE 524288L // 2^19, 自适应测量窗目标值 (Value ~= 524288) +#define MEASUREMENT_BASE 524288L // 2^19, 鑷傚簲娴嬮噺绐楃洰鏍囧 (Value ~= 524288) #define ALFA_CAP1 79 // IIR a=79/256~=0.31 (@8.74ms -> tau~=24ms) -#define MAX_SLOPE_RATE 5 // 斜率限幅: 单次最大变化 5% (拒绝 EMI 尖峰) -#define ENTRY_CONFIRM 3 // 进入确认: 连续 N 次低于阈值才判有车 -#define FREEZE_TIMEOUT 1000 // 基线冻结超时: ~8.7s, 持续偏高且稳定后强制更新 -#define FREEZE_STABILITY_RATE 2 // 冻结稳定性窗口: 参考值 +-2% -#define USE_FLATNESS_EXIT 1 // 1=平坦性三条件离开, 0=简单滞回防抖 -#define WINDOW_ORIGIN 500 // 基线跟踪窗口 (500 窗 ~= 4.4s) -#define STABLE_SAMPLES 128 // 稳定期样本数 (~1.1s) -#define VARIATION_EVENT_TH 40 // BLE variation 事件阈值 (幅值基准 2^19, 对应旧代码的 5) -#define ENV_ACT_TH 30 // 环境活跃度: CAPVD 相邻差绝对值阈值 (待现场验证) +#define MAX_SLOPE_RATE 5 // 鏂滅巼闄愬箙: 鍗曟鏈澶у彉鍖 5% (鎷掔粷 EMI 灏栧嘲) +#define ENTRY_CONFIRM 3 // 杩涘叆纭: 杩炵画 N 娆′綆浜庨槇鍊兼墠鍒ゆ湁杞 +#define FREEZE_TIMEOUT 1000 // 鍩虹嚎鍐荤粨瓒呮椂: ~8.7s, 鎸佺画鍋忛珮涓旂ǔ瀹氬悗寮哄埗鏇存柊 +#define FREEZE_STABILITY_RATE 2 // 鍐荤粨绋冲畾鎬х獥鍙: 鍙傝冨 +-2% +#define USE_FLATNESS_EXIT 1 // 1=骞冲潶鎬т笁鏉′欢绂诲紑, 0=绠鍗曟粸鍥為槻鎶 +#define WINDOW_ORIGIN 500 // 鍩虹嚎璺熻釜绐楀彛 (500 绐 ~= 4.4s) +#define STABLE_SAMPLES 128 // 绋冲畾鏈熸牱鏈暟 (~1.1s) +#define VARIATION_EVENT_TH 40 // BLE variation 浜嬩欢闃堝 (骞呭煎熀鍑 2^19, 瀵瑰簲鏃т唬鐮佺殑 5) +#define ENV_ACT_TH 30 // 鐜娲昏穬搴: CAPVD 鐩搁偦宸粷瀵瑰奸槇鍊 (寰呯幇鍦洪獙璇) uint32_t mstick(void){ return TimingDelayInc; @@ -93,7 +93,7 @@ const uint8_t MacAddr[6] = {0x84, 0xC2, 0xE4, 0x03, 0x02, 0x02}; uint8_t MACAddr[6] = {0x84, 0xC2, 0xE4, 0x03, 0x02, 0x02}; #endif -uint8_t g_dev_number[6] = ""; // 设备编号 产品编号 +uint8_t g_dev_number[6] = ""; // 璁惧缂栧彿 浜у搧缂栧彿 char g_flag_debug = 1; @@ -109,27 +109,27 @@ uint8_t TM1cnt = 0; uint16_t g_hold_time = 0; /*=========================================================================== - * 捕获 & 测量 + * 鎹曡幏 & 娴嬮噺 *===========================================================================*/ -uint16_t loop1_Xn; // 相邻下降沿周期 (TMR0 直接给出) -uint32_t loop1_dlt_ORG; // 当前灵敏度阈值 -uint32_t loop1_Origin; // 基线 (无车参考值) -uint16_t loop1_LPCNT; // 每个测量窗累加的 Xn 个数 -uint16_t loop1_CapCnt; // 当前窗口已累加次数 -uint32_t loop1_CapSum; // 当前窗口累加和 -uint32_t loop1_CAPVD; // IIR 滤波后的测量值 -uint32_t loop1_Value; // 一个测量窗的原始 Sigma-Xn -uint32_t loop1_ORG_SUM; // 基线跟踪累加和 -uint16_t loop1_ORG_CNT; // 基线跟踪计数 +uint16_t loop1_Xn; // 鐩搁偦涓嬮檷娌垮懆鏈 (TMR0 鐩存帴缁欏嚭) +uint32_t loop1_dlt_ORG; // 褰撳墠鐏垫晱搴﹂槇鍊 +uint32_t loop1_Origin; // 鍩虹嚎 (鏃犺溅鍙傝冨) +uint16_t loop1_LPCNT; // 姣忎釜娴嬮噺绐楃疮鍔犵殑 Xn 涓暟 +uint16_t loop1_CapCnt; // 褰撳墠绐楀彛宸茬疮鍔犳鏁 +uint32_t loop1_CapSum; // 褰撳墠绐楀彛绱姞鍜 +uint32_t loop1_CAPVD; // IIR 婊ゆ尝鍚庣殑娴嬮噺鍊 +uint32_t loop1_Value; // 涓涓祴閲忕獥鐨勫師濮 Sigma-Xn +uint32_t loop1_ORG_SUM; // 鍩虹嚎璺熻釜绱姞鍜 +uint16_t loop1_ORG_CNT; // 鍩虹嚎璺熻釜璁℃暟 /*=========================================================================== - * 计数器 + * 璁℃暟鍣 *===========================================================================*/ uint8_t loop1_INCNT; uint8_t loop1_OUTCNT; /*=========================================================================== - * 标志位 + * 鏍囧織浣 *===========================================================================*/ uint8_t loop1_INI_LOOP; uint8_t loop1_CAP_OK; @@ -144,48 +144,48 @@ uint8_t loop1_FLAG_PLUSE; uint8_t loop1_FLAG_PLUSE_IN_F = 0; uint8_t loop1_FLAG_PLUSE_IN = 0; uint8_t loop1_FLAG_CUT; -uint8_t loop1_FLAG_HOLD_TIMEOUT; // 有限存在超时 +uint8_t loop1_FLAG_HOLD_TIMEOUT; // 鏈夐檺瀛樺湪瓒呮椂 /*=========================================================================== - * 安全复位 + * 瀹夊叏澶嶄綅 *===========================================================================*/ uint8_t loop1_LC_HOLD = 0; uint8_t loop1_LC_Reset = 0; uint32_t LC_Hold_CNT = 0; /*=========================================================================== - * 新算法状态 (DLD154V4B 移植) + * 鏂扮畻娉曠姸鎬 (DLD154V4B 绉绘) *===========================================================================*/ -uint8_t g_loop_stable = 0; // 线圈数值已稳定 (0=稳定期中, 1=稳定) -uint16_t loop1_stable_cnt = 0; // 稳定期样本计数 -uint8_t loop1_entry_cnt = 0; // 进入确认计数 -uint8_t loop1_cnt_release = 0; // 简单离开防抖计数 (USE_FLATNESS_EXIT=0) -uint16_t loop1_freeze_cnt = 0; // 基线冻结持续计数 -uint32_t loop1_freeze_ref = 0; // 冻结稳定性参考值 +uint8_t g_loop_stable = 0; // 绾垮湀鏁板煎凡绋冲畾 (0=绋冲畾鏈熶腑, 1=绋冲畾) +uint16_t loop1_stable_cnt = 0; // 绋冲畾鏈熸牱鏈鏁 +uint8_t loop1_entry_cnt = 0; // 杩涘叆纭璁℃暟 +uint8_t loop1_cnt_release = 0; // 绠鍗曠寮闃叉姈璁℃暟 (USE_FLATNESS_EXIT=0) +uint16_t loop1_freeze_cnt = 0; // 鍩虹嚎鍐荤粨鎸佺画璁℃暟 +uint32_t loop1_freeze_ref = 0; // 鍐荤粨绋冲畾鎬у弬鑰冨 #if USE_FLATNESS_EXIT -uint8_t g_exit_state = 0; // 0=追踪坡面, 1=等待平坦 -uint16_t g_max_slope = 0; // 第一上升坡面最大 |f'| -uint16_t g_max_slope_rate = 0; // 第一上升坡面最大 |f''| -uint16_t g_delta2 = 0; // 一阶平坦阈值 -uint16_t g_delta3 = 0; // 二阶平坦阈值 -int32_t g_prev_capvd = 0; // 上一帧 CAPVD (差分用) -int32_t g_prev_first_deriv = 0; // 上一帧一阶导数 -uint8_t g_slope_flat_cnt = 0; // 斜率趋零连续计数 -uint8_t g_flat_ok_cnt = 0; // 平坦条件满足连续计数 +uint8_t g_exit_state = 0; // 0=杩借釜鍧¢潰, 1=绛夊緟骞冲潶 +uint16_t g_max_slope = 0; // 绗竴涓婂崌鍧¢潰鏈澶 |f'| +uint16_t g_max_slope_rate = 0; // 绗竴涓婂崌鍧¢潰鏈澶 |f''| +uint16_t g_delta2 = 0; // 涓闃跺钩鍧﹂槇鍊 +uint16_t g_delta3 = 0; // 浜岄樁骞冲潶闃堝 +int32_t g_prev_capvd = 0; // 涓婁竴甯 CAPVD (宸垎鐢) +int32_t g_prev_first_deriv = 0; // 涓婁竴甯т竴闃跺鏁 +uint8_t g_slope_flat_cnt = 0; // 鏂滅巼瓒嬮浂杩炵画璁℃暟 +uint8_t g_flat_ok_cnt = 0; // 骞冲潶鏉′欢婊¤冻杩炵画璁℃暟 #endif -/* 环境活跃度 (供 BLE condition 字段上报, 替代旧 flt_mgr.cnt_not_idle) */ +/* 鐜娲昏穬搴 (渚 BLE condition 瀛楁涓婃姤, 鏇夸唬鏃 flt_mgr.cnt_not_idle) */ uint8_t g_env_activity = 0; uint32_t g_env_prev_capvd = 0; /*=========================================================================== - * 出厂灵敏度默认表 (写入 g_loop_sens_list, 运行时以 g_loop_sens_list 为准) - * 进入阈值 = Origin * sens_in / 65536; 离开阈值 = Origin * sens_out / 65536 + * 鍑哄巶鐏垫晱搴﹂粯璁よ〃 (鍐欏叆 g_loop_sens_list, 杩愯鏃朵互 g_loop_sens_list 涓哄噯) + * 杩涘叆闃堝 = Origin * sens_in / 65536; 绂诲紑闃堝 = Origin * sens_out / 65536 *===========================================================================*/ const uint16_t SensTable[MAX_LOOP_SENS_AMOUNT] = { 108, 54, 28}; const uint16_t SensTable1[MAX_LOOP_SENS_AMOUNT] = {81, 32, 16}; -uint16_t g_loop_out_delay = 10; // 离开延时, 50ms 为单位, 由 delay_time 配置 +uint16_t g_loop_out_delay = 10; // 绂诲紑寤舵椂, 50ms 涓哄崟浣, 鐢 delay_time 閰嶇疆 DBN_BLE_State g_dbn_ble_state_acs_enable = {0}; Loop_ACS_Info g_loop_acs_info = {0,}; @@ -193,7 +193,7 @@ Loop_ACS_Info g_loop_acs_info = {0,}; float g_freq_tmp = 0.0; -/* 用于APP判断文件有效性 */ +/* 鐢ㄤ簬APP鍒ゆ柇鏂囦欢鏈夋晥鎬 */ const uint32_t Address = 0xFFFFFFFF; __attribute__((aligned(4))) uint32_t Image_Flag __attribute__((section(".ImageFlag"))) = (uint32_t)&Address; @@ -263,7 +263,7 @@ void poll_sens_key(void) static uint8_t _last_sens = 3; #if DEBUG - g_freq_sens = 2; // 默认最高灵敏度 + g_freq_sens = 2; // 榛樿鏈楂樼伒鏁忓害 #else if(KEY_SA1){ if(KEY_SA2){ @@ -285,7 +285,7 @@ void poll_sens_key(void) } if(_last_sens != g_freq_sens){ - /* 灵敏度阈值每周期由 g_loop_sens_list 实时计算, 无需重载 */ + /* 鐏垫晱搴﹂槇鍊兼瘡鍛ㄦ湡鐢 g_loop_sens_list 瀹炴椂璁$畻, 鏃犻渶閲嶈浇 */ _last_sens = g_freq_sens; } @@ -309,7 +309,7 @@ void para_store_init(void) poll_sens_key(); - g_loop_out_delay = g_loop_cng_unit.delay_time * 2; // 定时器以 50ms 为单位, 延时以100ms为单位 + g_loop_out_delay = g_loop_cng_unit.delay_time * 2; // 瀹氭椂鍣ㄤ互 50ms 涓哄崟浣, 寤舵椂浠100ms涓哄崟浣 g_hold_time = g_loop_cng_unit.exist_mode * 30 * 20; //50ms/per, 30s g_safe_max_cnt = g_loop_cng_unit.loopSafe_Timeout * 10 * (1000 / 50); g_freq_level = g_loop_cng_unit.loopFreq_Level - 1; @@ -322,23 +322,23 @@ void para_store_init(void) switch(g_freq_level) { case 0: { - // 高频 + // 楂橀 FLEVEL_H_LOW; FLEVEL_L_LOW; } break; case 1: { - // 中高 + // 涓珮 FLEVEL_H_LOW; FLEVEL_L_HIGH; } break; case 2: { - // 中低 + // 涓綆 FLEVEL_H_HIGH; FLEVEL_L_LOW; } break; case 3: { - // 低频 + // 浣庨 FLEVEL_H_HIGH; FLEVEL_L_HIGH; } break; default:{ - // 默认低频 + // 榛樿浣庨 g_freq_level = 3; FLEVEL_H_HIGH; FLEVEL_L_HIGH; } break; @@ -360,7 +360,7 @@ void para_store_init(void) void tm_init(void){ - // Cap 捕获 + // Cap 鎹曡幏 GPIOA_ResetBits(GPIO_Pin_9); GPIOA_ModeCfg(GPIO_Pin_9, GPIO_ModeIN_Floating); @@ -372,29 +372,29 @@ void tm_init(void){ // TMR1 - TMR1_TimerInit(FREQ_SYS / 200); // 设置定时时间 5ms - TMR1_ITCfg(ENABLE, TMR0_3_IT_CYC_END); // 开启中断 + TMR1_TimerInit(FREQ_SYS / 200); // 璁剧疆瀹氭椂鏃堕棿 5ms + TMR1_ITCfg(ENABLE, TMR0_3_IT_CYC_END); // 寮鍚腑鏂 PFIC_EnableIRQ(TMR1_IRQn); } void gpio_uart_init(void) { - /* 配置串口0:先配置IO口模式,再配置串口 */ + /* 閰嶇疆涓插彛0锛氬厛閰嶇疆IO鍙fā寮忥紝鍐嶉厤缃覆鍙 */ #ifdef DEBUG GPIOPinRemap(ENABLE, RB_PIN_UART0); GPIOA_SetBits(GPIO_Pin_14); - GPIOA_ModeCfg(GPIO_Pin_14, GPIO_ModeOut_PP_5mA); // TXD-配置推挽输出,注意先让IO口输出高电平 + GPIOA_ModeCfg(GPIO_Pin_14, GPIO_ModeOut_PP_5mA); // TXD-閰嶇疆鎺ㄦ尳杈撳嚭锛屾敞鎰忓厛璁㊣O鍙h緭鍑洪珮鐢靛钩 UART0_BaudRateCfg(230400); //115200 - R8_UART0_FCR = (2 << 6) | RB_FCR_TX_FIFO_CLR | RB_FCR_RX_FIFO_CLR | RB_FCR_FIFO_EN; // FIFO打开,触发点4字节 + R8_UART0_FCR = (2 << 6) | RB_FCR_TX_FIFO_CLR | RB_FCR_RX_FIFO_CLR | RB_FCR_FIFO_EN; // FIFO鎵撳紑锛岃Е鍙戠偣4瀛楄妭 R8_UART0_LCR = RB_LCR_WORD_SZ; R8_UART0_IER = RB_IER_TXD_EN; R8_UART0_DIV = 1; - GPIOA_ModeCfg(GPIO_Pin_15, GPIO_ModeIN_PU); // 拨动开关,调节灵敏度 + GPIOA_ModeCfg(GPIO_Pin_15, GPIO_ModeIN_PU); // 鎷ㄥ姩寮鍏筹紝璋冭妭鐏垫晱搴 #else - GPIOA_ModeCfg(GPIO_Pin_15|GPIO_Pin_14, GPIO_ModeIN_PU); // 拨动开关,调节灵敏度 + GPIOA_ModeCfg(GPIO_Pin_15|GPIO_Pin_14, GPIO_ModeIN_PU); // 鎷ㄥ姩寮鍏筹紝璋冭妭鐏垫晱搴 #endif @@ -413,7 +413,7 @@ void gpio_uart_init(void) /*=========================================================================== - * 一阶 IIR 低通滤波器 (对齐 M1H 公式) + * 涓闃 IIR 浣庨氭护娉㈠櫒 (瀵归綈 M1H 鍏紡) * CAPVD_new = a * new_value + (1-a) * CAPVD_old, a = Flt_Reg/256 *===========================================================================*/ uint32_t get_flt_value(uint32_t new_value, uint32_t last_Value) { @@ -432,8 +432,8 @@ uint32_t get_flt_value(uint32_t new_value, uint32_t last_Value) { /*=========================================================================== - * 滑动平均基线更新 - * 注意: window 必须是 uint16_t (WINDOW_ORIGIN=500 > 255, uint8_t 会静默截断) + * 婊戝姩骞冲潎鍩虹嚎鏇存柊 + * 娉ㄦ剰: window 蹇呴』鏄 uint16_t (WINDOW_ORIGIN=500 > 255, uint8_t 浼氶潤榛樻埅鏂) *===========================================================================*/ void update_moving_average(uint32_t* p_sum, uint16_t* p_cnt, uint32_t* p_origin, uint32_t new_value, uint16_t window) { if (!p_sum || !p_cnt || !p_origin || window == 0) { @@ -452,8 +452,8 @@ void update_moving_average(uint32_t* p_sum, uint16_t* p_cnt, uint32_t* p_origin, /*=========================================================================== - * 初始化所有检测状态 (上电 / 有限存在超时 / 线圈重连 时调用) - * 注意: 不复位 g_loop_power_up_state / g_loop_cut_amount (BLE 上报用) + * 鍒濆鍖栨墍鏈夋娴嬬姸鎬 (涓婄數 / 鏈夐檺瀛樺湪瓒呮椂 / 绾垮湀閲嶈繛 鏃惰皟鐢) + * 娉ㄦ剰: 涓嶅浣 g_loop_power_up_state / g_loop_cut_amount (BLE 涓婃姤鐢) *===========================================================================*/ void INIT_VD(void) { @@ -493,7 +493,7 @@ void INIT_VD(void) loop1_LC_Reset = 0; LC_Hold_CNT = 0; - /* 新算法状态 */ + /* 鏂扮畻娉曠姸鎬 */ g_loop_stable = 0; loop1_stable_cnt = 0; loop1_entry_cnt = 0; @@ -519,7 +519,7 @@ void INIT_VD(void) /*=========================================================================== - * 车辆离开 / 释放 公共处理 + * 杞﹁締绂诲紑 / 閲婃斁 鍏叡澶勭悊 *===========================================================================*/ static void loop_release_common(void) { @@ -539,19 +539,19 @@ static void loop_release_common(void) /*=========================================================================== - * vd1_task -- 核心检测算法 (移植 DLD154V4B, 每次 CAP_OK 调用, ~8.74ms) + * vd1_task -- 鏍稿績妫娴嬬畻娉 (绉绘 DLD154V4B, 姣忔 CAP_OK 璋冪敤, ~8.74ms) * - * 流程: - * 1. IIR 滤波 + 斜率限幅 - * 2. 稳定期: 小窗口快速收敛基线 - * 3. 无车: 基线跟踪 (冻结保护) + 进入确认 - * 4. 有车: 平坦性三条件离开判定 (带滞回) + * 娴佺▼: + * 1. IIR 婊ゆ尝 + 鏂滅巼闄愬箙 + * 2. 绋冲畾鏈: 灏忕獥鍙e揩閫熸敹鏁涘熀绾 + * 3. 鏃犺溅: 鍩虹嚎璺熻釜 (鍐荤粨淇濇姢) + 杩涘叆纭 + * 4. 鏈夎溅: 骞冲潶鎬т笁鏉′欢绂诲紑鍒ゅ畾 (甯︽粸鍥) *===========================================================================*/ void vd1_task(void){ if (loop1_Origin == 0) return; - /*--- 1. IIR 滤波 + 斜率限幅 ---*/ + /*--- 1. IIR 婊ゆ尝 + 鏂滅巼闄愬箙 ---*/ if (loop1_CAPVD == 0) { loop1_CAPVD = loop1_Value; } else { @@ -565,7 +565,7 @@ void vd1_task(void){ loop1_CAPVD = get_flt_value(clamped_value, loop1_CAPVD); } - /*--- 2. 稳定期: 绕过 IIR/斜率限幅, 小窗口快速收敛 ---*/ + /*--- 2. 绋冲畾鏈: 缁曡繃 IIR/鏂滅巼闄愬箙, 灏忕獥鍙e揩閫熸敹鏁 ---*/ if (!g_loop_stable) { loop1_CAPVD = loop1_Value; update_moving_average(&loop1_ORG_SUM, &loop1_ORG_CNT, &loop1_Origin, loop1_CAPVD, 100); @@ -577,7 +577,7 @@ void vd1_task(void){ return; } - /*--- 3. BLE 上报状态刷新 (flag_change 置位期间冻结, 保持事件时刻的值) ---*/ + /*--- 3. BLE 涓婃姤鐘舵佸埛鏂 (flag_change 缃綅鏈熼棿鍐荤粨, 淇濇寔浜嬩欢鏃跺埢鐨勫) ---*/ if (g_loop_acs_info.flag_change == 0) { int32_t _var = (int32_t)loop1_Origin - (int32_t)loop1_CAPVD; g_loop_acs_info.loop_capvd = loop1_CAPVD; @@ -587,7 +587,7 @@ void vd1_task(void){ } } - /*--- 4. 环境活跃度 (BLE condition 字段, 0~15) ---*/ + /*--- 4. 鐜娲昏穬搴 (BLE condition 瀛楁, 0~15) ---*/ { int32_t d = (int32_t)loop1_CAPVD - (int32_t)g_env_prev_capvd; if (d < 0) d = -d; @@ -601,7 +601,7 @@ void vd1_task(void){ if (!loop1_VD_FLAG) { /*================================================================ - * 无车状态: 基线跟踪 (冻结保护) + 进入确认 + * 鏃犺溅鐘舵: 鍩虹嚎璺熻釜 (鍐荤粨淇濇姢) + 杩涘叆纭 *================================================================*/ loop1_dlt_ORG = ((uint32_t)loop1_Origin * g_loop_sens_list.sens[g_freq_sens].sens_in) >> 16; { @@ -610,7 +610,7 @@ void vd1_task(void){ loop1_freeze_cnt = 0; update_moving_average(&loop1_ORG_SUM, &loop1_ORG_CNT, &loop1_Origin, loop1_CAPVD, WINDOW_ORIGIN); } else { - /*--- CAPVD 异常偏高: 暂停跟踪, 冻结超时 + 稳定性双条件 ---*/ + /*--- CAPVD 寮傚父鍋忛珮: 鏆傚仠璺熻釜, 鍐荤粨瓒呮椂 + 绋冲畾鎬у弻鏉′欢 ---*/ if (loop1_freeze_cnt == 0) { loop1_freeze_ref = loop1_CAPVD; } else { @@ -623,7 +623,7 @@ void vd1_task(void){ } loop1_freeze_cnt++; if (loop1_freeze_cnt >= FREEZE_TIMEOUT) { - loop1_Origin = loop1_CAPVD; /* 确认稳定的新常态 */ + loop1_Origin = loop1_CAPVD; /* 纭绋冲畾鐨勬柊甯告 */ loop1_freeze_cnt = 0; loop1_freeze_ref = 0; } @@ -632,7 +632,7 @@ void vd1_task(void){ } } - /*--- 进入确认: 连续 ENTRY_CONFIRM 次低于阈值才判有车 ---*/ + /*--- 杩涘叆纭: 杩炵画 ENTRY_CONFIRM 娆′綆浜庨槇鍊兼墠鍒ゆ湁杞 ---*/ if (loop1_CAPVD < (loop1_Origin - loop1_dlt_ORG)) { loop1_entry_cnt++; if (loop1_entry_cnt >= ENTRY_CONFIRM) { @@ -643,11 +643,11 @@ void vd1_task(void){ loop1_VD_FLAG = 1; loop1_FLAG_IN = 1; - if (g_loop_cng_unit.exist_mode) { /* 有限存在 */ + if (g_loop_cng_unit.exist_mode) { /* 鏈夐檺瀛樺湪 */ loop1_VD_HOLD = 1; Hold_CNT = 0; } - if (g_loop_cng_unit.loopSafe_Timeout) { /* 线圈安全模式: 启动安全复位计时 */ + if (g_loop_cng_unit.loopSafe_Timeout) { /* 绾垮湀瀹夊叏妯″紡: 鍚姩瀹夊叏澶嶄綅璁℃椂 */ loop1_LC_HOLD = 1; LC_Hold_CNT = 0; } else { @@ -665,7 +665,7 @@ void vd1_task(void){ g_loop_acs_info.car_state = 1; #if USE_FLATNESS_EXIT - /* 重置平坦性状态 (专利 CN200910309382) */ + /* 閲嶇疆骞冲潶鎬х姸鎬 (涓撳埄 CN200910309382) */ g_exit_state = 0; g_max_slope = 0; g_max_slope_rate = 0; @@ -684,8 +684,8 @@ void vd1_task(void){ else { #if USE_FLATNESS_EXIT /*================================================================ - * 有车状态: 平坦性三条件判定离开 (专利 CN200910309382) - * 幅值阈值按新测量基准 2^19 缩放 (DLD154V4B: 100/5/2 @2^17) + * 鏈夎溅鐘舵: 骞冲潶鎬т笁鏉′欢鍒ゅ畾绂诲紑 (涓撳埄 CN200910309382) + * 骞呭奸槇鍊兼寜鏂版祴閲忓熀鍑 2^19 缂╂斁 (DLD154V4B: 100/5/2 @2^17) *================================================================*/ #define K1 8 #define K2 8 @@ -702,7 +702,7 @@ void vd1_task(void){ abs_sd = (second_deriv >= 0) ? second_deriv : -second_deriv; if (g_exit_state == 0) { - /*--- 阶段0: 追踪第一上升坡面, 自适应计算平坦阈值 ---*/ + /*--- 闃舵0: 杩借釜绗竴涓婂崌鍧¢潰, 鑷傚簲璁$畻骞冲潶闃堝 ---*/ if (abs_fd > (int32_t)g_max_slope) g_max_slope = (uint16_t)abs_fd; if (abs_sd > (int32_t)g_max_slope_rate) g_max_slope_rate = (uint16_t)abs_sd; if (abs_fd < SLOPE_FLAT_THRESH) { @@ -719,7 +719,7 @@ void vd1_task(void){ g_slope_flat_cnt = 0; } } else { - /*--- 阶段1: 幅值回归 + 一阶平坦 + 二阶平坦 三条件确认离开 ---*/ + /*--- 闃舵1: 骞呭煎洖褰 + 涓闃跺钩鍧 + 浜岄樁骞冲潶 涓夋潯浠剁‘璁ょ寮 ---*/ int32_t dev = (int32_t)loop1_CAPVD - (int32_t)loop1_Origin; int32_t cond1 = (dev >= 0) ? dev : -dev; loop1_dlt_ORG = ((uint32_t)loop1_Origin * g_loop_sens_list.sens[g_freq_sens].sens_out) >> 16; @@ -739,7 +739,7 @@ void vd1_task(void){ g_prev_first_deriv = first_deriv; #else /*================================================================ - * 有车状态: 简单滞回 + 防抖离开 + * 鏈夎溅鐘舵: 绠鍗曟粸鍥 + 闃叉姈绂诲紑 *================================================================*/ loop1_dlt_ORG = ((uint32_t)loop1_Origin * g_loop_sens_list.sens[g_freq_sens].sens_out) >> 16; @@ -758,33 +758,33 @@ void vd1_task(void){ /*=========================================================================== - * cjq_srv -- 车检器主循环服务 - * - 有限存在超时 / 线圈断开重连: 全复位重建基线 - * (线圈仍被占用时, 新基线落在占用值上, 继电器保持释放 -- 对齐 M1H 行为) - * - CAP_OK 到达时执行核心检测算法 + * cjq_srv -- 杞︽鍣ㄤ富寰幆鏈嶅姟 + * - 鏈夐檺瀛樺湪瓒呮椂 / 绾垮湀鏂紑閲嶈繛: 鍏ㄥ浣嶉噸寤哄熀绾 + * (绾垮湀浠嶈鍗犵敤鏃, 鏂板熀绾胯惤鍦ㄥ崰鐢ㄥ间笂, 缁х數鍣ㄤ繚鎸侀噴鏀 -- 瀵归綈 M1H 琛屼负) + * - CAP_OK 鍒拌揪鏃舵墽琛屾牳蹇冩娴嬬畻娉 *===========================================================================*/ void cjq_srv(void){ if(loop1_LOOP_OK){ if(loop1_FLAG_HOLD_TIMEOUT){ - /* 有限存在超时: 全复位, 重新经历稳定期重建基线 */ + /* 鏈夐檺瀛樺湪瓒呮椂: 鍏ㄥ浣, 閲嶆柊缁忓巻绋冲畾鏈熼噸寤哄熀绾 */ INIT_VD(); return; } if(loop1_FLAG_CUT){ - /* 线圈断开后重连: 全复位, 重新自适应测量窗并重建基线 */ + /* 绾垮湀鏂紑鍚庨噸杩: 鍏ㄥ浣, 閲嶆柊鑷傚簲娴嬮噺绐楀苟閲嶅缓鍩虹嚎 */ g_loop_cut_last = 0; INIT_VD(); return; } if(!loop1_LOOP_OK0){ - DelayMs(200); /* 线圈重新起振后等待 200ms 再消费数据 */ + DelayMs(200); /* 绾垮湀閲嶆柊璧锋尟鍚庣瓑寰 200ms 鍐嶆秷璐规暟鎹 */ loop1_LOOP_OK0 = 1; } if(loop1_CAP_OK){ loop1_CAP_OK = 0; if(!g_loop_power_up_state){ - g_loop_power_up_state = 1; // 表示连接了线圈 + g_loop_power_up_state = 1; // 琛ㄧず杩炴帴浜嗙嚎鍦 } vd1_task(); poll_sens_key(); @@ -799,7 +799,7 @@ void cjq_srv(void){ loop1_FLAG_PLUSE_IN_F = 0; loop1_FLAG_PLUSE_IN = 0; - // 线圈断开: 继电器释放, 车辆状态清零 + // 绾垮湀鏂紑: 缁х數鍣ㄩ噴鏀, 杞﹁締鐘舵佹竻闆 RLY1_OFF; RLY2_OFF; g_loop_acs_info.relay1_state = 0; g_loop_acs_info.relay2_state = 0; @@ -824,7 +824,7 @@ void cjq_srv(void){ /********************************************************************* * @fn Main_Circulation * - * @brief 主循环 + * @brief 涓诲惊鐜 * * @return none */ @@ -843,7 +843,7 @@ void Main_Circulation() cjq_srv(); if(g_flag_bt_state == 0){ - // 如果蓝牙断开,主动上报需要禁用 + // 濡傛灉钃濈墮鏂紑锛屼富鍔ㄤ笂鎶ラ渶瑕佺鐢 if(g_dbn_ble_state_acs_enable.enable){ g_dbn_ble_state_acs_enable.enable = 0; } @@ -867,7 +867,7 @@ void Main_Circulation() /********************************************************************* * @fn main * - * @brief 主函数 + * @brief 涓诲嚱鏁 * * @return none */ @@ -907,15 +907,15 @@ int main(void) /* @fn TMR0_IRQHandler * -* @brief TMR0 输入捕获中断 -- 线圈频率测量 -* FallEdge_To_FallEdge 模式, CAPGetData 直接给出相邻下降沿周期 Xn -* 累加 LPCNT 次 -> 一个测量窗 Value (~= MEASUREMENT_BASE) +* @brief TMR0 杈撳叆鎹曡幏涓柇 -- 绾垮湀棰戠巼娴嬮噺 +* FallEdge_To_FallEdge 妯″紡, CAPGetData 鐩存帴缁欏嚭鐩搁偦涓嬮檷娌垮懆鏈 Xn +* 绱姞 LPCNT 娆 -> 涓涓祴閲忕獥 Value (~= MEASUREMENT_BASE) * * @return none */ __INTERRUPT __HIGH_CODE -void TMR0_IRQHandler(void) // TMR0 捕获中断 +void TMR0_IRQHandler(void) // TMR0 鎹曡幏涓柇 { if(TMR0_GetITFlag(TMR0_3_IT_DATA_ACT)){ loop1_Xn = (uint16_t)TMR0_CAPGetData(); @@ -936,12 +936,12 @@ void TMR0_IRQHandler(void) // TMR0 loop1_CapCnt++; if(loop1_INI_LOOP){ - /*--- 初始化阶段 ---*/ + /*--- 鍒濆鍖栭樁娈 ---*/ if(loop1_LPCNT == 0){ - if(loop1_CapCnt > 200){ /* 上电/换频后等待振荡稳定 */ + if(loop1_CapCnt > 200){ /* 涓婄數/鎹㈤鍚庣瓑寰呮尟鑽$ǔ瀹 */ uint32_t lpcnt = (uint32_t)MEASUREMENT_BASE / loop1_Xn; if(lpcnt == 0 || lpcnt > 65535){ - lpcnt = 100; /* 异常 Xn 保护 */ + lpcnt = 100; /* 寮傚父 Xn 淇濇姢 */ } loop1_LPCNT = (uint16_t)lpcnt; @@ -953,7 +953,7 @@ void TMR0_IRQHandler(void) // TMR0 } } else{ - /* 第一个测量窗: 直接作为基线 Origin */ + /* 绗竴涓祴閲忕獥: 鐩存帴浣滀负鍩虹嚎 Origin */ loop1_CapSum += loop1_Xn; if(loop1_CapCnt >= loop1_LPCNT){ loop1_CAPVD = loop1_CapSum; @@ -969,7 +969,7 @@ void TMR0_IRQHandler(void) // TMR0 } }// end if loop1_INI_LOOP else { - /*--- 正常运行: 累加到测量窗 ---*/ + /*--- 姝e父杩愯: 绱姞鍒版祴閲忕獥 ---*/ loop1_CapSum += loop1_Xn; if(loop1_CapCnt >= loop1_LPCNT){ @@ -990,7 +990,7 @@ void TMR0_IRQHandler(void) // TMR0 /********************************************************************* * @fn TMR1_IRQHandler * - * @brief TMR1 定时中断 5ms/per -- 时序状态机 / 继电器输出 / LED + * @brief TMR1 瀹氭椂涓柇 5ms/per -- 鏃跺簭鐘舵佹満 / 缁х數鍣ㄨ緭鍑 / LED * * @return none */ @@ -1020,7 +1020,7 @@ void TMR1_IRQHandler(void) TimingDelayInc++; u32CountWdt++; - /*--- LED: 稳定期 200ms 快闪; 线圈断开 150ms 快闪 ---*/ + /*--- LED: 绋冲畾鏈 200ms 蹇棯; 绾垮湀鏂紑 150ms 蹇棯 ---*/ if(loop1_FLAG_CUT == 0) { if(!g_loop_stable) @@ -1047,12 +1047,12 @@ void TMR1_IRQHandler(void) if(TM1cnt >= 10) //about=50ms { TM1cnt = 0; - if(loop1_FLAG_IN) // 线圈1 从无车到有车 + if(loop1_FLAG_IN) // 绾垮湀1 浠庢棤杞﹀埌鏈夎溅 { loop1_FLAG_OUT = 0; loop1_OUTCNT = 0; loop1_FLAG_IN = 0; - if(g_loop_cng_unit.output_mode == 1) // 进入脉冲 + if(g_loop_cng_unit.output_mode == 1) // 杩涘叆鑴夊啿 { loop1_FLAG_PLUSE_IN_F = 1; } @@ -1082,7 +1082,7 @@ void TMR1_IRQHandler(void) } - if(loop1_FLAG_OUT) // 从有车到无车的标志 + if(loop1_FLAG_OUT) // 浠庢湁杞﹀埌鏃犺溅鐨勬爣蹇 { loop1_OUTCNT++; if(loop1_OUTCNT > g_loop_out_delay) @@ -1108,13 +1108,13 @@ void TMR1_IRQHandler(void) if(loop1_VD_HOLD) { Hold_CNT++; - if(Hold_CNT > g_hold_time) // 超过有限存在时间 + if(Hold_CNT > g_hold_time) // 瓒呰繃鏈夐檺瀛樺湪鏃堕棿 { loop1_VD_HOLD = 0; Hold_CNT = 0; if(loop1_VD_FLAG) { - /* 有限存在超时: 释放继电器, 主循环全复位重建基线 */ + /* 鏈夐檺瀛樺湪瓒呮椂: 閲婃斁缁х數鍣, 涓诲惊鐜叏澶嶄綅閲嶅缓鍩虹嚎 */ loop1_FLAG_HOLD_TIMEOUT = 1; RLY1_OFF; RLY2_OFF; g_loop_acs_info.relay1_state = 0; @@ -1128,7 +1128,7 @@ void TMR1_IRQHandler(void) LC_Hold_CNT++; if(LC_Hold_CNT > g_safe_max_cnt) { - /* 安全复位: 重新初始化测量, 重建基线 (对齐 M1H) */ + /* 瀹夊叏澶嶄綅: 閲嶆柊鍒濆鍖栨祴閲, 閲嶅缓鍩虹嚎 (瀵归綈 M1H) */ loop1_LC_Reset = 1; loop1_INI_LOOP = 1; loop1_LOOP_OK0 = 0; @@ -1148,7 +1148,7 @@ void TMR1_IRQHandler(void) } } - /*--- 线圈载波检测 & 继电器输出刷新 (每 5ms) ---*/ + /*--- 绾垮湀杞芥尝妫娴 & 缁х數鍣ㄨ緭鍑哄埛鏂 (姣 5ms) ---*/ if(loop1_RF_FLAG) { loop1_LOOP_OK = 1; @@ -1157,10 +1157,10 @@ void TMR1_IRQHandler(void) if(loop1_LC_Reset == 0) { switch(g_loop_cng_unit.output_mode) - { // 输出方式 - case 0: // 存在输出 + { // 杈撳嚭鏂瑰紡 + case 0: // 瀛樺湪杈撳嚭 { - if(loop1_VD_FLAG | loop1_FLAG_OUT)// 输出存在信号 + if(loop1_VD_FLAG | loop1_FLAG_OUT)// 杈撳嚭瀛樺湪淇″彿 { RLY1_ON; g_loop_acs_info.relay1_state = 1; @@ -1175,9 +1175,9 @@ void TMR1_IRQHandler(void) g_loop_acs_info.relay2_state = 0; } } break; - case 1: // 进入脉冲 + case 1: // 杩涘叆鑴夊啿 { - if(loop1_VD_FLAG) // 继电器2存在信号 + if(loop1_VD_FLAG) // 缁х數鍣2瀛樺湪淇″彿 { RLY2_ON; g_loop_acs_info.relay2_state = 1; @@ -1199,9 +1199,9 @@ void TMR1_IRQHandler(void) g_loop_acs_info.relay1_state = 0; } } break; - case 2: // 离开脉冲 + case 2: // 绂诲紑鑴夊啿 { - if(loop1_VD_FLAG) // 继电器2存在信号 + if(loop1_VD_FLAG) // 缁х數鍣2瀛樺湪淇″彿 { RLY2_ON; g_loop_acs_info.relay2_state = 1; @@ -1212,7 +1212,7 @@ void TMR1_IRQHandler(void) g_loop_acs_info.relay2_state = 0; } - if(loop1_FLAG_PLUSE) // 输出离开脉冲 + if(loop1_FLAG_PLUSE) // 杈撳嚭绂诲紑鑴夊啿 { RLY1_ON; g_loop_acs_info.relay1_state = 1; @@ -1224,7 +1224,7 @@ void TMR1_IRQHandler(void) } } break; default: { - if(loop1_VD_FLAG) // 继电器2存在信号 + if(loop1_VD_FLAG) // 缁х數鍣2瀛樺湪淇″彿 { RLY2_ON; g_loop_acs_info.relay2_state = 1; @@ -1246,7 +1246,7 @@ void TMR1_IRQHandler(void) - TMR1_ClearITFlag(TMR0_3_IT_CYC_END); // 清除中断标志 + TMR1_ClearITFlag(TMR0_3_IT_CYC_END); // 娓呴櫎涓柇鏍囧織 } } diff --git a/BLE/DLD110S_Peripheral_28K/Profile/devinfoservice.c b/BLE/DLD110S_Peripheral_28K/Profile/devinfoservice.c index 314cba8..295fb3e 100644 --- a/BLE/DLD110S_Peripheral_28K/Profile/devinfoservice.c +++ b/BLE/DLD110S_Peripheral_28K/Profile/devinfoservice.c @@ -3,7 +3,7 @@ * Author : WCH * Version : V1.0 * Date : 2018/12/10 - * Description : 设备信息服务 + * Description : 璁惧淇℃伅鏈嶅姟 ********************************************************************************* * Copyright (c) 2021 Nanjing Qinheng Microelectronics Co., Ltd. * Attention: This software (modified or not) and binary are used for diff --git a/BLE/DLD110S_Peripheral_28K/Profile/gattprofile.c b/BLE/DLD110S_Peripheral_28K/Profile/gattprofile.c index 3839588..f8057b0 100644 --- a/BLE/DLD110S_Peripheral_28K/Profile/gattprofile.c +++ b/BLE/DLD110S_Peripheral_28K/Profile/gattprofile.c @@ -3,7 +3,7 @@ * Author : WCH * Version : V1.0 * Date : 2018/12/10 - * Description : 自定义包含五种不同属性的服务,包含可读、可写、通知、可读可写、安全可读 + * Description : 鑷畾涔夊寘鍚簲绉嶄笉鍚屽睘鎬х殑鏈嶅姟锛屽寘鍚彲璇汇佸彲鍐欍侀氱煡銆佸彲璇诲彲鍐欍佸畨鍏ㄥ彲璇 ********************************************************************************* * Copyright (c) 2021 Nanjing Qinheng Microelectronics Co., Ltd. * Attention: This software (modified or not) and binary are used for diff --git a/BLE/HAL/KEY.c b/BLE/HAL/KEY.c index f18b5d4..528c79b 100644 --- a/BLE/HAL/KEY.c +++ b/BLE/HAL/KEY.c @@ -11,14 +11,14 @@ *******************************************************************************/ /******************************************************************************/ -/* 头文件包含 */ +/* 澶存枃浠跺寘鍚 */ #include "HAL.h" /************************************************************************************************** * GLOBAL VARIABLES **************************************************************************************************/ -static uint8_t halKeySavedKeys; /* 保留按键最后的状态,用于查询是否有键值变化 */ +static uint8_t halKeySavedKeys; /* 淇濈暀鎸夐敭鏈鍚庣殑鐘舵侊紝鐢ㄤ簬鏌ヨ鏄惁鏈夐敭鍊煎彉鍖 */ /************************************************************************************************** * FUNCTIONS - Local @@ -76,19 +76,19 @@ uint8_t HalKeyRead(void) uint8_t keys = 0; if(HAL_PUSH_BUTTON1()) - { //读按键1 + { //璇绘寜閿1 keys |= HAL_KEY_SW_1; } if(HAL_PUSH_BUTTON2()) - { //读按键1 + { //璇绘寜閿1 keys |= HAL_KEY_SW_2; } if(HAL_PUSH_BUTTON3()) - { //读按键1 + { //璇绘寜閿1 keys |= HAL_KEY_SW_3; } if(HAL_PUSH_BUTTON4()) - { //读按键1 + { //璇绘寜閿1 keys |= HAL_KEY_SW_4; } return keys; diff --git a/BLE/HAL/LED.c b/BLE/HAL/LED.c index 826c4ff..0ae0740 100644 --- a/BLE/HAL/LED.c +++ b/BLE/HAL/LED.c @@ -11,7 +11,7 @@ *******************************************************************************/ /******************************************************************************/ -/* 头文件包含 */ +/* 澶存枃浠跺寘鍚 */ #include "HAL.h" /* LED control structure */ diff --git a/BLE/HAL/MCU.c b/BLE/HAL/MCU.c index bb29ade..104c455 100644 --- a/BLE/HAL/MCU.c +++ b/BLE/HAL/MCU.c @@ -3,7 +3,7 @@ * Author : WCH * Version : V1.2 * Date : 2022/01/18 - * Description : 硬件任务处理函数及BLE和硬件初始化 + * Description : 纭欢浠诲姟澶勭悊鍑芥暟鍙夿LE鍜岀‖浠跺垵濮嬪寲 ********************************************************************************* * Copyright (c) 2021 Nanjing Qinheng Microelectronics Co., Ltd. * Attention: This software (modified or not) and binary are used for @@ -11,7 +11,7 @@ *******************************************************************************/ /******************************************************************************/ -/* 头文件包含 */ +/* 澶存枃浠跺寘鍚 */ #include "HAL.h" tmosTaskID halTaskID; @@ -19,7 +19,7 @@ uint32_t g_LLE_IRQLibHandlerLocation; /******************************************************************************* * @fn Lib_Calibration_LSI * - * @brief 内部32k校准 + * @brief 鍐呴儴32k鏍″噯 * * @param None. * @@ -96,7 +96,7 @@ uint32_t Lib_Write_Flash(uint32_t addr, uint32_t num, uint32_t *pBuf) /******************************************************************************* * @fn CH59x_BLEInit * - * @brief BLE 库初始化 + * @brief BLE 搴撳垵濮嬪寲 * * @param None. * @@ -112,7 +112,7 @@ void CH59x_BLEInit(void) // while(1); } - SysTick_Config(SysTick_LOAD_RELOAD_Msk);// 配置SysTick并打开中断 + SysTick_Config(SysTick_LOAD_RELOAD_Msk);// 閰嶇疆SysTick骞舵墦寮涓柇 PFIC_DisableIRQ(SysTick_IRQn); g_LLE_IRQLibHandlerLocation = (uint32_t)LLE_IRQLibHandler; @@ -139,13 +139,13 @@ void CH59x_BLEInit(void) cfg.ConnectNumber = (PERIPHERAL_MAX_CONNECTION & 3) | (CENTRAL_MAX_CONNECTION << 2); cfg.srandCB = SYS_GetSysTickCnt; #if(defined TEM_SAMPLE) && (TEM_SAMPLE == TRUE) - cfg.tsCB = HAL_GetInterTempValue; // 根据温度变化校准RF和内部RC( 大于7摄氏度 ) + cfg.tsCB = HAL_GetInterTempValue; // 鏍规嵁娓╁害鍙樺寲鏍″噯RF鍜屽唴閮≧C( 澶т簬7鎽勬皬搴 ) #if(CLK_OSC32K) - cfg.rcCB = Lib_Calibration_LSI; // 内部32K时钟校准 + cfg.rcCB = Lib_Calibration_LSI; // 鍐呴儴32K鏃堕挓鏍″噯 #endif #endif #if(defined(HAL_SLEEP)) && (HAL_SLEEP == TRUE) - cfg.idleCB = CH59x_LowPower; // 启用睡眠 + cfg.idleCB = CH59x_LowPower; // 鍚敤鐫$湢 #endif #if(defined(BLE_MAC)) && (BLE_MAC == TRUE) for(i = 0; i < 6; i++) @@ -158,7 +158,7 @@ void CH59x_BLEInit(void) GetMACAddress(MacAddr); for(i = 0; i < 6; i++) { - cfg.MacAddr[i] = MacAddr[i]; // 使用芯片mac地址 + cfg.MacAddr[i] = MacAddr[i]; // 浣跨敤鑺墖mac鍦板潃 } } #endif @@ -177,7 +177,7 @@ void CH59x_BLEInit(void) /******************************************************************************* * @fn HAL_ProcessEvent * - * @brief 硬件层事务处理 + * @brief 纭欢灞備簨鍔″鐞 * * @param task_id - The TMOS assigned task ID. * @param events - events to process. This is a bit map and can @@ -190,7 +190,7 @@ tmosEvents HAL_ProcessEvent(tmosTaskID task_id, tmosEvents events) uint8_t *msgPtr; if(events & SYS_EVENT_MSG) - { // 处理HAL层消息,调用tmos_msg_receive读取消息,处理完成后删除消息。 + { // 澶勭悊HAL灞傛秷鎭紝璋冪敤tmos_msg_receive璇诲彇娑堟伅锛屽鐞嗗畬鎴愬悗鍒犻櫎娑堟伅銆 msgPtr = tmos_msg_receive(task_id); if(msgPtr) { @@ -217,14 +217,14 @@ tmosEvents HAL_ProcessEvent(tmosTaskID task_id, tmosEvents events) if(events & HAL_REG_INIT_EVENT) { uint8_t x32Kpw; -#if(defined BLE_CALIBRATION_ENABLE) && (BLE_CALIBRATION_ENABLE == TRUE) // 校准任务,单次校准耗时小于10ms - BLE_RegInit(); // 校准RF +#if(defined BLE_CALIBRATION_ENABLE) && (BLE_CALIBRATION_ENABLE == TRUE) // 鏍″噯浠诲姟锛屽崟娆℃牎鍑嗚楁椂灏忎簬10ms + BLE_RegInit(); // 鏍″噯RF #if(CLK_OSC32K) - Lib_Calibration_LSI(); // 校准内部RC + Lib_Calibration_LSI(); // 鏍″噯鍐呴儴RC #else x32Kpw = (R8_XT32K_TUNE & 0xfc) | 0x01; sys_safe_access_enable(); - R8_XT32K_TUNE = x32Kpw; // LSE驱动电流降低到额定电流 + R8_XT32K_TUNE = x32Kpw; // LSE椹卞姩鐢垫祦闄嶄綆鍒伴瀹氱數娴 sys_safe_access_disable(); #endif tmos_start_task(halTaskID, HAL_REG_INIT_EVENT, MS1_TO_SYSTEM_TIME(BLE_CALIBRATION_PERIOD)); @@ -243,7 +243,7 @@ tmosEvents HAL_ProcessEvent(tmosTaskID task_id, tmosEvents events) /******************************************************************************* * @fn HAL_Init * - * @brief 硬件初始化 + * @brief 纭欢鍒濆鍖 * * @param None. * @@ -263,17 +263,17 @@ void HAL_Init() HAL_KeyInit(); #endif #if(defined BLE_CALIBRATION_ENABLE) && (BLE_CALIBRATION_ENABLE == TRUE) - tmos_start_task(halTaskID, HAL_REG_INIT_EVENT, 800); // 添加校准任务,500ms启动,单次校准耗时小于10ms + tmos_start_task(halTaskID, HAL_REG_INIT_EVENT, 800); // 娣诲姞鏍″噯浠诲姟锛500ms鍚姩锛屽崟娆℃牎鍑嗚楁椂灏忎簬10ms #endif -// tmos_start_task( halTaskID, HAL_TEST_EVENT, 1600 ); // 添加一个测试任务 +// tmos_start_task( halTaskID, HAL_TEST_EVENT, 1600 ); // 娣诲姞涓涓祴璇曚换鍔 } /******************************************************************************* * @fn HAL_GetInterTempValue * - * @brief 获取内部温感采样值,如果使用了ADC中断采样,需在此函数中暂时屏蔽中断. + * @brief 鑾峰彇鍐呴儴娓╂劅閲囨牱鍊硷紝濡傛灉浣跨敤浜咥DC涓柇閲囨牱锛岄渶鍦ㄦ鍑芥暟涓殏鏃跺睆钄戒腑鏂. * - * @return 内部温感采样值. + * @return 鍐呴儴娓╂劅閲囨牱鍊. */ uint16_t HAL_GetInterTempValue(void) { diff --git a/BLE/HAL/RTC.c b/BLE/HAL/RTC.c index bdc36b4..1a755f4 100644 --- a/BLE/HAL/RTC.c +++ b/BLE/HAL/RTC.c @@ -3,7 +3,7 @@ * Author : WCH * Version : V1.2 * Date : 2022/01/18 - * Description : RTC配置及其初始化 + * Description : RTC閰嶇疆鍙婂叾鍒濆鍖 ********************************************************************************* * Copyright (c) 2021 Nanjing Qinheng Microelectronics Co., Ltd. * Attention: This software (modified or not) and binary are used for @@ -11,7 +11,7 @@ *******************************************************************************/ /******************************************************************************/ -/* 头文件包含 */ +/* 澶存枃浠跺寘鍚 */ #include "HAL.h" /********************************************************************* @@ -29,9 +29,9 @@ volatile uint32_t RTCTigFlag; /******************************************************************************* * @fn RTC_SetTignTime * - * @brief 配置RTC触发时间 + * @brief 閰嶇疆RTC瑙﹀彂鏃堕棿 * - * @param time - 触发时间. + * @param time - 瑙﹀彂鏃堕棿. * * @return None. */ @@ -46,7 +46,7 @@ void RTC_SetTignTime(uint32_t time) /******************************************************************************* * @fn RTC_IRQHandler * - * @brief RTC中断处理 + * @brief RTC涓柇澶勭悊 * * @param None. * @@ -63,7 +63,7 @@ void RTC_IRQHandler(void) /******************************************************************************* * @fn SYS_GetClockValue * - * @brief 获取RTC当前计数值 + * @brief 鑾峰彇RTC褰撳墠璁℃暟鍊 * * @param None. * @@ -84,7 +84,7 @@ static uint32_t SYS_GetClockValue(void) /******************************************************************************* * @fn HAL_Time0Init * - * @brief 系统定时器初始化 + * @brief 绯荤粺瀹氭椂鍣ㄥ垵濮嬪寲 * * @param None. * @@ -110,7 +110,7 @@ void HAL_TimeInit(void) R8_CK32K_CONFIG |= RB_CLK_OSC32K_XT | RB_CLK_XT32K_PON; sys_safe_access_disable(); #endif - RTC_InitTime(2020, 1, 1, 0, 0, 0); //RTC时钟初始化当前时间 + RTC_InitTime(2020, 1, 1, 0, 0, 0); //RTC鏃堕挓鍒濆鍖栧綋鍓嶆椂闂 tmos_memset( &conf, 0, sizeof(bleClockConfig_t) ); conf.ClockAccuracy = CLK_OSC32K ? 1000 : 50; diff --git a/BLE/HAL/include/CONFIG.h b/BLE/HAL/include/CONFIG.h index e841741..87e949a 100644 --- a/BLE/HAL/include/CONFIG.h +++ b/BLE/HAL/include/CONFIG.h @@ -3,7 +3,7 @@ * Author : WCH * Version : V1.2 * Date : 2022/01/18 - * Description : 配置说明及默认值,建议在工程配置里的预处理中修改当前值 + * Description : 閰嶇疆璇存槑鍙婇粯璁ゅ硷紝寤鸿鍦ㄥ伐绋嬮厤缃噷鐨勯澶勭悊涓慨鏀瑰綋鍓嶅 ********************************************************************************* * Copyright (c) 2021 Nanjing Qinheng Microelectronics Co., Ltd. * Attention: This software (modified or not) and binary are used for @@ -27,53 +27,53 @@ #include "CH59x_common.h" /********************************************************************* - 【MAC】 - BLE_MAC - 是否自定义蓝牙Mac地址 ( 默认:FALSE - 使用芯片Mac地址 ),需要在main.c修改Mac地址定义 + 銆怣AC銆 + BLE_MAC - 鏄惁鑷畾涔夎摑鐗橫ac鍦板潃 ( 榛樿:FALSE - 浣跨敤鑺墖Mac鍦板潃 )锛岄渶瑕佸湪main.c淇敼Mac鍦板潃瀹氫箟 - 【DCDC】 - DCDC_ENABLE - 是否使能DCDC ( 默认:FALSE ) + 銆怐CDC銆 + DCDC_ENABLE - 鏄惁浣胯兘DCDC ( 榛樿:FALSE ) - 【SLEEP】 - HAL_SLEEP - 是否开启睡眠功能 ( 默认:FALSE ) - SLEEP_RTC_MIN_TIME - 非空闲模式下睡眠的最小时间(单位:一个RTC周期) - SLEEP_RTC_MAX_TIME - 非空闲模式下睡眠的最大时间(单位:一个RTC周期) - WAKE_UP_RTC_MAX_TIME - 等待32M晶振稳定时间(单位:一个RTC周期) - 根据不同睡眠类型取值可分为: 睡眠模式/下电模式 - 45 (默认) - 暂停模式 - 45 - 空闲模式 - 5 - 【TEMPERATION】 - TEM_SAMPLE - 是否打开根据温度变化校准的功能,单次校准耗时小于10ms( 默认:TRUE ) + 銆怱LEEP銆 + HAL_SLEEP - 鏄惁寮鍚潯鐪犲姛鑳 ( 榛樿:FALSE ) + SLEEP_RTC_MIN_TIME - 闈炵┖闂叉ā寮忎笅鐫$湢鐨勬渶灏忔椂闂达紙鍗曚綅锛氫竴涓猂TC鍛ㄦ湡锛 + SLEEP_RTC_MAX_TIME - 闈炵┖闂叉ā寮忎笅鐫$湢鐨勬渶澶ф椂闂达紙鍗曚綅锛氫竴涓猂TC鍛ㄦ湡锛 + WAKE_UP_RTC_MAX_TIME - 绛夊緟32M鏅舵尟绋冲畾鏃堕棿锛堝崟浣嶏細涓涓猂TC鍛ㄦ湡锛 + 鏍规嵁涓嶅悓鐫$湢绫诲瀷鍙栧煎彲鍒嗕负锛 鐫$湢妯″紡/涓嬬數妯″紡 - 45 (榛樿) + 鏆傚仠妯″紡 - 45 + 绌洪棽妯″紡 - 5 + 銆怲EMPERATION銆 + TEM_SAMPLE - 鏄惁鎵撳紑鏍规嵁娓╁害鍙樺寲鏍″噯鐨勫姛鑳斤紝鍗曟鏍″噯鑰楁椂灏忎簬10ms( 榛樿:TRUE ) - 【CALIBRATION】 - BLE_CALIBRATION_ENABLE - 是否打开定时校准的功能,单次校准耗时小于10ms( 默认:TRUE ) - BLE_CALIBRATION_PERIOD - 定时校准的周期,单位ms( 默认:120000 ) + 銆怌ALIBRATION銆 + BLE_CALIBRATION_ENABLE - 鏄惁鎵撳紑瀹氭椂鏍″噯鐨勫姛鑳斤紝鍗曟鏍″噯鑰楁椂灏忎簬10ms( 榛樿:TRUE ) + BLE_CALIBRATION_PERIOD - 瀹氭椂鏍″噯鐨勫懆鏈燂紝鍗曚綅ms( 榛樿:120000 ) - 【SNV】 - BLE_SNV - 是否开启SNV功能,用于储存绑定信息( 默认:TRUE ) - BLE_SNV_ADDR - SNV信息保存地址,使用data flash最后512字节( 默认:0x77E00 ) - BLE_SNV_BLOCK - SNV信息保存块大小( 默认:256 ) - BLE_SNV_NUM - SNV信息保存数量( 默认:1 ) + 銆怱NV銆 + BLE_SNV - 鏄惁寮鍚疭NV鍔熻兘锛岀敤浜庡偍瀛樼粦瀹氫俊鎭( 榛樿:TRUE ) + BLE_SNV_ADDR - SNV淇℃伅淇濆瓨鍦板潃锛屼娇鐢╠ata flash鏈鍚512瀛楄妭( 榛樿:0x77E00 ) + BLE_SNV_BLOCK - SNV淇℃伅淇濆瓨鍧楀ぇ灏( 榛樿:256 ) + BLE_SNV_NUM - SNV淇℃伅淇濆瓨鏁伴噺( 榛樿:1 ) - 【RTC】 - CLK_OSC32K - RTC时钟选择,如包含主机角色必须使用外部32K( 0 外部(32768Hz),默认:1:内部(32000Hz),2:内部(32768Hz) ) + 銆怰TC銆 + CLK_OSC32K - RTC鏃堕挓閫夋嫨锛屽鍖呭惈涓绘満瑙掕壊蹇呴』浣跨敤澶栭儴32K( 0 澶栭儴(32768Hz)锛岄粯璁:1锛氬唴閮(32000Hz)锛2锛氬唴閮(32768Hz) ) - 【MEMORY】 - BLE_MEMHEAP_SIZE - 蓝牙协议栈使用的RAM大小,不小于6K ( 默认:(1024*6) ) + 銆怣EMORY銆 + BLE_MEMHEAP_SIZE - 钃濈墮鍗忚鏍堜娇鐢ㄧ殑RAM澶у皬锛屼笉灏忎簬6K ( 榛樿:(1024*6) ) - 【DATA】 - BLE_BUFF_MAX_LEN - 单个连接最大包长度( 默认:27 (ATT_MTU=23),取值范围[27~516] ) - BLE_BUFF_NUM - 控制器缓存的包数量( 默认:5 ) - BLE_TX_NUM_EVENT - 单个连接事件最多可以发多少个数据包( 默认:1 ) - BLE_TX_POWER - 发射功率( 默认:LL_TX_POWEER_0_DBM (0dBm) ) + 銆怐ATA銆 + BLE_BUFF_MAX_LEN - 鍗曚釜杩炴帴鏈澶у寘闀垮害( 榛樿:27 (ATT_MTU=23)锛屽彇鍊艰寖鍥碵27~516] ) + BLE_BUFF_NUM - 鎺у埗鍣ㄧ紦瀛樼殑鍖呮暟閲( 榛樿:5 ) + BLE_TX_NUM_EVENT - 鍗曚釜杩炴帴浜嬩欢鏈澶氬彲浠ュ彂澶氬皯涓暟鎹寘( 榛樿:1 ) + BLE_TX_POWER - 鍙戝皠鍔熺巼( 榛樿:LL_TX_POWEER_0_DBM (0dBm) ) - 【MULTICONN】 - PERIPHERAL_MAX_CONNECTION - 最多可同时做多少从机角色( 默认:1 ) - CENTRAL_MAX_CONNECTION - 最多可同时做多少主机角色( 默认:3 ) + 銆怣ULTICONN銆 + PERIPHERAL_MAX_CONNECTION - 鏈澶氬彲鍚屾椂鍋氬灏戜粠鏈鸿鑹( 榛樿:1 ) + CENTRAL_MAX_CONNECTION - 鏈澶氬彲鍚屾椂鍋氬灏戜富鏈鸿鑹( 榛樿:3 ) **********************************************************************/ /********************************************************************* - * 默认配置值 + * 榛樿閰嶇疆鍊 */ #ifndef BLE_MAC #define BLE_MAC FALSE @@ -121,7 +121,7 @@ #define BLE_SNV_NUM 1 #endif #ifndef CLK_OSC32K -#define CLK_OSC32K 1 // 该项请勿在此修改,必须在工程配置里的预处理中修改,如包含主机角色必须使用外部32K +#define CLK_OSC32K 1 // 璇ラ」璇峰嬁鍦ㄦ淇敼锛屽繀椤诲湪宸ョ▼閰嶇疆閲岀殑棰勫鐞嗕腑淇敼锛屽鍖呭惈涓绘満瑙掕壊蹇呴』浣跨敤澶栭儴32K #endif #ifndef BLE_MEMHEAP_SIZE #define BLE_MEMHEAP_SIZE (1024*6) diff --git a/BLE/HAL/include/HAL.h b/BLE/HAL/include/HAL.h index a9444fb..aea8c2f 100644 --- a/BLE/HAL/include/HAL.h +++ b/BLE/HAL/include/HAL.h @@ -40,12 +40,12 @@ extern tmosTaskID halTaskID; */ /** - * @brief 硬件初始化 + * @brief 纭欢鍒濆鍖 */ extern void HAL_Init(void); /** - * @brief 硬件层事务处理 + * @brief 纭欢灞備簨鍔″鐞 * * @param task_id - The TMOS assigned task ID. * @param events - events to process. This is a bit map and can @@ -54,19 +54,19 @@ extern void HAL_Init(void); extern tmosEvents HAL_ProcessEvent(tmosTaskID task_id, tmosEvents events); /** - * @brief BLE 库初始化 + * @brief BLE 搴撳垵濮嬪寲 */ extern void CH59x_BLEInit(void); /** - * @brief 获取内部温感采样值,如果使用了ADC中断采样,需在此函数中暂时屏蔽中断. + * @brief 鑾峰彇鍐呴儴娓╂劅閲囨牱鍊硷紝濡傛灉浣跨敤浜咥DC涓柇閲囨牱锛岄渶鍦ㄦ鍑芥暟涓殏鏃跺睆钄戒腑鏂. * - * @return 内部温感采样值. + * @return 鍐呴儴娓╂劅閲囨牱鍊. */ extern uint16_t HAL_GetInterTempValue(void); /** - * @brief 内部32k校准 + * @brief 鍐呴儴32k鏍″噯 */ extern void Lib_Calibration_LSI(void); diff --git a/BLE/HAL/include/KEY.h b/BLE/HAL/include/KEY.h index 8ab39d2..9766804 100644 --- a/BLE/HAL/include/KEY.h +++ b/BLE/HAL/include/KEY.h @@ -29,7 +29,7 @@ extern "C" { #define HAL_KEY_SW_3 0x04 // key3 #define HAL_KEY_SW_4 0x08 // key4 -/* 按键定义 */ +/* 鎸夐敭瀹氫箟 */ /* 1 - KEY */ #define KEY1_BV BV(22) @@ -52,7 +52,7 @@ extern "C" { #define KEY3_IN () #define KEY4_IN () -#define HAL_PUSH_BUTTON1() (KEY1_IN) //添加自定义按键 +#define HAL_PUSH_BUTTON1() (KEY1_IN) //娣诲姞鑷畾涔夋寜閿 #define HAL_PUSH_BUTTON2() (KEY2_IN) #define HAL_PUSH_BUTTON3() (0) #define HAL_PUSH_BUTTON4() (0) diff --git a/BLE/HAL/include/LED.h b/BLE/HAL/include/LED.h index 78c2034..47fb7c4 100644 --- a/BLE/HAL/include/LED.h +++ b/BLE/HAL/include/LED.h @@ -46,7 +46,7 @@ extern "C" { * TYPEDEFS */ -/* 连接一个LED用于监控演示程序的进度,低电平LED亮 */ +/* 杩炴帴涓涓狶ED鐢ㄤ簬鐩戞帶婕旂ず绋嬪簭鐨勮繘搴,浣庣數骞矻ED浜 */ /* 1 - LED */ #define LED1_BV BV(15) diff --git a/BLE/HAL/include/RTC.h b/BLE/HAL/include/RTC.h index 0ef7ebe..9fe8947 100644 --- a/BLE/HAL/include/RTC.h +++ b/BLE/HAL/include/RTC.h @@ -47,9 +47,9 @@ extern volatile uint32_t RTCTigFlag; void HAL_TimeInit(void); /** - * @brief 配置RTC触发时间 + * @brief 閰嶇疆RTC瑙﹀彂鏃堕棿 * - * @param time - 触发时间. + * @param time - 瑙﹀彂鏃堕棿. */ extern void RTC_SetTignTime(uint32_t time); diff --git a/BLE/HAL/include/SLEEP.h b/BLE/HAL/include/SLEEP.h index 8fd9c39..e60041d 100644 --- a/BLE/HAL/include/SLEEP.h +++ b/BLE/HAL/include/SLEEP.h @@ -27,14 +27,14 @@ extern "C" { */ /** - * @brief 配置睡眠唤醒的方式 - RTC唤醒,触发模式 + * @brief 閰嶇疆鐫$湢鍞ら啋鐨勬柟寮 - RTC鍞ら啋锛岃Е鍙戞ā寮 */ extern void HAL_SleepInit(void); /** - * @brief 启动睡眠 + * @brief 鍚姩鐫$湢 * - * @param time - 唤醒的时间点(RTC绝对值) + * @param time - 鍞ら啋鐨勬椂闂寸偣锛圧TC缁濆鍊硷級 * * @return state. */ diff --git a/BLE/LIB/CH59xBLE_LIB.h b/BLE/LIB/CH59xBLE_LIB.h index 88c3bf7..8e3bedc 100644 --- a/BLE/LIB/CH59xBLE_LIB.h +++ b/BLE/LIB/CH59xBLE_LIB.h @@ -187,7 +187,7 @@ extern const uint8_t VER_LIB[]; // LIB version #define ABS(n) (((n) < 0) ? -(n) : (n)) #endif -/* TxPower define(Accuracy:±2dBm) */ +/* TxPower define(Accuracy:卤2dBm) */ #define LL_TX_POWEER_MINUS_20_DBM 0x01 #define LL_TX_POWEER_MINUS_15_DBM 0x03 #define LL_TX_POWEER_MINUS_10_DBM 0x05 @@ -773,7 +773,7 @@ extern const uint8_t VER_LIB[]; // LIB version #define TGAP_AUTH_TASK_ID 24 //!< Task ID override for Task Authentication control (for stack internal use only) // v5.x -#define TGAP_ADV_TX_POWER 25 //!< Indicates the maximum power level Range: -127 ≤ N ≤ +126 Units: dBm.Default 127(Host has no preference). +#define TGAP_ADV_TX_POWER 25 //!< Indicates the maximum power level Range: -127 鈮 N 鈮 +126 Units: dBm.Default 127(Host has no preference). #define TGAP_ADV_PRIMARY_PHY 26 //!< resv. #define TGAP_ADV_SECONDARY_PHY 27 //!< LE 1M/LE 2M. Default GAP_PHY_VAL_LE_1M. #define TGAP_ADV_SECONDARY_MAX_SKIP 28 //!< Maximum advertising events the Controller can skip before sending the AUX_ADV_IND packets on the secondary advertising channel. Default 0. @@ -1110,7 +1110,7 @@ extern const uint8_t VER_LIB[]; // LIB version #define SMP_PAIRING_FAILED_UNSPECIFIED 0x08 //!< Pairing failed due to an unspecified reason #define SMP_PAIRING_FAILED_REPEATED_ATTEMPTS 0x09 //!< Pairing or authentication procedure is disallowed because too little time has elapsed since the last pairing request or security request. #define SMP_PAIRING_FAILED_INVALID_PARAMERERS 0x0A //!< The Invalid Parameters error code indicates that the command length is invalid or that a parameter is outside of the specified range. -#define SMP_PAIRING_FAILED_DHKEY_CHECK_FAILED 0x0B //!< Indicates to the remote device that the DHKey Check value received doesn’t match the one calculated by the local device. +#define SMP_PAIRING_FAILED_DHKEY_CHECK_FAILED 0x0B //!< Indicates to the remote device that the DHKey Check value received doesn鈥檛 match the one calculated by the local device. #define SMP_PAIRING_FAILED_NUMERIC_COMPARISON 0x0C //!< Indicates that the confirm values in the numeric comparison protocol do not match. #define SMP_PAIRING_FAILED_KEY_REJECTED 0x0F //!< Indicates that the device chose not to accept a distributed key. @@ -2849,7 +2849,7 @@ extern void LLE_IRQLibHandler( void ); * @return access address * the Access Address meets the following requirements: * It shall have no more than six consecutive zeros or ones. - * It shall not be t he advertising channel packets’ Access Address. + * It shall not be t he advertising channel packets鈥 Access Address. * It shall not be a sequence that differ s from the advertising channel packets' Access Address by only one bit. * It shall not have all four octets equal. * It shall have no more than 24 transitions. diff --git a/BLE/LIB/CH59xBLE_ROM.h b/BLE/LIB/CH59xBLE_ROM.h index 04ee273..6e85d8b 100644 --- a/BLE/LIB/CH59xBLE_ROM.h +++ b/BLE/LIB/CH59xBLE_ROM.h @@ -199,7 +199,7 @@ extern const uint8_t VER_LIB[]; // LIB version #define ABS(n) (((n) < 0) ? -(n) : (n)) #endif -/* TxPower define(Accuracy:±2dBm) */ +/* TxPower define(Accuracy:卤2dBm) */ #define LL_TX_POWEER_MINUS_20_DBM 0x01 #define LL_TX_POWEER_MINUS_15_DBM 0x03 #define LL_TX_POWEER_MINUS_10_DBM 0x05 @@ -785,7 +785,7 @@ extern const uint8_t VER_LIB[]; // LIB version #define TGAP_AUTH_TASK_ID 24 //!< Task ID override for Task Authentication control (for stack internal use only) // v5.x -#define TGAP_ADV_TX_POWER 25 //!< Indicates the maximum power level Range: -127 ≤ N ≤ +126 Units: dBm.Default 127(Host has no preference). +#define TGAP_ADV_TX_POWER 25 //!< Indicates the maximum power level Range: -127 鈮 N 鈮 +126 Units: dBm.Default 127(Host has no preference). #define TGAP_ADV_PRIMARY_PHY 26 //!< resv. #define TGAP_ADV_SECONDARY_PHY 27 //!< LE 1M/LE 2M. Default GAP_PHY_VAL_LE_1M. #define TGAP_ADV_SECONDARY_MAX_SKIP 28 //!< Maximum advertising events the Controller can skip before sending the AUX_ADV_IND packets on the secondary advertising channel. Default 0. @@ -1122,7 +1122,7 @@ extern const uint8_t VER_LIB[]; // LIB version #define SMP_PAIRING_FAILED_UNSPECIFIED 0x08 //!< Pairing failed due to an unspecified reason #define SMP_PAIRING_FAILED_REPEATED_ATTEMPTS 0x09 //!< Pairing or authentication procedure is disallowed because too little time has elapsed since the last pairing request or security request. #define SMP_PAIRING_FAILED_INVALID_PARAMERERS 0x0A //!< The Invalid Parameters error code indicates that the command length is invalid or that a parameter is outside of the specified range. -#define SMP_PAIRING_FAILED_DHKEY_CHECK_FAILED 0x0B //!< Indicates to the remote device that the DHKey Check value received doesn’t match the one calculated by the local device. +#define SMP_PAIRING_FAILED_DHKEY_CHECK_FAILED 0x0B //!< Indicates to the remote device that the DHKey Check value received doesn鈥檛 match the one calculated by the local device. #define SMP_PAIRING_FAILED_NUMERIC_COMPARISON 0x0C //!< Indicates that the confirm values in the numeric comparison protocol do not match. #define SMP_PAIRING_FAILED_KEY_REJECTED 0x0F //!< Indicates that the device chose not to accept a distributed key. @@ -2877,7 +2877,7 @@ typedef struct tag_rf_config * @return access address * the Access Address meets the following requirements: * It shall have no more than six consecutive zeros or ones. - * It shall not be t he advertising channel packets’ Access Address. + * It shall not be t he advertising channel packets鈥 Access Address. * It shall not be a sequence that differ s from the advertising channel packets' Access Address by only one bit. * It shall not have all four octets equal. * It shall have no more than 24 transitions. @@ -4037,7 +4037,7 @@ typedef struct tag_rf_config * @return SUCCESS - bond record found and changed * bleIncorrectMode - Link not found. */ -#define GAPBondMgr_OobRsp (( bStatus_t (*) ( uint16_t connHandle, uint8_t status, uint8_t *oob, uint8_t * c_peer )) BLE_LIB_JT(139) ) +#define GAPBondMgr_OobRsp (( bStatus_t (*) ( uint16_t connHandle, uint8_t status, uint8_t *oob, uint8_t * c_peer )锛 BLE_LIB_JT(139) ) /** * @brief Initialization function for the ecc-function callback. @@ -4046,7 +4046,7 @@ typedef struct tag_rf_config * * @return null. */ -#define GAPBondMgr_EccInit (( void (*) ( gapEccCBs_t *pEcc )) BLE_LIB_JT(140) ) +#define GAPBondMgr_EccInit (( void (*) ( gapEccCBs_t *pEcc )锛 BLE_LIB_JT(140) ) /** * @brief Send a security request diff --git a/SRC/StdPeriphDriver/CH59x_adc.c b/SRC/StdPeriphDriver/CH59x_adc.c index e7046b7..0b6bac5 100644 --- a/SRC/StdPeriphDriver/CH59x_adc.c +++ b/SRC/StdPeriphDriver/CH59x_adc.c @@ -15,24 +15,24 @@ /********************************************************************* * @fn ADC_DataCalib_Rough * - * @brief 采样数据粗调,获取偏差值,必须先配置ADC后调用此函数获取校准值 + * @brief 閲囨牱鏁版嵁绮楄皟,鑾峰彇鍋忓樊鍊,蹇呴』鍏堥厤缃瓵DC鍚庤皟鐢ㄦ鍑芥暟鑾峰彇鏍″噯鍊 * * @param none * - * @return 偏差 + * @return 鍋忓樊 */ -signed short ADC_DataCalib_Rough(void) // 采样数据粗调,获取偏差值 +signed short ADC_DataCalib_Rough(void) // 閲囨牱鏁版嵁绮楄皟,鑾峰彇鍋忓樊鍊 { uint16_t i; uint32_t sum = 0; - uint8_t ch = 0; // 备份通道 - uint8_t cfg = 0; // 备份 + uint8_t ch = 0; // 澶囦唤閫氶亾 + uint8_t cfg = 0; // 澶囦唤 ch = R8_ADC_CHANNEL; cfg = R8_ADC_CFG; - R8_ADC_CFG |= RB_ADC_OFS_TEST; // 进入测试模式 - R8_ADC_CFG &= ~RB_ADC_DIFF_EN; // 关闭差分 + R8_ADC_CFG |= RB_ADC_OFS_TEST; // 杩涘叆娴嬭瘯妯″紡 + R8_ADC_CFG &= ~RB_ADC_DIFF_EN; // 鍏抽棴宸垎 R8_ADC_CONVERT |= RB_ADC_START; while(R8_ADC_CONVERT & RB_ADC_START); @@ -44,7 +44,7 @@ signed short ADC_DataCalib_Rough(void) // } sum = (sum + 8) >> 4; - R8_ADC_CFG = cfg; // 恢复配置值 + R8_ADC_CFG = cfg; // 鎭㈠閰嶇疆鍊 R8_ADC_CHANNEL = ch; return (2048 - sum); @@ -53,7 +53,7 @@ signed short ADC_DataCalib_Rough(void) // /********************************************************************* * @fn ADC_ExtSingleChSampInit * - * @brief 外部信号单通道采样初始化 + * @brief 澶栭儴淇″彿鍗曢氶亾閲囨牱鍒濆鍖 * * @param sp - refer to ADC_SampClkTypeDef * @param ga - refer to ADC_SignalPGATypeDef @@ -77,7 +77,7 @@ void ADC_ExtSingleChSampInit(ADC_SampClkTypeDef sp, ADC_SignalPGATypeDef ga) /********************************************************************* * @fn ADC_ExtDiffChSampInit * - * @brief 外部信号差分通道采样初始化 + * @brief 澶栭儴淇″彿宸垎閫氶亾閲囨牱鍒濆鍖 * * @param sp - refer to ADC_SampClkTypeDef * @param ga - refer to ADC_SignalPGATypeDef @@ -101,7 +101,7 @@ void ADC_ExtDiffChSampInit(ADC_SampClkTypeDef sp, ADC_SignalPGATypeDef ga) /********************************************************************* * @fn ADC_InterTSSampInit * - * @brief 内置温度传感器采样初始化 + * @brief 鍐呯疆娓╁害浼犳劅鍣ㄩ噰鏍峰垵濮嬪寲 * * @param none * @@ -119,7 +119,7 @@ void ADC_InterTSSampInit(void) /********************************************************************* * @fn ADC_InterBATSampInit * - * @brief 内置电池电压采样初始化 + * @brief 鍐呯疆鐢垫睜鐢靛帇閲囨牱鍒濆鍖 * * @param none * @@ -129,14 +129,14 @@ void ADC_InterBATSampInit(void) { R8_TKEY_CFG &= ~RB_TKEY_PWR_ON; R8_ADC_CHANNEL = CH_INTE_VBAT; - R8_ADC_CFG = RB_ADC_POWER_ON | RB_ADC_BUF_EN | (0 << 4); // 使用-12dB模式 + R8_ADC_CFG = RB_ADC_POWER_ON | RB_ADC_BUF_EN | (0 << 4); // 浣跨敤-12dB妯″紡 R8_ADC_CONVERT &= ~RB_ADC_PGA_GAIN2; } /********************************************************************* * @fn TouchKey_ChSampInit * - * @brief 触摸按键通道采样初始化 + * @brief 瑙︽懜鎸夐敭閫氶亾閲囨牱鍒濆鍖 * * @param none * @@ -152,11 +152,11 @@ void TouchKey_ChSampInit(void) /********************************************************************* * @fn ADC_ExcutSingleConver * - * @brief ADC执行单次转换 + * @brief ADC鎵ц鍗曟杞崲 * * @param none * - * @return ADC转换后的数据 + * @return ADC杞崲鍚庣殑鏁版嵁 */ uint16_t ADC_ExcutSingleConver(void) { @@ -169,12 +169,12 @@ uint16_t ADC_ExcutSingleConver(void) /********************************************************************* * @fn TouchKey_ExcutSingleConver * - * @brief TouchKey转换后数据 + * @brief TouchKey杞崲鍚庢暟鎹 * - * @param charg - Touchkey充电时间,5bits有效, t=charg*Tadc - * @param disch - Touchkey放电时间,3bits有效, t=disch*Tadc + * @param charg - Touchkey鍏呯數鏃堕棿,5bits鏈夋晥, t=charg*Tadc + * @param disch - Touchkey鏀剧數鏃堕棿,3bits鏈夋晥, t=disch*Tadc * - * @return 当前TouchKey等效数据 + * @return 褰撳墠TouchKey绛夋晥鏁版嵁 */ uint16_t TouchKey_ExcutSingleConver(uint8_t charg, uint8_t disch) { @@ -187,9 +187,9 @@ uint16_t TouchKey_ExcutSingleConver(uint8_t charg, uint8_t disch) /********************************************************************* * @fn ADC_AutoConverCycle * - * @brief 设置连续 ADC的周期 + * @brief 璁剧疆杩炵画 ADC鐨勫懆鏈 * - * @param cycle - 采样周期计算方法为(256-cycle)*16*Tsys + * @param cycle - 閲囨牱鍛ㄦ湡璁$畻鏂规硶涓(256-cycle)*16*Tsys * * @return none */ @@ -201,12 +201,12 @@ void ADC_AutoConverCycle(uint8_t cycle) /********************************************************************* * @fn ADC_DMACfg * - * @brief 配置DMA功能 + * @brief 閰嶇疆DMA鍔熻兘 * - * @param s - 是否打开DMA功能 - * @param startAddr - DMA 起始地址 - * @param endAddr - DMA 结束地址 - * @param m - 配置DMA模式 + * @param s - 鏄惁鎵撳紑DMA鍔熻兘 + * @param startAddr - DMA 璧峰鍦板潃 + * @param endAddr - DMA 缁撴潫鍦板潃 + * @param m - 閰嶇疆DMA妯″紡 * * @return none */ diff --git a/SRC/StdPeriphDriver/CH59x_clk.c b/SRC/StdPeriphDriver/CH59x_clk.c index 35adb82..8f1da57 100644 --- a/SRC/StdPeriphDriver/CH59x_clk.c +++ b/SRC/StdPeriphDriver/CH59x_clk.c @@ -15,9 +15,9 @@ /********************************************************************* * @fn LClk32K_Select * - * @brief 32K 低频时钟来源 + * @brief 32K 浣庨鏃堕挓鏉ユ簮 * - * @param hc - 选择32K使用内部还是外部 + * @param hc - 閫夋嫨32K浣跨敤鍐呴儴杩樻槸澶栭儴 * * @return none */ @@ -43,10 +43,10 @@ void LClk32K_Select(LClk32KTypeDef hc) /********************************************************************* * @fn LClk32K_Cfg * - * @brief 32K 低频时钟电源配置 + * @brief 32K 浣庨鏃堕挓鐢垫簮閰嶇疆 * - * @param hc - 选择内部32K还是外部32K - * @param s - 是否打开电源 + * @param hc - 閫夋嫨鍐呴儴32K杩樻槸澶栭儴32K + * @param s - 鏄惁鎵撳紑鐢垫簮 * * @return none */ @@ -85,7 +85,7 @@ void LClk32K_Cfg(LClk32KTypeDef hc, FunctionalState s) /********************************************************************* * @fn HSECFG_Current * - * @brief HSE晶体 偏置电流配置 + * @brief HSE鏅朵綋 鍋忕疆鐢垫祦閰嶇疆 * * @param c - 75%,100%,125%,150% * @@ -106,7 +106,7 @@ void HSECFG_Current(HSECurrentTypeDef c) /********************************************************************* * @fn HSECFG_Capacitance * - * @brief HSE晶体 负载电容配置 + * @brief HSE鏅朵綋 璐熻浇鐢靛閰嶇疆 * * @param c - refer to HSECapTypeDef * @@ -127,7 +127,7 @@ void HSECFG_Capacitance(HSECapTypeDef c) /********************************************************************* * @fn LSECFG_Current * - * @brief LSE晶体 偏置电流配置 + * @brief LSE鏅朵綋 鍋忕疆鐢垫祦閰嶇疆 * * @param c - 70%,100%,140%,200% * @@ -148,7 +148,7 @@ void LSECFG_Current(LSECurrentTypeDef c) /********************************************************************* * @fn LSECFG_Capacitance * - * @brief LSE晶体 负载电容配置 + * @brief LSE鏅朵綋 璐熻浇鐢靛閰嶇疆 * * @param c - refer to LSECapTypeDef * @@ -169,11 +169,11 @@ void LSECFG_Capacitance(LSECapTypeDef c) /********************************************************************* * @fn Calibration_LSI * - * @brief 校准内部32K时钟 + * @brief 鏍″噯鍐呴儴32K鏃堕挓 * - * @param cali_Lv - 校准等级选择 Level_32 :2.4ms 1000ppm (32M 主频) 1100ppm (60M 主频) - * Level_64 :4.4ms 800ppm (32M 主频) 1000ppm (60M 主频) - * Level_128 :8.4ms 600ppm (32M 主频) 800ppm (60M 主频) + * @param cali_Lv - 鏍″噯绛夌骇閫夋嫨 Level_32 锛2.4ms 1000ppm (32M 涓婚) 1100ppm (60M 涓婚) + * Level_64 锛4.4ms 800ppm (32M 涓婚) 1000ppm (60M 涓婚) + * Level_128 锛8.4ms 600ppm (32M 涓婚) 800ppm (60M 涓婚) * * @return none */ @@ -197,7 +197,7 @@ void Calibration_LSI(Cali_LevelTypeDef cali_Lv) while(1) { - // 粗调 + // 绮楄皟 sys_safe_access_enable(); R8_OSC_CAL_CTRL &= ~RB_OSC_CNT_TOTAL; R8_OSC_CAL_CTRL |= 1; @@ -217,7 +217,7 @@ void Calibration_LSI(Cali_LevelTypeDef cali_Lv) sys_safe_access_disable(); } - while(!(R8_OSC_CAL_CTRL & RB_OSC_CNT_HALT)); // 用于丢弃 + while(!(R8_OSC_CAL_CTRL & RB_OSC_CNT_HALT)); // 鐢ㄤ簬涓㈠純 SYS_DisableAllIrq(&irqv); sys_safe_access_enable(); @@ -239,7 +239,7 @@ void Calibration_LSI(Cali_LevelTypeDef cali_Lv) R16_OSC_CAL_CNT |= RB_OSC_CAL_OV_CLR; SYS_RecoverIrq(irqv); while(!(R8_OSC_CAL_CTRL & RB_OSC_CNT_HALT)); - i = R16_OSC_CAL_CNT; // 实时校准后采样值 + i = R16_OSC_CAL_CNT; // 瀹炴椂鏍″噯鍚庨噰鏍峰 cnt_offset = (i & 0x3FFF) + R8_OSC_CAL_OV_CNT * 0x3FFF - 2000 * (freq_sys / 1000) / CAB_LSIFQ; if(((cnt_offset > -37 * (freq_sys / 1000) / 60000) && (cnt_offset < 37 * (freq_sys / 1000) / 60000)) || retry > 2) { @@ -253,8 +253,8 @@ void Calibration_LSI(Cali_LevelTypeDef cali_Lv) sys_safe_access_disable(); } - // 细调 - // 配置细调参数后,丢弃2次捕获值(软件行为)上判断已有一次,这里只留一次 + // 缁嗚皟 + // 閰嶇疆缁嗚皟鍙傛暟鍚庯紝涓㈠純2娆℃崟鑾峰硷紙杞欢琛屼负锛変笂鍒ゆ柇宸叉湁涓娆★紝杩欓噷鍙暀涓娆 sys_safe_access_enable(); R8_OSC_CAL_CTRL &= ~RB_OSC_CNT_TOTAL; R8_OSC_CAL_CTRL |= cali_Lv; @@ -279,7 +279,7 @@ void Calibration_LSI(Cali_LevelTypeDef cali_Lv) sys_safe_access_disable(); } - while(!(R8_OSC_CAL_CTRL & RB_OSC_CNT_HALT)); // 用于丢弃 + while(!(R8_OSC_CAL_CTRL & RB_OSC_CNT_HALT)); // 鐢ㄤ簬涓㈠純 SYS_DisableAllIrq(&irqv); sys_safe_access_enable(); @@ -304,7 +304,7 @@ void Calibration_LSI(Cali_LevelTypeDef cali_Lv) sys_safe_access_enable(); R8_OSC_CAL_CTRL &= ~RB_OSC_CNT_EN; sys_safe_access_disable(); - i = R16_OSC_CAL_CNT; // 实时校准后采样值 + i = R16_OSC_CAL_CNT; // 瀹炴椂鏍″噯鍚庨噰鏍峰 cnt_offset = (i & 0x3FFF) + R8_OSC_CAL_OV_CNT * 0x3FFF - 4000 * (1 << cali_Lv) * (freq_sys / 1000000) / 256 * 1000/(CAB_LSIFQ/256); cnt_offset = (cnt_offset > 0) ? ((((cnt_offset * 2*(100 )) / (1366 * ((1 << cali_Lv)/8) * (freq_sys/1000) / 60000)) + 1) / 2) : ((((cnt_offset * 2*(100)) / (1366 * ((1 << cali_Lv)/8) * (freq_sys/1000) / 60000)) - 1) / 2); if((cnt_offset > 0)&&(((R16_INT32K_TUNE>>5)+cnt_offset)>0xFF)) @@ -354,14 +354,14 @@ void Calibration_LSI(Cali_LevelTypeDef cali_Lv) /********************************************************************* * @fn RTCInitTime * - * @brief RTC时钟初始化当前时间 + * @brief RTC鏃堕挓鍒濆鍖栧綋鍓嶆椂闂 * - * @param y - 配置年,MAX_Y = BEGYEAR + 44 - * @param mon - 配置月,MAX_MON = 12 - * @param d - 配置日,MAX_D = 31 - * @param h - 配置小时,MAX_H = 23 - * @param m - 配置分钟,MAX_M = 59 - * @param s - 配置秒,MAX_S = 59 + * @param y - 閰嶇疆骞达紝MAX_Y = BEGYEAR + 44 + * @param mon - 閰嶇疆鏈堬紝MAX_MON = 12 + * @param d - 閰嶇疆鏃ワ紝MAX_D = 31 + * @param h - 閰嶇疆灏忔椂锛孧AX_H = 23 + * @param m - 閰嶇疆鍒嗛挓锛孧AX_M = 59 + * @param s - 閰嶇疆绉掞紝MAX_S = 59 * * @return none */ @@ -420,14 +420,14 @@ void RTC_InitTime(uint16_t y, uint16_t mon, uint16_t d, uint16_t h, uint16_t m, /********************************************************************* * @fn RTC_GetTime * - * @brief 获取当前时间 + * @brief 鑾峰彇褰撳墠鏃堕棿 * - * @param py - 获取到的年,MAX_Y = BEGYEAR + 44 - * @param pmon - 获取到的月,MAX_MON = 12 - * @param pd - 获取到的日,MAX_D = 31 - * @param ph - 获取到的小时,MAX_H = 23 - * @param pm - 获取到的分钟,MAX_M = 59 - * @param ps - 获取到的秒,MAX_S = 59 + * @param py - 鑾峰彇鍒扮殑骞达紝MAX_Y = BEGYEAR + 44 + * @param pmon - 鑾峰彇鍒扮殑鏈堬紝MAX_MON = 12 + * @param pd - 鑾峰彇鍒扮殑鏃ワ紝MAX_D = 31 + * @param ph - 鑾峰彇鍒扮殑灏忔椂锛孧AX_H = 23 + * @param pm - 鑾峰彇鍒扮殑鍒嗛挓锛孧AX_M = 59 + * @param ps - 鑾峰彇鍒扮殑绉掞紝MAX_S = 59 * * @return none */ @@ -465,9 +465,9 @@ void RTC_GetTime(uint16_t *py, uint16_t *pmon, uint16_t *pd, uint16_t *ph, uint1 /********************************************************************* * @fn RTC_SetCycle32k * - * @brief 基于LSE/LSI时钟,配置当前RTC 周期数 + * @brief 鍩轰簬LSE/LSI鏃堕挓锛岄厤缃綋鍓峈TC 鍛ㄦ湡鏁 * - * @param cyc - 配置周期计数初值,MAX_CYC = 0xA8BFFFFF = 2831155199 + * @param cyc - 閰嶇疆鍛ㄦ湡璁℃暟鍒濆硷紝MAX_CYC = 0xA8BFFFFF = 2831155199 * * @return none */ @@ -489,11 +489,11 @@ void RTC_SetCycle32k(uint32_t cyc) /********************************************************************* * @fn RTC_GetCycle32k * - * @brief 基于LSE/LSI时钟,获取当前RTC 周期数 + * @brief 鍩轰簬LSE/LSI鏃堕挓锛岃幏鍙栧綋鍓峈TC 鍛ㄦ湡鏁 * * @param none * - * @return 当前周期数,MAX_CYC = 0xA8BFFFFF = 2831155199 + * @return 褰撳墠鍛ㄦ湡鏁帮紝MAX_CYC = 0xA8BFFFFF = 2831155199 */ __HIGH_CODE uint32_t RTC_GetCycle32k(void) @@ -510,7 +510,7 @@ uint32_t RTC_GetCycle32k(void) /********************************************************************* * @fn RTC_TMRFunCfg * - * @brief RTC定时模式配置(注意定时基准固定为32768Hz) + * @brief RTC瀹氭椂妯″紡閰嶇疆锛堟敞鎰忓畾鏃跺熀鍑嗗浐瀹氫负32768Hz锛 * * @param t - refer to RTC_TMRCycTypeDef * @@ -529,9 +529,9 @@ void RTC_TMRFunCfg(RTC_TMRCycTypeDef t) /********************************************************************* * @fn RTC_TRIGFunCfg * - * @brief RTC时间触发模式配置 + * @brief RTC鏃堕棿瑙﹀彂妯″紡閰嶇疆 * - * @param cyc - 相对当前时间的触发间隔时间,基于LSE/LSI时钟周期数 + * @param cyc - 鐩稿褰撳墠鏃堕棿鐨勮Е鍙戦棿闅旀椂闂达紝鍩轰簬LSE/LSI鏃堕挓鍛ㄦ湡鏁 * * @return none */ @@ -554,9 +554,9 @@ void RTC_TRIGFunCfg(uint32_t cyc) /********************************************************************* * @fn RTC_ModeFunDisable * - * @brief RTC 模式功能关闭 + * @brief RTC 妯″紡鍔熻兘鍏抽棴 * - * @param m - 需要关闭的当前模式 + * @param m - 闇瑕佸叧闂殑褰撳墠妯″紡 * * @return none */ @@ -581,11 +581,11 @@ void RTC_ModeFunDisable(RTC_MODETypeDef m) /********************************************************************* * @fn RTC_GetITFlag * - * @brief 获取RTC中断标志 + * @brief 鑾峰彇RTC涓柇鏍囧織 * * @param f - refer to RTC_EVENTTypeDef * - * @return 中断标志状态 + * @return 涓柇鏍囧織鐘舵 */ uint8_t RTC_GetITFlag(RTC_EVENTTypeDef f) { @@ -602,7 +602,7 @@ uint8_t RTC_GetITFlag(RTC_EVENTTypeDef f) /********************************************************************* * @fn RTC_ClearITFlag * - * @brief 清除RTC中断标志 + * @brief 娓呴櫎RTC涓柇鏍囧織 * * @param f - refer to RTC_EVENTTypeDef * diff --git a/SRC/StdPeriphDriver/CH59x_flash.c b/SRC/StdPeriphDriver/CH59x_flash.c index ff871c7..c27ac14 100644 --- a/SRC/StdPeriphDriver/CH59x_flash.c +++ b/SRC/StdPeriphDriver/CH59x_flash.c @@ -53,13 +53,13 @@ void FLASH_ROM_READ(uint32_t StartAddr, void *Buffer, uint32_t len) /********************************************************************* * @fn UserOptionByteConfig * - * @brief Configure User Option Byte.需在调用用户配置字生效函数后生效,且每次烧录后只能修改一次 - * (使用该函数,必须使用官方提供的.S文件,同时调用该函数后,两次上电后,两线调试接口默认关闭) + * @brief Configure User Option Byte.闇鍦ㄨ皟鐢ㄧ敤鎴烽厤缃瓧鐢熸晥鍑芥暟鍚庣敓鏁,涓旀瘡娆$儳褰曞悗鍙兘淇敼涓娆 + * (浣跨敤璇ュ嚱鏁帮紝蹇呴』浣跨敤瀹樻柟鎻愪緵鐨.S鏂囦欢锛屽悓鏃惰皟鐢ㄨ鍑芥暟鍚庯紝涓ゆ涓婄數鍚庯紝涓ょ嚎璋冭瘯鎺ュ彛榛樿鍏抽棴) * - * @param RESET_EN - 外部复位引脚使能 - * @param BOOT_PIN - ENABLE-使用默认boot脚-PB22,DISABLE-使用boot脚-PB11 - * @param UART_NO_KEY_EN - 串口免按键下载使能 - * @param FLASHProt_Size - 写保护大小(单位4K) + * @param RESET_EN - 澶栭儴澶嶄綅寮曡剼浣胯兘 + * @param BOOT_PIN - ENABLE-浣跨敤榛樿boot鑴-PB22,DISABLE-浣跨敤boot鑴-PB11 + * @param UART_NO_KEY_EN - 涓插彛鍏嶆寜閿笅杞戒娇鑳 + * @param FLASHProt_Size - 鍐欎繚鎶ゅぇ灏(鍗曚綅4K) * * @return 0-Success, 1-Err */ @@ -82,7 +82,7 @@ uint8_t UserOptionByteConfig(FunctionalState RESET_EN, FunctionalState BOOT_PIN, s &= RESET_Disable; /* bit[7:0]-bit[31-24] */ - s |= ((~(s << 24)) & 0xFF000000); //高8位 配置信息取反; + s |= ((~(s << 24)) & 0xFF000000); //楂8浣 閰嶇疆淇℃伅鍙栧弽锛 if(BOOT_PIN == ENABLE) s |= BOOT_PIN_PB22; @@ -111,8 +111,8 @@ uint8_t UserOptionByteConfig(FunctionalState RESET_EN, FunctionalState BOOT_PIN, /********************************************************************* * @fn UserOptionByteClose_SWD * - * @brief 关两线调试接口,其余配置值保持不变.需在调用用户配置字生效函数后生效,且每次烧录后只能修改一次 - * (使用该函数,必须使用官方提供的.S文件,同时调用该函数后,两次上电后,两线调试接口默认关闭) + * @brief 鍏充袱绾胯皟璇曟帴鍙o紝鍏朵綑閰嶇疆鍊间繚鎸佷笉鍙.闇鍦ㄨ皟鐢ㄧ敤鎴烽厤缃瓧鐢熸晥鍑芥暟鍚庣敓鏁,涓旀瘡娆$儳褰曞悗鍙兘淇敼涓娆 + * (浣跨敤璇ュ嚱鏁帮紝蹇呴』浣跨敤瀹樻柟鎻愪緵鐨.S鏂囦欢锛屽悓鏃惰皟鐢ㄨ鍑芥暟鍚庯紝涓ゆ涓婄數鍚庯紝涓ょ嚎璋冭瘯鎺ュ彛榛樿鍏抽棴) * * @return 0-Success, 1-Err */ @@ -126,11 +126,11 @@ uint8_t UserOptionByteClose_SWD(void) { FLASH_EEPROM_CMD(CMD_GET_ROM_INFO, 0x7EFFC, &s, 4); - s &= ~((1 << 4) | (1 << 7)); //禁用调试功能, 禁用SPI读写FLASH + s &= ~((1 << 4) | (1 << 7)); //绂佺敤璋冭瘯鍔熻兘锛 绂佺敤SPI璇诲啓FLASH /* bit[7:0]-bit[31-24] */ s &= 0x00FFFFFF; - s |= ((~(s << 24)) & 0xFF000000); //高8位 配置信息取反; + s |= ((~(s << 24)) & 0xFF000000); //楂8浣 閰嶇疆淇℃伅鍙栧弽锛 /*Write user option byte*/ FLASH_ROM_WRITE(0x14, &s, 4); @@ -150,7 +150,7 @@ uint8_t UserOptionByteClose_SWD(void) /********************************************************************* * @fn UserOptionByte_Active * - * @brief 用户配置字生效函数,执行后自动复位 + * @brief 鐢ㄦ埛閰嶇疆瀛楃敓鏁堝嚱鏁帮紝鎵ц鍚庤嚜鍔ㄥ浣 * * @return 0-Success, 1-Err */ diff --git a/SRC/StdPeriphDriver/CH59x_gpio.c b/SRC/StdPeriphDriver/CH59x_gpio.c index 06a2888..93d0e85 100644 --- a/SRC/StdPeriphDriver/CH59x_gpio.c +++ b/SRC/StdPeriphDriver/CH59x_gpio.c @@ -15,10 +15,10 @@ /********************************************************************* * @fn GPIOA_ModeCfg * - * @brief GPIOA端口引脚模式配置 + * @brief GPIOA绔彛寮曡剼妯″紡閰嶇疆 * * @param pin - PA0-PA15 - * @param mode - 输入输出类型 + * @param mode - 杈撳叆杈撳嚭绫诲瀷 * * @return none */ @@ -62,10 +62,10 @@ void GPIOA_ModeCfg(uint32_t pin, GPIOModeTypeDef mode) /********************************************************************* * @fn GPIOB_ModeCfg * - * @brief GPIOB端口引脚模式配置 + * @brief GPIOB绔彛寮曡剼妯″紡閰嶇疆 * * @param pin - PB0-PB23 - * @param mode - 输入输出类型 + * @param mode - 杈撳叆杈撳嚭绫诲瀷 * * @return none */ @@ -109,10 +109,10 @@ void GPIOB_ModeCfg(uint32_t pin, GPIOModeTypeDef mode) /********************************************************************* * @fn GPIOA_ITModeCfg * - * @brief GPIOA引脚中断模式配置 + * @brief GPIOA寮曡剼涓柇妯″紡閰嶇疆 * * @param pin - PA0-PA15 - * @param mode - 触发类型 + * @param mode - 瑙﹀彂绫诲瀷 * * @return none */ @@ -120,22 +120,22 @@ void GPIOA_ITModeCfg(uint32_t pin, GPIOITModeTpDef mode) { switch(mode) { - case GPIO_ITMode_LowLevel: // 低电平触发 + case GPIO_ITMode_LowLevel: // 浣庣數骞宠Е鍙 R16_PA_INT_MODE &= ~pin; R32_PA_CLR |= pin; break; - case GPIO_ITMode_HighLevel: // 高电平触发 + case GPIO_ITMode_HighLevel: // 楂樼數骞宠Е鍙 R16_PA_INT_MODE &= ~pin; R32_PA_OUT |= pin; break; - case GPIO_ITMode_FallEdge: // 下降沿触发 + case GPIO_ITMode_FallEdge: // 涓嬮檷娌胯Е鍙 R16_PA_INT_MODE |= pin; R32_PA_CLR |= pin; break; - case GPIO_ITMode_RiseEdge: // 上升沿触发 + case GPIO_ITMode_RiseEdge: // 涓婂崌娌胯Е鍙 R16_PA_INT_MODE |= pin; R32_PA_OUT |= pin; break; @@ -150,10 +150,10 @@ void GPIOA_ITModeCfg(uint32_t pin, GPIOITModeTpDef mode) /********************************************************************* * @fn GPIOB_ITModeCfg * - * @brief GPIOB引脚中断模式配置 + * @brief GPIOB寮曡剼涓柇妯″紡閰嶇疆 * * @param pin - PB0-PB23 - * @param mode - 触发类型 + * @param mode - 瑙﹀彂绫诲瀷 * * @return none */ @@ -162,22 +162,22 @@ void GPIOB_ITModeCfg(uint32_t pin, GPIOITModeTpDef mode) uint32_t Pin = pin | ((pin & (GPIO_Pin_22 | GPIO_Pin_23)) >> 14); switch(mode) { - case GPIO_ITMode_LowLevel: // 低电平触发 + case GPIO_ITMode_LowLevel: // 浣庣數骞宠Е鍙 R16_PB_INT_MODE &= ~Pin; R32_PB_CLR |= pin; break; - case GPIO_ITMode_HighLevel: // 高电平触发 + case GPIO_ITMode_HighLevel: // 楂樼數骞宠Е鍙 R16_PB_INT_MODE &= ~Pin; R32_PB_OUT |= pin; break; - case GPIO_ITMode_FallEdge: // 下降沿触发 + case GPIO_ITMode_FallEdge: // 涓嬮檷娌胯Е鍙 R16_PB_INT_MODE |= Pin; R32_PB_CLR |= pin; break; - case GPIO_ITMode_RiseEdge: // 上升沿触发 + case GPIO_ITMode_RiseEdge: // 涓婂崌娌胯Е鍙 R16_PB_INT_MODE |= Pin; R32_PB_OUT |= pin; break; @@ -192,9 +192,9 @@ void GPIOB_ITModeCfg(uint32_t pin, GPIOITModeTpDef mode) /********************************************************************* * @fn GPIOPinRemap * - * @brief 外设功能引脚映射 + * @brief 澶栬鍔熻兘寮曡剼鏄犲皠 * - * @param s - 是否使能映射 + * @param s - 鏄惁浣胯兘鏄犲皠 * @param perph - RB_RF_ANT_SW_EN - RF antenna switch control output on PA4/PA5/PA12/PA13/PA14/PA15 * RB_PIN_U0_INV - RXD0/RXD0_/TXD0/TXD0_ invert input/output * RB_PIN_INTX - INTX: INT24/INT25 PB8/PB9 -> INT24_/INT25_ PB22/PB23 @@ -228,12 +228,12 @@ void GPIOPinRemap(FunctionalState s, uint16_t perph) /********************************************************************* * @fn GPIOAGPPCfg * - * @brief 模拟外设GPIO引脚功能控制 + * @brief 妯℃嫙澶栬GPIO寮曡剼鍔熻兘鎺у埗 * - * @param s - ENABLE - 打开模拟外设功能,关闭数字功能 - * DISABLE - 启用数字功能,关闭模拟外设功能 - * @param perph - RB_PIN_USB_DP_PU - USB UD+引脚内部上拉电阻 - * RB_PIN_USB_IE - USB 引脚 + * @param s - ENABLE - 鎵撳紑妯℃嫙澶栬鍔熻兘锛屽叧闂暟瀛楀姛鑳 + * DISABLE - 鍚敤鏁板瓧鍔熻兘锛屽叧闂ā鎷熷璁惧姛鑳 + * @param perph - RB_PIN_USB_DP_PU - USB UD+寮曡剼鍐呴儴涓婃媺鐢甸樆 + * RB_PIN_USB_IE - USB 寮曡剼 * * @return none */ diff --git a/SRC/StdPeriphDriver/CH59x_lcd.c b/SRC/StdPeriphDriver/CH59x_lcd.c index 64564b6..7375add 100644 --- a/SRC/StdPeriphDriver/CH59x_lcd.c +++ b/SRC/StdPeriphDriver/CH59x_lcd.c @@ -15,15 +15,15 @@ /******************************************************************************* * Function Name : LCD_DefInit -* Description : LCD段式屏驱动初始化配置 -* Input : duty 占空比 -* bias 偏压比 +* Description : LCD娈靛紡灞忛┍鍔ㄥ垵濮嬪寲閰嶇疆 +* Input : duty 鍗犵┖姣 +* bias 鍋忓帇姣 * Return : None *******************************************************************************/ void LCD_Init(LCDDutyTypeDef duty, LCDBiasTypeDef bias) { - R32_PIN_CONFIG2 = 0xfffeff3f; // 关闭数字输入 - R16_PIN_ALTERNATE |= RB_DEBUG_EN; // 操作LCD时,需关闭debug + R32_PIN_CONFIG2 = 0xfffeff3f; // 鍏抽棴鏁板瓧杈撳叆 + R16_PIN_ALTERNATE |= RB_DEBUG_EN; // 鎿嶄綔LCD鏃讹紝闇鍏抽棴debug R32_LCD_CMD = 0x1ffff << 8; R32_LCD_CMD |= RB_LCD_SYS_EN | RB_LCD_ON | (LCD_CLK_128 << 5) | diff --git a/SRC/StdPeriphDriver/CH59x_pwm.c b/SRC/StdPeriphDriver/CH59x_pwm.c index eea875a..b37b7d3 100644 --- a/SRC/StdPeriphDriver/CH59x_pwm.c +++ b/SRC/StdPeriphDriver/CH59x_pwm.c @@ -15,7 +15,7 @@ /********************************************************************* * @fn PWMX_CycleCfg * - * @brief PWM4-PWM11周期配置 + * @brief PWM4-PWM11鍛ㄦ湡閰嶇疆 * * @param cyc - refer to PWMX_CycleTypeDef * @@ -57,9 +57,9 @@ void PWMX_CycleCfg(PWMX_CycleTypeDef cyc) /********************************************************************* * @fn PWMX_16bit_CycleCfg * - * @brief PWM4-PWM9 16位周期配置 + * @brief PWM4-PWM9 16浣嶅懆鏈熼厤缃 * - * @param cyc - 16位周期 + * @param cyc - 16浣嶅懆鏈 * * @return none */ @@ -72,7 +72,7 @@ void PWMX_16bit_CycleCfg(uint16_t cyc) /********************************************************************* * @fn PWMX_16bit_ACTOUT * - * @brief PWM4-PWM9 通道16位输出波形配置 + * @brief PWM4-PWM9 閫氶亾16浣嶈緭鍑烘尝褰㈤厤缃 * * @param ch - select channel of pwm, refer to channel of PWM define * @param da - effective pulse width @@ -113,7 +113,7 @@ void PWMX_16bit_ACTOUT(uint8_t ch, uint16_t da, PWMX_PolarTypeDef pr, Functional /********************************************************************* * @fn PWMX_ACTOUT * - * @brief PWM4-PWM11通道输出波形配置 + * @brief PWM4-PWM11閫氶亾杈撳嚭娉㈠舰閰嶇疆 * * @param ch - select channel of pwm, refer to channel of PWM define * @param da - effective pulse width @@ -147,13 +147,13 @@ void PWMX_ACTOUT(uint8_t ch, uint8_t da, PWMX_PolarTypeDef pr, FunctionalState s /********************************************************************* * @fn PWMX_AlterOutCfg * - * @brief PWM 交替输出模式配置 + * @brief PWM 浜ゆ浛杈撳嚭妯″紡閰嶇疆 * * @param ch - select group of PWM alternate output - * RB_PWM4_5_STAG_EN - PWM4 和 PWM5 通道交替输出 - * RB_PWM6_7_STAG_EN - PWM6 和 PWM7 通道交替输出 - * RB_PWM8_9_STAG_EN - PWM8 和 PWM9 通道交替输出 - * RB_PWM10_11_STAG_EN - PWM10 和 PWM11 通道交替输出 + * RB_PWM4_5_STAG_EN - PWM4 鍜 PWM5 閫氶亾浜ゆ浛杈撳嚭 + * RB_PWM6_7_STAG_EN - PWM6 鍜 PWM7 閫氶亾浜ゆ浛杈撳嚭 + * RB_PWM8_9_STAG_EN - PWM8 鍜 PWM9 閫氶亾浜ゆ浛杈撳嚭 + * RB_PWM10_11_STAG_EN - PWM10 鍜 PWM11 閫氶亾浜ゆ浛杈撳嚭 * @param s - control pwmx function, ENABLE or DISABLE * * @return none diff --git a/SRC/StdPeriphDriver/CH59x_pwr.c b/SRC/StdPeriphDriver/CH59x_pwr.c index 2d00d50..15a49c6 100644 --- a/SRC/StdPeriphDriver/CH59x_pwr.c +++ b/SRC/StdPeriphDriver/CH59x_pwr.c @@ -15,9 +15,9 @@ /********************************************************************* * @fn PWR_DCDCCfg * - * @brief 启用内部DC/DC电源,用于节约系统功耗 + * @brief 鍚敤鍐呴儴DC/DC鐢垫簮锛岀敤浜庤妭绾︾郴缁熷姛鑰 * - * @param s - 是否打开DCDC电源 + * @param s - 鏄惁鎵撳紑DCDC鐢垫簮 * * @return none */ @@ -30,7 +30,7 @@ void PWR_DCDCCfg(FunctionalState s) { adj &= ~RB_DCDC_CHARGE; - plan &= ~(RB_PWR_DCDC_EN | RB_PWR_DCDC_PRE); // 旁路 DC/DC + plan &= ~(RB_PWR_DCDC_EN | RB_PWR_DCDC_PRE); // 鏃佽矾 DC/DC sys_safe_access_enable(); R16_AUX_POWER_ADJ = adj; R16_POWER_PLAN = plan; @@ -60,9 +60,9 @@ void PWR_DCDCCfg(FunctionalState s) /********************************************************************* * @fn PWR_UnitModCfg * - * @brief 可控单元模块的电源控制 + * @brief 鍙帶鍗曞厓妯″潡鐨勭數婧愭帶鍒 * - * @param s - 是否打开电源 + * @param s - 鏄惁鎵撳紑鐢垫簮 * @param unit - please refer to unit of controllable power supply * * @return none @@ -71,11 +71,11 @@ void PWR_UnitModCfg(FunctionalState s, uint8_t unit) { uint8_t ck32k_cfg = R8_CK32K_CONFIG; - if(s == DISABLE) //关闭 + if(s == DISABLE) //鍏抽棴 { ck32k_cfg &= ~(unit & 0x03); } - else //打开 + else //鎵撳紑 { ck32k_cfg |= (unit & 0x03); } @@ -88,9 +88,9 @@ void PWR_UnitModCfg(FunctionalState s, uint8_t unit) /********************************************************************* * @fn PWR_PeriphClkCfg * - * @brief 外设时钟控制位 + * @brief 澶栬鏃堕挓鎺у埗浣 * - * @param s - 是否打开对应外设时钟 + * @param s - 鏄惁鎵撳紑瀵瑰簲澶栬鏃堕挓 * @param perph - please refer to Peripher CLK control bit define * * @return none @@ -116,14 +116,14 @@ void PWR_PeriphClkCfg(FunctionalState s, uint16_t perph) /********************************************************************* * @fn PWR_PeriphWakeUpCfg * - * @brief 睡眠唤醒源配置 + * @brief 鐫$湢鍞ら啋婧愰厤缃 * - * @param s - 是否打开此外设睡眠唤醒功能 - * @param perph - 需要设置的唤醒源 - * RB_SLP_USB_WAKE - USB 为唤醒源 - * RB_SLP_RTC_WAKE - RTC 为唤醒源 - * RB_SLP_GPIO_WAKE - GPIO 为唤醒源 - * RB_SLP_BAT_WAKE - BAT 为唤醒源 + * @param s - 鏄惁鎵撳紑姝ゅ璁剧潯鐪犲敜閱掑姛鑳 + * @param perph - 闇瑕佽缃殑鍞ら啋婧 + * RB_SLP_USB_WAKE - USB 涓哄敜閱掓簮 + * RB_SLP_RTC_WAKE - RTC 涓哄敜閱掓簮 + * RB_SLP_GPIO_WAKE - GPIO 涓哄敜閱掓簮 + * RB_SLP_BAT_WAKE - BAT 涓哄敜閱掓簮 * @param mode - refer to WakeUP_ModeypeDef * * @return none @@ -170,9 +170,9 @@ void PWR_PeriphWakeUpCfg(FunctionalState s, uint8_t perph, WakeUP_ModeypeDef mod /********************************************************************* * @fn PowerMonitor * - * @brief 电源监控 + * @brief 鐢垫簮鐩戞帶 * - * @param s - 是否打开此功能 + * @param s - 鏄惁鎵撳紑姝ゅ姛鑳 * @param vl - refer to VolM_LevelypeDef * * @return none @@ -216,7 +216,7 @@ void PowerMonitor(FunctionalState s, VolM_LevelypeDef vl) /********************************************************************* * @fn LowPower_Idle * - * @brief 低功耗-Idle模式 + * @brief 浣庡姛鑰-Idle妯″紡 * * @param none * @@ -226,7 +226,7 @@ __HIGH_CODE void LowPower_Idle(void) { FLASH_ROM_SW_RESET(); - R8_FLASH_CTRL = 0x04; //flash关闭 + R8_FLASH_CTRL = 0x04; //flash鍏抽棴 PFIC->SCTLR &= ~(1 << 2); // sleep __WFI(); @@ -237,7 +237,7 @@ void LowPower_Idle(void) /********************************************************************* * @fn LowPower_Halt * - * @brief 低功耗-Halt模式,此低功耗切到HSI/5时钟运行,唤醒后需要用户自己重新选择系统时钟源 + * @brief 浣庡姛鑰-Halt妯″紡锛屾浣庡姛鑰楀垏鍒癏SI/5鏃堕挓杩愯锛屽敜閱掑悗闇瑕佺敤鎴疯嚜宸遍噸鏂伴夋嫨绯荤粺鏃堕挓婧 * * @param none * @@ -249,14 +249,14 @@ void LowPower_Halt(void) uint8_t x32Kpw, x32Mpw; FLASH_ROM_SW_RESET(); - R8_FLASH_CTRL = 0x04; //flash关闭 + R8_FLASH_CTRL = 0x04; //flash鍏抽棴 x32Kpw = R8_XT32K_TUNE; x32Mpw = R8_XT32M_TUNE; - x32Mpw = (x32Mpw & 0xfc) | 0x03; // 150%额定电流 - x32Kpw = (x32Kpw & 0xfc) | 0x01; // LSE驱动电流降低到额定电流 + x32Mpw = (x32Mpw & 0xfc) | 0x03; // 150%棰濆畾鐢垫祦 + x32Kpw = (x32Kpw & 0xfc) | 0x01; // LSE椹卞姩鐢垫祦闄嶄綆鍒伴瀹氱數娴 sys_safe_access_enable(); - R8_BAT_DET_CTRL = 0; // 关闭电压监控 + R8_BAT_DET_CTRL = 0; // 鍏抽棴鐢靛帇鐩戞帶 sys_safe_access_disable(); sys_safe_access_enable(); R8_XT32K_TUNE = x32Kpw; @@ -277,14 +277,14 @@ void LowPower_Halt(void) /******************************************************************************* * Function Name : LowPower_Sleep -* Description : 低功耗-Sleep模式。 - 注意当主频为80M时,睡眠唤醒中断不可调用flash内代码,且退出此函数前需要加上30us延迟。 +* Description : 浣庡姛鑰-Sleep妯″紡銆 + 娉ㄦ剰褰撲富棰戜负80M鏃讹紝鐫$湢鍞ら啋涓柇涓嶅彲璋冪敤flash鍐呬唬鐮侊紝涓旈鍑烘鍑芥暟鍓嶉渶瑕佸姞涓30us寤惰繜銆 * Input : rm: - RB_PWR_RAM2K - 2K retention SRAM 供电 - RB_PWR_RAM24K - 24K main SRAM 供电 - RB_PWR_EXTEND - USB 和 BLE 单元保留区域供电 - RB_PWR_XROM - FlashROM 供电 - NULL - 以上单元都断电 + RB_PWR_RAM2K - 2K retention SRAM 渚涚數 + RB_PWR_RAM24K - 24K main SRAM 渚涚數 + RB_PWR_EXTEND - USB 鍜 BLE 鍗曞厓淇濈暀鍖哄煙渚涚數 + RB_PWR_XROM - FlashROM 渚涚數 + NULL - 浠ヤ笂鍗曞厓閮芥柇鐢 * Return : None *******************************************************************************/ __HIGH_CODE @@ -297,10 +297,10 @@ void LowPower_Sleep(uint16_t rm) GetMACAddress(MacAddr); x32Mpw = R8_XT32M_TUNE; - x32Mpw = (x32Mpw & 0xfc) | 0x03; // 150%额定电流 + x32Mpw = (x32Mpw & 0xfc) | 0x03; // 150%棰濆畾鐢垫祦 sys_safe_access_enable(); - R8_BAT_DET_CTRL = 0; // 关闭电压监控 + R8_BAT_DET_CTRL = 0; // 鍏抽棴鐢靛帇鐩戞帶 sys_safe_access_disable(); sys_safe_access_enable(); R8_XT32M_TUNE = x32Mpw; @@ -350,13 +350,13 @@ void LowPower_Sleep(uint16_t rm) /********************************************************************* * @fn LowPower_Shutdown * - * @brief 低功耗-Shutdown模式,此低功耗切到HSI/5时钟运行,唤醒后需要用户自己重新选择系统时钟源 - * @note 注意调用此函数,DCDC功能强制关闭,唤醒后可以手动再次打开 + * @brief 浣庡姛鑰-Shutdown妯″紡锛屾浣庡姛鑰楀垏鍒癏SI/5鏃堕挓杩愯锛屽敜閱掑悗闇瑕佺敤鎴疯嚜宸遍噸鏂伴夋嫨绯荤粺鏃堕挓婧 + * @note 娉ㄦ剰璋冪敤姝ゅ嚱鏁帮紝DCDC鍔熻兘寮哄埗鍏抽棴锛屽敜閱掑悗鍙互鎵嬪姩鍐嶆鎵撳紑 * - * @param rm - 供电模块选择 - * RB_PWR_RAM2K - 2K retention SRAM 供电 - * RB_PWR_RAM16K - 16K main SRAM 供电 - * NULL - 以上单元都断电 + * @param rm - 渚涚數妯″潡閫夋嫨 + * RB_PWR_RAM2K - 2K retention SRAM 渚涚數 + * RB_PWR_RAM16K - 16K main SRAM 渚涚數 + * NULL - 浠ヤ笂鍗曞厓閮芥柇鐢 * * @return none */ @@ -368,11 +368,11 @@ void LowPower_Shutdown(uint16_t rm) FLASH_ROM_SW_RESET(); x32Kpw = R8_XT32K_TUNE; x32Mpw = R8_XT32M_TUNE; - x32Mpw = (x32Mpw & 0xfc) | 0x03; // 150%额定电流 - x32Kpw = (x32Kpw & 0xfc) | 0x01; // LSE驱动电流降低到额定电流 + x32Mpw = (x32Mpw & 0xfc) | 0x03; // 150%棰濆畾鐢垫祦 + x32Kpw = (x32Kpw & 0xfc) | 0x01; // LSE椹卞姩鐢垫祦闄嶄綆鍒伴瀹氱數娴 sys_safe_access_enable(); - R8_BAT_DET_CTRL = 0; // 关闭电压监控 + R8_BAT_DET_CTRL = 0; // 鍏抽棴鐢靛帇鐩戞帶 sys_safe_access_disable(); sys_safe_access_enable(); R8_XT32K_TUNE = x32Kpw; diff --git a/SRC/StdPeriphDriver/CH59x_spi0.c b/SRC/StdPeriphDriver/CH59x_spi0.c index 74c41ac..1d76c34 100644 --- a/SRC/StdPeriphDriver/CH59x_spi0.c +++ b/SRC/StdPeriphDriver/CH59x_spi0.c @@ -15,7 +15,7 @@ /********************************************************************* * @fn SPI0_MasterDefInit * - * @brief 主机模式默认初始化:模式0+3线全双工+8MHz + * @brief 涓绘満妯″紡榛樿鍒濆鍖栵細妯″紡0+3绾垮叏鍙屽伐+8MHz * * @param none * @@ -23,19 +23,19 @@ */ void SPI0_MasterDefInit(void) { - R8_SPI0_CLOCK_DIV = 4; // 主频时钟4分频 + R8_SPI0_CLOCK_DIV = 4; // 涓婚鏃堕挓4鍒嗛 R8_SPI0_CTRL_MOD = RB_SPI_ALL_CLEAR; R8_SPI0_CTRL_MOD = RB_SPI_MOSI_OE | RB_SPI_SCK_OE; - R8_SPI0_CTRL_CFG |= RB_SPI_AUTO_IF; // 访问BUFFER/FIFO自动清除IF_BYTE_END标志 - R8_SPI0_CTRL_CFG &= ~RB_SPI_DMA_ENABLE; // 不启动DMA方式 + R8_SPI0_CTRL_CFG |= RB_SPI_AUTO_IF; // 璁块棶BUFFER/FIFO鑷姩娓呴櫎IF_BYTE_END鏍囧織 + R8_SPI0_CTRL_CFG &= ~RB_SPI_DMA_ENABLE; // 涓嶅惎鍔―MA鏂瑰紡 } /********************************************************************* * @fn SPI0_CLKCfg * - * @brief SPI0 基准时钟配置,= d*Tsys + * @brief SPI0 鍩哄噯鏃堕挓閰嶇疆锛= d*Tsys * - * @param c - 时钟分频系数 + * @param c - 鏃堕挓鍒嗛绯绘暟 * * @return none */ @@ -55,9 +55,9 @@ void SPI0_CLKCfg(uint8_t c) /********************************************************************* * @fn SPI0_DataMode * - * @brief 设置数据流模式 + * @brief 璁剧疆鏁版嵁娴佹ā寮 * - * @param m - 数据流模式 refer to ModeBitOrderTypeDef + * @param m - 鏁版嵁娴佹ā寮 refer to ModeBitOrderTypeDef * * @return none */ @@ -89,9 +89,9 @@ void SPI0_DataMode(ModeBitOrderTypeDef m) /********************************************************************* * @fn SPI0_MasterSendByte * - * @brief 发送单字节 (buffer) + * @brief 鍙戦佸崟瀛楄妭 (buffer) * - * @param d - 发送字节 + * @param d - 鍙戦佸瓧鑺 * * @return none */ @@ -105,16 +105,16 @@ void SPI0_MasterSendByte(uint8_t d) /********************************************************************* * @fn SPI0_MasterRecvByte * - * @brief 接收单字节 (buffer) + * @brief 鎺ユ敹鍗曞瓧鑺 (buffer) * * @param none * - * @return 接收到的字节 + * @return 鎺ユ敹鍒扮殑瀛楄妭 */ uint8_t SPI0_MasterRecvByte(void) { R8_SPI0_CTRL_MOD &= ~RB_SPI_FIFO_DIR; - R8_SPI0_BUFFER = 0xFF; // 启动传输 + R8_SPI0_BUFFER = 0xFF; // 鍚姩浼犺緭 while(!(R8_SPI0_INT_FLAG & RB_SPI_FREE)); return (R8_SPI0_BUFFER); } @@ -122,10 +122,10 @@ uint8_t SPI0_MasterRecvByte(void) /********************************************************************* * @fn SPI0_MasterTrans * - * @brief 使用FIFO连续发送多字节 + * @brief 浣跨敤FIFO杩炵画鍙戦佸瀛楄妭 * - * @param pbuf - 待发送的数据内容首地址 - * @param len - 请求发送的数据长度,最大4095 + * @param pbuf - 寰呭彂閫佺殑鏁版嵁鍐呭棣栧湴鍧 + * @param len - 璇锋眰鍙戦佺殑鏁版嵁闀垮害锛屾渶澶4095 * * @return none */ @@ -134,8 +134,8 @@ void SPI0_MasterTrans(uint8_t *pbuf, uint16_t len) uint16_t sendlen; sendlen = len; - R8_SPI0_CTRL_MOD &= ~RB_SPI_FIFO_DIR; // 设置数据方向为输出 - R16_SPI0_TOTAL_CNT = sendlen; // 设置要发送的数据长度 + R8_SPI0_CTRL_MOD &= ~RB_SPI_FIFO_DIR; // 璁剧疆鏁版嵁鏂瑰悜涓鸿緭鍑 + R16_SPI0_TOTAL_CNT = sendlen; // 璁剧疆瑕佸彂閫佺殑鏁版嵁闀垮害 R8_SPI0_INT_FLAG = RB_SPI_IF_CNT_END; while(sendlen) { @@ -146,16 +146,16 @@ void SPI0_MasterTrans(uint8_t *pbuf, uint16_t len) sendlen--; } } - while(R8_SPI0_FIFO_COUNT != 0); // 等待FIFO中的数据全部发送完成 + while(R8_SPI0_FIFO_COUNT != 0); // 绛夊緟FIFO涓殑鏁版嵁鍏ㄩ儴鍙戦佸畬鎴 } /********************************************************************* * @fn SPI0_MasterRecv * - * @brief 使用FIFO连续接收多字节 + * @brief 浣跨敤FIFO杩炵画鎺ユ敹澶氬瓧鑺 * - * @param pbuf - 待接收的数据首地址 - * @param len - 待接收的数据长度,最大4095 + * @param pbuf - 寰呮帴鏀剁殑鏁版嵁棣栧湴鍧 + * @param len - 寰呮帴鏀剁殑鏁版嵁闀垮害锛屾渶澶4095 * * @return none */ @@ -164,8 +164,8 @@ void SPI0_MasterRecv(uint8_t *pbuf, uint16_t len) uint16_t readlen; readlen = len; - R8_SPI0_CTRL_MOD |= RB_SPI_FIFO_DIR; // 设置数据方向为输入 - R16_SPI0_TOTAL_CNT = len; // 设置需要接收的数据长度,FIFO方向为输入长度不为0则会启动传输 */ + R8_SPI0_CTRL_MOD |= RB_SPI_FIFO_DIR; // 璁剧疆鏁版嵁鏂瑰悜涓鸿緭鍏 + R16_SPI0_TOTAL_CNT = len; // 璁剧疆闇瑕佹帴鏀剁殑鏁版嵁闀垮害锛孎IFO鏂瑰悜涓鸿緭鍏ラ暱搴︿笉涓0鍒欎細鍚姩浼犺緭 */ R8_SPI0_INT_FLAG = RB_SPI_IF_CNT_END; while(readlen) { @@ -181,10 +181,10 @@ void SPI0_MasterRecv(uint8_t *pbuf, uint16_t len) /********************************************************************* * @fn SPI0_MasterDMATrans * - * @brief DMA方式连续发送数据 + * @brief DMA鏂瑰紡杩炵画鍙戦佹暟鎹 * - * @param pbuf - 待发送数据起始地址,需要四字节对其 - * @param len - 待发送数据长度 + * @param pbuf - 寰呭彂閫佹暟鎹捣濮嬪湴鍧,闇瑕佸洓瀛楄妭瀵瑰叾 + * @param len - 寰呭彂閫佹暟鎹暱搴 * * @return none */ @@ -203,10 +203,10 @@ void SPI0_MasterDMATrans(uint8_t *pbuf, uint16_t len) /********************************************************************* * @fn SPI0_MasterDMARecv * - * @brief DMA方式连续接收数据 + * @brief DMA鏂瑰紡杩炵画鎺ユ敹鏁版嵁 * - * @param pbuf - 待接收数据存放起始地址,需要四字节对其 - * @param len - 待接收数据长度 + * @param pbuf - 寰呮帴鏀舵暟鎹瓨鏀捐捣濮嬪湴鍧,闇瑕佸洓瀛楄妭瀵瑰叾 + * @param len - 寰呮帴鏀舵暟鎹暱搴 * * @return none */ @@ -225,7 +225,7 @@ void SPI0_MasterDMARecv(uint8_t *pbuf, uint16_t len) /********************************************************************* * @fn SPI0_SlaveInit * - * @brief 设备模式默认初始化,建议设置MISO的GPIO对应为输入模式 + * @brief 璁惧妯″紡榛樿鍒濆鍖栵紝寤鸿璁剧疆MISO鐨凣PIO瀵瑰簲涓鸿緭鍏ユā寮 * * @return none */ @@ -239,9 +239,9 @@ void SPI0_SlaveInit(void) /********************************************************************* * @fn SPI0_SlaveRecvByte * - * @brief 从机模式,接收一字节数据 + * @brief 浠庢満妯″紡锛屾帴鏀朵竴瀛楄妭鏁版嵁 * - * @return 接收到数据 + * @return 鎺ユ敹鍒版暟鎹 */ uint8_t SPI0_SlaveRecvByte(void) { @@ -253,9 +253,9 @@ uint8_t SPI0_SlaveRecvByte(void) /********************************************************************* * @fn SPI0_SlaveSendByte * - * @brief 从机模式,发送一字节数据 + * @brief 浠庢満妯″紡锛屽彂閫佷竴瀛楄妭鏁版嵁 * - * @param d - 待发送数据 + * @param d - 寰呭彂閫佹暟鎹 * * @return none */ @@ -263,16 +263,16 @@ void SPI0_SlaveSendByte(uint8_t d) { R8_SPI0_CTRL_MOD &= ~RB_SPI_FIFO_DIR; R8_SPI0_FIFO = d; - while(R8_SPI0_FIFO_COUNT != 0); // 等待发送完成 + while(R8_SPI0_FIFO_COUNT != 0); // 绛夊緟鍙戦佸畬鎴 } /********************************************************************* * @fn SPI0_SlaveRecv * - * @brief 从机模式,接收多字节数据 + * @brief 浠庢満妯″紡锛屾帴鏀跺瀛楄妭鏁版嵁 * - * @param pbuf - 接收收数据存放起始地址 - * @param len - 请求接收数据长度 + * @param pbuf - 鎺ユ敹鏀舵暟鎹瓨鏀捐捣濮嬪湴鍧 + * @param len - 璇锋眰鎺ユ敹鏁版嵁闀垮害 * * @return none */ @@ -298,10 +298,10 @@ void SPI0_SlaveRecv(uint8_t *pbuf, uint16_t len) /********************************************************************* * @fn SPI0_SlaveTrans * - * @brief 从机模式,发送多字节数据 + * @brief 浠庢満妯″紡锛屽彂閫佸瀛楄妭鏁版嵁 * - * @param pbuf - 待发送的数据内容首地址 - * @param len - 请求发送的数据长度,最大4095 + * @param pbuf - 寰呭彂閫佺殑鏁版嵁鍐呭棣栧湴鍧 + * @param len - 璇锋眰鍙戦佺殑鏁版嵁闀垮害锛屾渶澶4095 * * @return none */ @@ -311,7 +311,7 @@ void SPI0_SlaveTrans(uint8_t *pbuf, uint16_t len) uint16_t sendlen; sendlen = len; - R8_SPI0_CTRL_MOD &= ~RB_SPI_FIFO_DIR; // 设置数据方向为输出 + R8_SPI0_CTRL_MOD &= ~RB_SPI_FIFO_DIR; // 璁剧疆鏁版嵁鏂瑰悜涓鸿緭鍑 R8_SPI0_INT_FLAG = RB_SPI_IF_CNT_END; while(sendlen) { @@ -322,16 +322,16 @@ void SPI0_SlaveTrans(uint8_t *pbuf, uint16_t len) sendlen--; } } - while(R8_SPI0_FIFO_COUNT != 0); // 等待FIFO中的数据全部发送完成 + while(R8_SPI0_FIFO_COUNT != 0); // 绛夊緟FIFO涓殑鏁版嵁鍏ㄩ儴鍙戦佸畬鎴 } /********************************************************************* * @fn SPI0_SlaveDMARecv * - * @brief DMA方式连续接收数据 + * @brief DMA鏂瑰紡杩炵画鎺ユ敹鏁版嵁 * - * @param pbuf - 待接收数据存放起始地址,需要四字节对其 - * @param len - 待接收数据长度 + * @param pbuf - 寰呮帴鏀舵暟鎹瓨鏀捐捣濮嬪湴鍧,闇瑕佸洓瀛楄妭瀵瑰叾 + * @param len - 寰呮帴鏀舵暟鎹暱搴 * * @return none */ @@ -350,10 +350,10 @@ void SPI0_SlaveDMARecv(uint8_t *pbuf, uint16_t len) /********************************************************************* * @fn SPI0_SlaveDMATrans * - * @brief DMA方式连续发送数据 + * @brief DMA鏂瑰紡杩炵画鍙戦佹暟鎹 * - * @param pbuf - 待发送数据起始地址,需要四字节对其 - * @param len - 待发送数据长度 + * @param pbuf - 寰呭彂閫佹暟鎹捣濮嬪湴鍧,闇瑕佸洓瀛楄妭瀵瑰叾 + * @param len - 寰呭彂閫佹暟鎹暱搴 * * @return none */ diff --git a/SRC/StdPeriphDriver/CH59x_sys.c b/SRC/StdPeriphDriver/CH59x_sys.c index da44a2e..68f7b66 100644 --- a/SRC/StdPeriphDriver/CH59x_sys.c +++ b/SRC/StdPeriphDriver/CH59x_sys.c @@ -15,9 +15,9 @@ /********************************************************************* * @fn SetSysClock * - * @brief 配置系统运行时钟 + * @brief 閰嶇疆绯荤粺杩愯鏃堕挓 * - * @param sc - 系统时钟源选择 refer to SYS_CLKTypeDef + * @param sc - 绯荤粺鏃堕挓婧愰夋嫨 refer to SYS_CLKTypeDef * * @return none */ @@ -61,7 +61,7 @@ void SetSysClock(SYS_CLKTypeDef sc) R32_CLK_SYS_CFG |= RB_CLK_SYS_MOD; sys_safe_access_disable(); } - //更改FLASH clk的驱动能力 + //鏇存敼FLASH clk鐨勯┍鍔ㄨ兘鍔 sys_safe_access_enable(); R8_PLL_CONFIG |= 1 << 7; sys_safe_access_disable(); @@ -70,7 +70,7 @@ void SetSysClock(SYS_CLKTypeDef sc) /********************************************************************* * @fn GetSysClock * - * @brief 获取当前系统时钟 + * @brief 鑾峰彇褰撳墠绯荤粺鏃堕挓 * * @param none * @@ -82,15 +82,15 @@ uint32_t GetSysClock(void) rev = R32_CLK_SYS_CFG & 0xff; if((rev & 0x40) == (0 << 6)) - { // 32M进行分频 + { // 32M杩涜鍒嗛 return (32000000 / (rev & 0x1f)); } else if((rev & RB_CLK_SYS_MOD) == (1 << 6)) - { // PLL进行分频 + { // PLL杩涜鍒嗛 return (480000000 / (rev & 0x1f)); } else - { // 32K做主频 + { // 32K鍋氫富棰 return (32000); } } @@ -98,11 +98,11 @@ uint32_t GetSysClock(void) /********************************************************************* * @fn SYS_GetInfoSta * - * @brief 获取当前系统信息状态 + * @brief 鑾峰彇褰撳墠绯荤粺淇℃伅鐘舵 * * @param i - refer to SYS_InfoStaTypeDef * - * @return 是否开启 + * @return 鏄惁寮鍚 */ uint8_t SYS_GetInfoSta(SYS_InfoStaTypeDef i) { @@ -119,7 +119,7 @@ uint8_t SYS_GetInfoSta(SYS_InfoStaTypeDef i) /********************************************************************* * @fn SYS_ResetExecute * - * @brief 执行系统软件复位 + * @brief 鎵ц绯荤粺杞欢澶嶄綅 * * @param none * @@ -137,9 +137,9 @@ void SYS_ResetExecute(void) /********************************************************************* * @fn SYS_DisableAllIrq * - * @brief 关闭所有中断,并保留当前中断值 + * @brief 鍏抽棴鎵鏈変腑鏂紝骞朵繚鐣欏綋鍓嶄腑鏂 * - * @param pirqv - 当前保留中断值 + * @param pirqv - 褰撳墠淇濈暀涓柇鍊 * * @return none */ @@ -153,9 +153,9 @@ void SYS_DisableAllIrq(uint32_t *pirqv) /********************************************************************* * @fn SYS_RecoverIrq * - * @brief 恢复之前关闭的中断值 + * @brief 鎭㈠涔嬪墠鍏抽棴鐨勪腑鏂 * - * @param irq_status - 当前保留中断值 + * @param irq_status - 褰撳墠淇濈暀涓柇鍊 * * @return none */ @@ -168,11 +168,11 @@ void SYS_RecoverIrq(uint32_t irq_status) /********************************************************************* * @fn SYS_GetSysTickCnt * - * @brief 获取当前系统(SYSTICK)计数值 + * @brief 鑾峰彇褰撳墠绯荤粺(SYSTICK)璁℃暟鍊 * * @param none * - * @return 当前计数值 + * @return 褰撳墠璁℃暟鍊 */ uint32_t SYS_GetSysTickCnt(void) { @@ -185,9 +185,9 @@ uint32_t SYS_GetSysTickCnt(void) /********************************************************************* * @fn WWDG_ITCfg * - * @brief 看门狗定时器溢出中断使能 + * @brief 鐪嬮棬鐙楀畾鏃跺櫒婧㈠嚭涓柇浣胯兘 * - * @param s - 溢出是否中断 + * @param s - 婧㈠嚭鏄惁涓柇 * * @return none */ @@ -212,9 +212,9 @@ void WWDG_ITCfg(FunctionalState s) /********************************************************************* * @fn WWDG_ResetCfg * - * @brief 看门狗定时器复位功能 + * @brief 鐪嬮棬鐙楀畾鏃跺櫒澶嶄綅鍔熻兘 * - * @param s - 溢出是否复位 + * @param s - 婧㈠嚭鏄惁澶嶄綅 * * @return none */ @@ -239,7 +239,7 @@ void WWDG_ResetCfg(FunctionalState s) /********************************************************************* * @fn WWDG_ClearFlag * - * @brief 清除看门狗中断标志,重新加载计数值也可清除 + * @brief 娓呴櫎鐪嬮棬鐙椾腑鏂爣蹇楋紝閲嶆柊鍔犺浇璁℃暟鍊间篃鍙竻闄 * * @param none * @@ -255,7 +255,7 @@ void WWDG_ClearFlag(void) /********************************************************************* * @fn HardFault_Handler * - * @brief 硬件错误中断,进入后执行复位,复位类型为上电复位 + * @brief 纭欢閿欒涓柇锛岃繘鍏ュ悗鎵ц澶嶄綅锛屽浣嶇被鍨嬩负涓婄數澶嶄綅 * * @param none * @@ -279,9 +279,9 @@ void HardFault_Handler(void) /********************************************************************* * @fn mDelayuS * - * @brief uS 延时 + * @brief uS 寤舵椂 * - * @param t - 时间参数 + * @param t - 鏃堕棿鍙傛暟 * * @return none */ @@ -323,9 +323,9 @@ void mDelayuS(uint16_t t) /********************************************************************* * @fn mDelaymS * - * @brief mS 延时 + * @brief mS 寤舵椂 * - * @param t - 时间参数 + * @param t - 鏃堕棿鍙傛暟 * * @return none */ @@ -347,17 +347,17 @@ int _write(int fd, char *buf, int size) for(i = 0; i < size; i++) { #if DEBUG == Debug_UART0 - while(R8_UART0_TFC == UART_FIFO_SIZE); /* 等待数据发送 */ - R8_UART0_THR = *buf++; /* 发送数据 */ + while(R8_UART0_TFC == UART_FIFO_SIZE); /* 绛夊緟鏁版嵁鍙戦 */ + R8_UART0_THR = *buf++; /* 鍙戦佹暟鎹 */ #elif DEBUG == Debug_UART1 - while(R8_UART1_TFC == UART_FIFO_SIZE); /* 等待数据发送 */ - R8_UART1_THR = *buf++; /* 发送数据 */ + while(R8_UART1_TFC == UART_FIFO_SIZE); /* 绛夊緟鏁版嵁鍙戦 */ + R8_UART1_THR = *buf++; /* 鍙戦佹暟鎹 */ #elif DEBUG == Debug_UART2 - while(R8_UART2_TFC == UART_FIFO_SIZE); /* 等待数据发送 */ - R8_UART2_THR = *buf++; /* 发送数据 */ + while(R8_UART2_TFC == UART_FIFO_SIZE); /* 绛夊緟鏁版嵁鍙戦 */ + R8_UART2_THR = *buf++; /* 鍙戦佹暟鎹 */ #elif DEBUG == Debug_UART3 - while(R8_UART3_TFC == UART_FIFO_SIZE); /* 等待数据发送 */ - R8_UART3_THR = *buf++; /* 发送数据 */ + while(R8_UART3_TFC == UART_FIFO_SIZE); /* 绛夊緟鏁版嵁鍙戦 */ + R8_UART3_THR = *buf++; /* 鍙戦佹暟鎹 */ #endif } return size; diff --git a/SRC/StdPeriphDriver/CH59x_timer0.c b/SRC/StdPeriphDriver/CH59x_timer0.c index e243c78..b401212 100644 --- a/SRC/StdPeriphDriver/CH59x_timer0.c +++ b/SRC/StdPeriphDriver/CH59x_timer0.c @@ -15,9 +15,9 @@ /********************************************************************* * @fn TMR0_TimerInit * - * @brief 定时功能初始化 + * @brief 瀹氭椂鍔熻兘鍒濆鍖 * - * @param t - 定时时间,基于当前系统时钟Tsys, 最长定时周期 67108864 + * @param t - 瀹氭椂鏃堕棿锛屽熀浜庡綋鍓嶇郴缁熸椂閽烼sys, 鏈闀垮畾鏃跺懆鏈 67108864 * * @return none */ @@ -31,9 +31,9 @@ void TMR0_TimerInit(uint32_t t) /********************************************************************* * @fn TMR0_EXTSingleCounterInit * - * @brief 边沿计数功能初始化 + * @brief 杈规部璁℃暟鍔熻兘鍒濆鍖 * - * @param cap - 采集计数类型 + * @param cap - 閲囬泦璁℃暟绫诲瀷 * * @return none */ @@ -46,7 +46,7 @@ void TMR0_EXTSingleCounterInit(CapModeTypeDef cap) /********************************************************************* * @fn TMR0_PWMInit * - * @brief PWM 输出初始化 + * @brief PWM 杈撳嚭鍒濆鍖 * * @param pr - select wave polar, refer to PWMX_PolarTypeDef * @param ts - set pwm repeat times, refer to PWM_RepeatTsTypeDef @@ -62,7 +62,7 @@ void TMR0_PWMInit(PWMX_PolarTypeDef pr, PWM_RepeatTsTypeDef ts) /********************************************************************* * @fn TMR0_CapInit * - * @brief 外部信号捕捉功能初始化 + * @brief 澶栭儴淇″彿鎹曟崏鍔熻兘鍒濆鍖 * * @param cap - select capture mode, refer to CapModeTypeDef * diff --git a/SRC/StdPeriphDriver/CH59x_timer1.c b/SRC/StdPeriphDriver/CH59x_timer1.c index d673872..ccc0f0f 100644 --- a/SRC/StdPeriphDriver/CH59x_timer1.c +++ b/SRC/StdPeriphDriver/CH59x_timer1.c @@ -15,9 +15,9 @@ /********************************************************************* * @fn TMR1_TimerInit * - * @brief 定时功能初始化 + * @brief 瀹氭椂鍔熻兘鍒濆鍖 * - * @param t - 定时时间,基于当前系统时钟Tsys, 最长定时周期 67108864 + * @param t - 瀹氭椂鏃堕棿锛屽熀浜庡綋鍓嶇郴缁熸椂閽烼sys, 鏈闀垮畾鏃跺懆鏈 67108864 * * @return none */ @@ -31,9 +31,9 @@ void TMR1_TimerInit(uint32_t t) /********************************************************************* * @fn TMR1_EXTSingleCounterInit * - * @brief 边沿计数功能初始化 + * @brief 杈规部璁℃暟鍔熻兘鍒濆鍖 * - * @param cap - 采集计数类型 + * @param cap - 閲囬泦璁℃暟绫诲瀷 * * @return none */ @@ -46,7 +46,7 @@ void TMR1_EXTSingleCounterInit(CapModeTypeDef cap) /********************************************************************* * @fn TMR1_PWMInit * - * @brief PWM 输出初始化 + * @brief PWM 杈撳嚭鍒濆鍖 * * @param pr - select wave polar, refer to PWMX_PolarTypeDef * @param ts - set pwm repeat times, refer to PWM_RepeatTsTypeDef @@ -62,7 +62,7 @@ void TMR1_PWMInit(PWMX_PolarTypeDef pr, PWM_RepeatTsTypeDef ts) /********************************************************************* * @fn TMR1_CapInit * - * @brief 外部信号捕捉功能初始化 + * @brief 澶栭儴淇″彿鎹曟崏鍔熻兘鍒濆鍖 * * @param cap - select capture mode, refer to CapModeTypeDef * @@ -77,12 +77,12 @@ void TMR1_CapInit(CapModeTypeDef cap) /********************************************************************* * @fn TMR1_DMACfg * - * @brief 配置DMA功能 + * @brief 閰嶇疆DMA鍔熻兘 * - * @param s - 是否打开DMA功能 - * @param startAddr - DMA 起始地址 - * @param endAddr - DMA 结束地址 - * @param m - 配置DMA模式 + * @param s - 鏄惁鎵撳紑DMA鍔熻兘 + * @param startAddr - DMA 璧峰鍦板潃 + * @param endAddr - DMA 缁撴潫鍦板潃 + * @param m - 閰嶇疆DMA妯″紡 * * @return none */ diff --git a/SRC/StdPeriphDriver/CH59x_timer2.c b/SRC/StdPeriphDriver/CH59x_timer2.c index 0ced8e6..7442bc1 100644 --- a/SRC/StdPeriphDriver/CH59x_timer2.c +++ b/SRC/StdPeriphDriver/CH59x_timer2.c @@ -15,9 +15,9 @@ /********************************************************************* * @fn TMR2_TimerInit * - * @brief 定时功能初始化 + * @brief 瀹氭椂鍔熻兘鍒濆鍖 * - * @param t - 定时时间,基于当前系统时钟Tsys, 最长定时周期 67108864 + * @param t - 瀹氭椂鏃堕棿锛屽熀浜庡綋鍓嶇郴缁熸椂閽烼sys, 鏈闀垮畾鏃跺懆鏈 67108864 * * @return none */ @@ -31,9 +31,9 @@ void TMR2_TimerInit(uint32_t t) /********************************************************************* * @fn TMR2_EXTSingleCounterInit * - * @brief 边沿计数功能初始化 + * @brief 杈规部璁℃暟鍔熻兘鍒濆鍖 * - * @param cap - 采集计数类型 + * @param cap - 閲囬泦璁℃暟绫诲瀷 * * @return none */ @@ -46,7 +46,7 @@ void TMR2_EXTSingleCounterInit(CapModeTypeDef cap) /********************************************************************* * @fn TMR2_PWMInit * - * @brief PWM 输出初始化 + * @brief PWM 杈撳嚭鍒濆鍖 * * @param pr - select wave polar, refer to PWMX_PolarTypeDef * @param ts - set pwm repeat times, refer to PWM_RepeatTsTypeDef @@ -62,7 +62,7 @@ void TMR2_PWMInit(PWMX_PolarTypeDef pr, PWM_RepeatTsTypeDef ts) /********************************************************************* * @fn TMR2_CapInit * - * @brief 外部信号捕捉功能初始化 + * @brief 澶栭儴淇″彿鎹曟崏鍔熻兘鍒濆鍖 * * @param cap - select capture mode, refer to CapModeTypeDef * @@ -77,12 +77,12 @@ void TMR2_CapInit(CapModeTypeDef cap) /********************************************************************* * @fn TMR2_DMACfg * - * @brief 配置DMA功能 + * @brief 閰嶇疆DMA鍔熻兘 * - * @param s - 是否打开DMA功能 - * @param startAddr - DMA 起始地址 - * @param endAddr - DMA 结束地址 - * @param m - 配置DMA模式 + * @param s - 鏄惁鎵撳紑DMA鍔熻兘 + * @param startAddr - DMA 璧峰鍦板潃 + * @param endAddr - DMA 缁撴潫鍦板潃 + * @param m - 閰嶇疆DMA妯″紡 * * @return none */ diff --git a/SRC/StdPeriphDriver/CH59x_timer3.c b/SRC/StdPeriphDriver/CH59x_timer3.c index 31ec94f..da9e153 100644 --- a/SRC/StdPeriphDriver/CH59x_timer3.c +++ b/SRC/StdPeriphDriver/CH59x_timer3.c @@ -15,9 +15,9 @@ /********************************************************************* * @fn TMR3_TimerInit * - * @brief 定时功能初始化 + * @brief 瀹氭椂鍔熻兘鍒濆鍖 * - * @param t - 定时时间,基于当前系统时钟Tsys, 最长定时周期 67108864 + * @param t - 瀹氭椂鏃堕棿锛屽熀浜庡綋鍓嶇郴缁熸椂閽烼sys, 鏈闀垮畾鏃跺懆鏈 67108864 * * @return none */ @@ -31,9 +31,9 @@ void TMR3_TimerInit(uint32_t t) /********************************************************************* * @fn TMR3_EXTSingleCounterInit * - * @brief 边沿计数功能初始化 + * @brief 杈规部璁℃暟鍔熻兘鍒濆鍖 * - * @param cap - 采集计数类型 + * @param cap - 閲囬泦璁℃暟绫诲瀷 * * @return none */ @@ -46,7 +46,7 @@ void TMR3_EXTSingleCounterInit(CapModeTypeDef cap) /********************************************************************* * @fn TMR3_PWMInit * - * @brief PWM 输出初始化 + * @brief PWM 杈撳嚭鍒濆鍖 * * @param pr - select wave polar, refer to PWMX_PolarTypeDef * @param ts - set pwm repeat times, refer to PWM_RepeatTsTypeDef @@ -62,7 +62,7 @@ void TMR3_PWMInit(PWMX_PolarTypeDef pr, PWM_RepeatTsTypeDef ts) /********************************************************************* * @fn TMR3_CapInit * - * @brief 外部信号捕捉功能初始化 + * @brief 澶栭儴淇″彿鎹曟崏鍔熻兘鍒濆鍖 * * @param cap - select capture mode, refer to CapModeTypeDef * diff --git a/SRC/StdPeriphDriver/CH59x_uart0.c b/SRC/StdPeriphDriver/CH59x_uart0.c index 1ef9b65..1a4a8c7 100644 --- a/SRC/StdPeriphDriver/CH59x_uart0.c +++ b/SRC/StdPeriphDriver/CH59x_uart0.c @@ -15,7 +15,7 @@ /********************************************************************* * @fn UART0_DefInit * - * @brief 串口默认初始化配置 + * @brief 涓插彛榛樿鍒濆鍖栭厤缃 * * @param none * @@ -24,7 +24,7 @@ void UART0_DefInit(void) { UART0_BaudRateCfg(115200); - R8_UART0_FCR = (2 << 6) | RB_FCR_TX_FIFO_CLR | RB_FCR_RX_FIFO_CLR | RB_FCR_FIFO_EN; // FIFO打开,触发点4字节 + R8_UART0_FCR = (2 << 6) | RB_FCR_TX_FIFO_CLR | RB_FCR_RX_FIFO_CLR | RB_FCR_FIFO_EN; // FIFO鎵撳紑锛岃Е鍙戠偣4瀛楄妭 R8_UART0_LCR = RB_LCR_WORD_SZ; R8_UART0_IER = RB_IER_TXD_EN; R8_UART0_DIV = 1; @@ -33,9 +33,9 @@ void UART0_DefInit(void) /********************************************************************* * @fn UART0_BaudRateCfg * - * @brief 串口波特率配置 + * @brief 涓插彛娉㈢壒鐜囬厤缃 * - * @param baudrate - 波特率 + * @param baudrate - 娉㈢壒鐜 * * @return none */ @@ -51,9 +51,9 @@ void UART0_BaudRateCfg(uint32_t baudrate) /********************************************************************* * @fn UART0_ByteTrigCfg * - * @brief 串口字节触发中断配置 + * @brief 涓插彛瀛楄妭瑙﹀彂涓柇閰嶇疆 * - * @param b - 触发字节数 refer to UARTByteTRIGTypeDef + * @param b - 瑙﹀彂瀛楄妭鏁 refer to UARTByteTRIGTypeDef * * @return none */ @@ -65,14 +65,14 @@ void UART0_ByteTrigCfg(UARTByteTRIGTypeDef b) /********************************************************************* * @fn UART0_INTCfg * - * @brief 串口中断配置 + * @brief 涓插彛涓柇閰嶇疆 * - * @param s - 中断控制状态,是否使能相应中断 - * @param i - 中断类型 - * RB_IER_MODEM_CHG - 调制解调器输入状态变化中断使能位(仅 UART0 支持) - * RB_IER_LINE_STAT - 接收线路状态中断 - * RB_IER_THR_EMPTY - 发送保持寄存器空中断 - * RB_IER_RECV_RDY - 接收数据中断 + * @param s - 涓柇鎺у埗鐘舵侊紝鏄惁浣胯兘鐩稿簲涓柇 + * @param i - 涓柇绫诲瀷 + * RB_IER_MODEM_CHG - 璋冨埗瑙h皟鍣ㄨ緭鍏ョ姸鎬佸彉鍖栦腑鏂娇鑳戒綅锛堜粎 UART0 鏀寔锛 + * RB_IER_LINE_STAT - 鎺ユ敹绾胯矾鐘舵佷腑鏂 + * RB_IER_THR_EMPTY - 鍙戦佷繚鎸佸瘎瀛樺櫒绌轰腑鏂 + * RB_IER_RECV_RDY - 鎺ユ敹鏁版嵁涓柇 * * @return none */ @@ -92,7 +92,7 @@ void UART0_INTCfg(FunctionalState s, uint8_t i) /********************************************************************* * @fn UART0_Reset * - * @brief 串口软件复位 + * @brief 涓插彛杞欢澶嶄綅 * * @param none * @@ -106,10 +106,10 @@ void UART0_Reset(void) /********************************************************************* * @fn UART0_SendString * - * @brief 串口多字节发送 + * @brief 涓插彛澶氬瓧鑺傚彂閫 * - * @param buf - 待发送的数据内容首地址 - * @param l - 待发送的数据长度 + * @param buf - 寰呭彂閫佺殑鏁版嵁鍐呭棣栧湴鍧 + * @param l - 寰呭彂閫佺殑鏁版嵁闀垮害 * * @return none */ @@ -130,11 +130,11 @@ void UART0_SendString(uint8_t *buf, uint16_t l) /********************************************************************* * @fn UART0_RecvString * - * @brief 串口读取多字节 + * @brief 涓插彛璇诲彇澶氬瓧鑺 * - * @param buf - 读取数据存放缓存区首地址 + * @param buf - 璇诲彇鏁版嵁瀛樻斁缂撳瓨鍖洪鍦板潃 * - * @return 读取数据长度 + * @return 璇诲彇鏁版嵁闀垮害 */ uint16_t UART0_RecvString(uint8_t *buf) { diff --git a/SRC/StdPeriphDriver/CH59x_uart1.c b/SRC/StdPeriphDriver/CH59x_uart1.c index 66d9e9f..8655bc0 100644 --- a/SRC/StdPeriphDriver/CH59x_uart1.c +++ b/SRC/StdPeriphDriver/CH59x_uart1.c @@ -15,7 +15,7 @@ /********************************************************************* * @fn UART1_DefInit * - * @brief 串口默认初始化配置 + * @brief 涓插彛榛樿鍒濆鍖栭厤缃 * * @param none * @@ -24,7 +24,7 @@ void UART1_DefInit(void) { UART1_BaudRateCfg(115200); - R8_UART1_FCR = (2 << 6) | RB_FCR_TX_FIFO_CLR | RB_FCR_RX_FIFO_CLR | RB_FCR_FIFO_EN; // FIFO打开,触发点4字节 + R8_UART1_FCR = (2 << 6) | RB_FCR_TX_FIFO_CLR | RB_FCR_RX_FIFO_CLR | RB_FCR_FIFO_EN; // FIFO鎵撳紑锛岃Е鍙戠偣4瀛楄妭 R8_UART1_LCR = RB_LCR_WORD_SZ; R8_UART1_IER = RB_IER_TXD_EN; R8_UART1_DIV = 1; @@ -33,9 +33,9 @@ void UART1_DefInit(void) /********************************************************************* * @fn UART1_BaudRateCfg * - * @brief 串口波特率配置 + * @brief 涓插彛娉㈢壒鐜囬厤缃 * - * @param baudrate - 波特率 + * @param baudrate - 娉㈢壒鐜 * * @return none */ @@ -51,9 +51,9 @@ void UART1_BaudRateCfg(uint32_t baudrate) /********************************************************************* * @fn UART1_ByteTrigCfg * - * @brief 串口字节触发中断配置 + * @brief 涓插彛瀛楄妭瑙﹀彂涓柇閰嶇疆 * - * @param b - 触发字节数 refer to UARTByteTRIGTypeDef + * @param b - 瑙﹀彂瀛楄妭鏁 refer to UARTByteTRIGTypeDef * * @return none */ @@ -65,14 +65,14 @@ void UART1_ByteTrigCfg(UARTByteTRIGTypeDef b) /********************************************************************* * @fn UART1_INTCfg * - * @brief 串口中断配置 + * @brief 涓插彛涓柇閰嶇疆 * - * @param s - 中断控制状态,是否使能相应中断 - * @param i - 中断类型 - * RB_IER_MODEM_CHG - 调制解调器输入状态变化中断使能位(仅 UART0 支持) - * RB_IER_LINE_STAT - 接收线路状态中断 - * RB_IER_THR_EMPTY - 发送保持寄存器空中断 - * RB_IER_RECV_RDY - 接收数据中断 + * @param s - 涓柇鎺у埗鐘舵侊紝鏄惁浣胯兘鐩稿簲涓柇 + * @param i - 涓柇绫诲瀷 + * RB_IER_MODEM_CHG - 璋冨埗瑙h皟鍣ㄨ緭鍏ョ姸鎬佸彉鍖栦腑鏂娇鑳戒綅锛堜粎 UART0 鏀寔锛 + * RB_IER_LINE_STAT - 鎺ユ敹绾胯矾鐘舵佷腑鏂 + * RB_IER_THR_EMPTY - 鍙戦佷繚鎸佸瘎瀛樺櫒绌轰腑鏂 + * RB_IER_RECV_RDY - 鎺ユ敹鏁版嵁涓柇 * * @return none */ @@ -92,7 +92,7 @@ void UART1_INTCfg(FunctionalState s, uint8_t i) /********************************************************************* * @fn UART1_Reset * - * @brief 串口软件复位 + * @brief 涓插彛杞欢澶嶄綅 * * @param none * @@ -106,10 +106,10 @@ void UART1_Reset(void) /********************************************************************* * @fn UART1_SendString * - * @brief 串口多字节发送 + * @brief 涓插彛澶氬瓧鑺傚彂閫 * - * @param buf - 待发送的数据内容首地址 - * @param l - 待发送的数据长度 + * @param buf - 寰呭彂閫佺殑鏁版嵁鍐呭棣栧湴鍧 + * @param l - 寰呭彂閫佺殑鏁版嵁闀垮害 * * @return none */ @@ -130,11 +130,11 @@ void UART1_SendString(uint8_t *buf, uint16_t l) /********************************************************************* * @fn UART1_RecvString * - * @brief 串口读取多字节 + * @brief 涓插彛璇诲彇澶氬瓧鑺 * - * @param buf - 读取数据存放缓存区首地址 + * @param buf - 璇诲彇鏁版嵁瀛樻斁缂撳瓨鍖洪鍦板潃 * - * @return 读取数据长度 + * @return 璇诲彇鏁版嵁闀垮害 */ uint16_t UART1_RecvString(uint8_t *buf) { diff --git a/SRC/StdPeriphDriver/CH59x_uart2.c b/SRC/StdPeriphDriver/CH59x_uart2.c index 1c14e2a..8a0774d 100644 --- a/SRC/StdPeriphDriver/CH59x_uart2.c +++ b/SRC/StdPeriphDriver/CH59x_uart2.c @@ -15,7 +15,7 @@ /********************************************************************* * @fn UART2_DefInit * - * @brief 串口默认初始化配置 + * @brief 涓插彛榛樿鍒濆鍖栭厤缃 * * @param none * @@ -24,7 +24,7 @@ void UART2_DefInit(void) { UART2_BaudRateCfg(115200); - R8_UART2_FCR = (2 << 6) | RB_FCR_TX_FIFO_CLR | RB_FCR_RX_FIFO_CLR | RB_FCR_FIFO_EN; // FIFO打开,触发点4字节 + R8_UART2_FCR = (2 << 6) | RB_FCR_TX_FIFO_CLR | RB_FCR_RX_FIFO_CLR | RB_FCR_FIFO_EN; // FIFO鎵撳紑锛岃Е鍙戠偣4瀛楄妭 R8_UART2_LCR = RB_LCR_WORD_SZ; R8_UART2_IER = RB_IER_TXD_EN; R8_UART2_DIV = 1; @@ -33,9 +33,9 @@ void UART2_DefInit(void) /********************************************************************* * @fn UART2_BaudRateCfg * - * @brief 串口波特率配置 + * @brief 涓插彛娉㈢壒鐜囬厤缃 * - * @param baudrate - 波特率 + * @param baudrate - 娉㈢壒鐜 * * @return none */ @@ -51,9 +51,9 @@ void UART2_BaudRateCfg(uint32_t baudrate) /********************************************************************* * @fn UART2_ByteTrigCfg * - * @brief 串口字节触发中断配置 + * @brief 涓插彛瀛楄妭瑙﹀彂涓柇閰嶇疆 * - * @param b - 触发字节数 refer to UARTByteTRIGTypeDef + * @param b - 瑙﹀彂瀛楄妭鏁 refer to UARTByteTRIGTypeDef * * @return none */ @@ -65,14 +65,14 @@ void UART2_ByteTrigCfg(UARTByteTRIGTypeDef b) /********************************************************************* * @fn UART2_INTCfg * - * @brief 串口中断配置 + * @brief 涓插彛涓柇閰嶇疆 * - * @param s - 中断控制状态,是否使能相应中断 - * @param i - 中断类型 - * RB_IER_MODEM_CHG - 调制解调器输入状态变化中断使能位(仅 UART0 支持) - * RB_IER_LINE_STAT - 接收线路状态中断 - * RB_IER_THR_EMPTY - 发送保持寄存器空中断 - * RB_IER_RECV_RDY - 接收数据中断 + * @param s - 涓柇鎺у埗鐘舵侊紝鏄惁浣胯兘鐩稿簲涓柇 + * @param i - 涓柇绫诲瀷 + * RB_IER_MODEM_CHG - 璋冨埗瑙h皟鍣ㄨ緭鍏ョ姸鎬佸彉鍖栦腑鏂娇鑳戒綅锛堜粎 UART0 鏀寔锛 + * RB_IER_LINE_STAT - 鎺ユ敹绾胯矾鐘舵佷腑鏂 + * RB_IER_THR_EMPTY - 鍙戦佷繚鎸佸瘎瀛樺櫒绌轰腑鏂 + * RB_IER_RECV_RDY - 鎺ユ敹鏁版嵁涓柇 * * @return none */ @@ -92,7 +92,7 @@ void UART2_INTCfg(FunctionalState s, uint8_t i) /********************************************************************* * @fn UART2_Reset * - * @brief 串口软件复位 + * @brief 涓插彛杞欢澶嶄綅 * * @param none * @@ -106,10 +106,10 @@ void UART2_Reset(void) /********************************************************************* * @fn UART2_SendString * - * @brief 串口多字节发送 + * @brief 涓插彛澶氬瓧鑺傚彂閫 * - * @param buf - 待发送的数据内容首地址 - * @param l - 待发送的数据长度 + * @param buf - 寰呭彂閫佺殑鏁版嵁鍐呭棣栧湴鍧 + * @param l - 寰呭彂閫佺殑鏁版嵁闀垮害 * * @return none */ @@ -130,11 +130,11 @@ void UART2_SendString(uint8_t *buf, uint16_t l) /********************************************************************* * @fn UART2_RecvString * - * @brief 串口读取多字节 + * @brief 涓插彛璇诲彇澶氬瓧鑺 * - * @param buf - 读取数据存放缓存区首地址 + * @param buf - 璇诲彇鏁版嵁瀛樻斁缂撳瓨鍖洪鍦板潃 * - * @return 读取数据长度 + * @return 璇诲彇鏁版嵁闀垮害 */ uint16_t UART2_RecvString(uint8_t *buf) { diff --git a/SRC/StdPeriphDriver/CH59x_uart3.c b/SRC/StdPeriphDriver/CH59x_uart3.c index dc20f95..2b68036 100644 --- a/SRC/StdPeriphDriver/CH59x_uart3.c +++ b/SRC/StdPeriphDriver/CH59x_uart3.c @@ -15,7 +15,7 @@ /********************************************************************* * @fn UART3_DefInit * - * @brief 串口默认初始化配置 + * @brief 涓插彛榛樿鍒濆鍖栭厤缃 * * @param none * @@ -24,7 +24,7 @@ void UART3_DefInit(void) { UART3_BaudRateCfg(115200); - R8_UART3_FCR = (2 << 6) | RB_FCR_TX_FIFO_CLR | RB_FCR_RX_FIFO_CLR | RB_FCR_FIFO_EN; // FIFO打开,触发点4字节 + R8_UART3_FCR = (2 << 6) | RB_FCR_TX_FIFO_CLR | RB_FCR_RX_FIFO_CLR | RB_FCR_FIFO_EN; // FIFO鎵撳紑锛岃Е鍙戠偣4瀛楄妭 R8_UART3_LCR = RB_LCR_WORD_SZ; R8_UART3_IER = RB_IER_TXD_EN; R8_UART3_DIV = 1; @@ -33,9 +33,9 @@ void UART3_DefInit(void) /********************************************************************* * @fn UART3_BaudRateCfg * - * @brief 串口波特率配置 + * @brief 涓插彛娉㈢壒鐜囬厤缃 * - * @param baudrate - 波特率 + * @param baudrate - 娉㈢壒鐜 * * @return none */ @@ -51,9 +51,9 @@ void UART3_BaudRateCfg(uint32_t baudrate) /********************************************************************* * @fn UART3_ByteTrigCfg * - * @brief 串口字节触发中断配置 + * @brief 涓插彛瀛楄妭瑙﹀彂涓柇閰嶇疆 * - * @param b - 触发字节数 refer to UARTByteTRIGTypeDef + * @param b - 瑙﹀彂瀛楄妭鏁 refer to UARTByteTRIGTypeDef * * @return none */ @@ -65,14 +65,14 @@ void UART3_ByteTrigCfg(UARTByteTRIGTypeDef b) /********************************************************************* * @fn UART3_INTCfg * - * @brief 串口中断配置 + * @brief 涓插彛涓柇閰嶇疆 * - * @param s - 中断控制状态,是否使能相应中断 - * @param i - 中断类型 - * RB_IER_MODEM_CHG - 调制解调器输入状态变化中断使能位(仅 UART0 支持) - * RB_IER_LINE_STAT - 接收线路状态中断 - * RB_IER_THR_EMPTY - 发送保持寄存器空中断 - * RB_IER_RECV_RDY - 接收数据中断 + * @param s - 涓柇鎺у埗鐘舵侊紝鏄惁浣胯兘鐩稿簲涓柇 + * @param i - 涓柇绫诲瀷 + * RB_IER_MODEM_CHG - 璋冨埗瑙h皟鍣ㄨ緭鍏ョ姸鎬佸彉鍖栦腑鏂娇鑳戒綅锛堜粎 UART0 鏀寔锛 + * RB_IER_LINE_STAT - 鎺ユ敹绾胯矾鐘舵佷腑鏂 + * RB_IER_THR_EMPTY - 鍙戦佷繚鎸佸瘎瀛樺櫒绌轰腑鏂 + * RB_IER_RECV_RDY - 鎺ユ敹鏁版嵁涓柇 * * @return none */ @@ -92,7 +92,7 @@ void UART3_INTCfg(FunctionalState s, uint8_t i) /********************************************************************* * @fn UART3_Reset * - * @brief 串口软件复位 + * @brief 涓插彛杞欢澶嶄綅 * * @param none * @@ -106,10 +106,10 @@ void UART3_Reset(void) /********************************************************************* * @fn UART3_SendString * - * @brief 串口多字节发送 + * @brief 涓插彛澶氬瓧鑺傚彂閫 * - * @param buf - 待发送的数据内容首地址 - * @param l - 待发送的数据长度 + * @param buf - 寰呭彂閫佺殑鏁版嵁鍐呭棣栧湴鍧 + * @param l - 寰呭彂閫佺殑鏁版嵁闀垮害 * * @return none */ @@ -130,11 +130,11 @@ void UART3_SendString(uint8_t *buf, uint16_t l) /********************************************************************* * @fn UART3_RecvString * - * @brief 串口读取多字节 + * @brief 涓插彛璇诲彇澶氬瓧鑺 * - * @param buf - 读取数据存放缓存区首地址 + * @param buf - 璇诲彇鏁版嵁瀛樻斁缂撳瓨鍖洪鍦板潃 * - * @return 读取数据长度 + * @return 璇诲彇鏁版嵁闀垮害 */ uint16_t UART3_RecvString(uint8_t *buf) { diff --git a/SRC/StdPeriphDriver/CH59x_usbdev.c b/SRC/StdPeriphDriver/CH59x_usbdev.c index 0385608..b5c511d 100644 --- a/SRC/StdPeriphDriver/CH59x_usbdev.c +++ b/SRC/StdPeriphDriver/CH59x_usbdev.c @@ -20,7 +20,7 @@ uint8_t *pEP3_RAM_Addr; /********************************************************************* * @fn USB_DeviceInit * - * @brief USB设备功能初始化,4个端点,8个通道。 + * @brief USB璁惧鍔熻兘鍒濆鍖栵紝4涓鐐癸紝8涓氶亾銆 * * @param none * @@ -28,10 +28,10 @@ uint8_t *pEP3_RAM_Addr; */ void USB_DeviceInit(void) { - R8_USB_CTRL = 0x00; // 先设定模式,取消 RB_UC_CLR_ALL + R8_USB_CTRL = 0x00; // 鍏堣瀹氭ā寮,鍙栨秷 RB_UC_CLR_ALL - R8_UEP4_1_MOD = RB_UEP4_RX_EN | RB_UEP4_TX_EN | RB_UEP1_RX_EN | RB_UEP1_TX_EN; // 端点4 OUT+IN,端点1 OUT+IN - R8_UEP2_3_MOD = RB_UEP2_RX_EN | RB_UEP2_TX_EN | RB_UEP3_RX_EN | RB_UEP3_TX_EN; // 端点2 OUT+IN,端点3 OUT+IN + R8_UEP4_1_MOD = RB_UEP4_RX_EN | RB_UEP4_TX_EN | RB_UEP1_RX_EN | RB_UEP1_TX_EN; // 绔偣4 OUT+IN,绔偣1 OUT+IN + R8_UEP2_3_MOD = RB_UEP2_RX_EN | RB_UEP2_TX_EN | RB_UEP3_RX_EN | RB_UEP3_TX_EN; // 绔偣2 OUT+IN,绔偣3 OUT+IN R16_UEP0_DMA = (uint16_t)(uint32_t)pEP0_RAM_Addr; R16_UEP1_DMA = (uint16_t)(uint32_t)pEP1_RAM_Addr; @@ -45,19 +45,19 @@ void USB_DeviceInit(void) R8_UEP4_CTRL = UEP_R_RES_ACK | UEP_T_RES_NAK; R8_USB_DEV_AD = 0x00; - R8_USB_CTRL = RB_UC_DEV_PU_EN | RB_UC_INT_BUSY | RB_UC_DMA_EN; // 启动USB设备及DMA,在中断期间中断标志未清除前自动返回NAK - R16_PIN_ANALOG_IE |= RB_PIN_USB_IE | RB_PIN_USB_DP_PU; // 防止USB端口浮空及上拉电阻 - R8_USB_INT_FG = 0xFF; // 清中断标志 - R8_UDEV_CTRL = RB_UD_PD_DIS | RB_UD_PORT_EN; // 允许USB端口 + R8_USB_CTRL = RB_UC_DEV_PU_EN | RB_UC_INT_BUSY | RB_UC_DMA_EN; // 鍚姩USB璁惧鍙奃MA锛屽湪涓柇鏈熼棿涓柇鏍囧織鏈竻闄ゅ墠鑷姩杩斿洖NAK + R16_PIN_ANALOG_IE |= RB_PIN_USB_IE | RB_PIN_USB_DP_PU; // 闃叉USB绔彛娴┖鍙婁笂鎷夌數闃 + R8_USB_INT_FG = 0xFF; // 娓呬腑鏂爣蹇 + R8_UDEV_CTRL = RB_UD_PD_DIS | RB_UD_PORT_EN; // 鍏佽USB绔彛 R8_USB_INT_EN = RB_UIE_SUSPEND | RB_UIE_BUS_RST | RB_UIE_TRANSFER; } /********************************************************************* * @fn DevEP1_IN_Deal * - * @brief 端点1数据上传 + * @brief 绔偣1鏁版嵁涓婁紶 * - * @param l - 上传数据长度(<64B) + * @param l - 涓婁紶鏁版嵁闀垮害(<64B) * * @return none */ @@ -70,9 +70,9 @@ void DevEP1_IN_Deal(uint8_t l) /********************************************************************* * @fn DevEP2_IN_Deal * - * @brief 端点2数据上传 + * @brief 绔偣2鏁版嵁涓婁紶 * - * @param l - 上传数据长度(<64B) + * @param l - 涓婁紶鏁版嵁闀垮害(<64B) * * @return none */ @@ -85,9 +85,9 @@ void DevEP2_IN_Deal(uint8_t l) /********************************************************************* * @fn DevEP3_IN_Deal * - * @brief 端点3数据上传 + * @brief 绔偣3鏁版嵁涓婁紶 * - * @param l - 上传数据长度(<64B) + * @param l - 涓婁紶鏁版嵁闀垮害(<64B) * * @return none */ @@ -100,9 +100,9 @@ void DevEP3_IN_Deal(uint8_t l) /********************************************************************* * @fn DevEP4_IN_Deal * - * @brief 端点4数据上传 + * @brief 绔偣4鏁版嵁涓婁紶 * - * @param l - 上传数据长度(<64B) + * @param l - 涓婁紶鏁版嵁闀垮害(<64B) * * @return none */ diff --git a/SRC/StdPeriphDriver/CH59x_usbhostBase.c b/SRC/StdPeriphDriver/CH59x_usbhostBase.c index 4d51b93..af7e13e 100644 --- a/SRC/StdPeriphDriver/CH59x_usbhostBase.c +++ b/SRC/StdPeriphDriver/CH59x_usbhostBase.c @@ -15,37 +15,37 @@ #include "CHRV3UFI.H" #endif -uint8_t UsbDevEndp0Size; // USB设备的端点0的最大包尺寸 +uint8_t UsbDevEndp0Size; // USB璁惧鐨勭鐐0鐨勬渶澶у寘灏哄 uint8_t FoundNewDev; -_RootHubDev ThisUsbDev; //ROOT口 -_DevOnHubPort DevOnHubPort[HUB_MAX_PORTS]; // 假定:不超过1个外部HUB,每个外部HUB不超过HUB_MAX_PORTS个端口(多了不管) +_RootHubDev ThisUsbDev; //ROOT鍙 +_DevOnHubPort DevOnHubPort[HUB_MAX_PORTS]; // 鍋囧畾:涓嶈秴杩1涓閮℉UB,姣忎釜澶栭儴HUB涓嶈秴杩嘓UB_MAX_PORTS涓鍙(澶氫簡涓嶇) uint8_t *pHOST_RX_RAM_Addr; uint8_t *pHOST_TX_RAM_Addr; -/*获取设备描述符*/ +/*鑾峰彇璁惧鎻忚堪绗*/ __attribute__((aligned(4))) const uint8_t SetupGetDevDescr[] = {USB_REQ_TYP_IN, USB_GET_DESCRIPTOR, 0x00, USB_DESCR_TYP_DEVICE, 0x00, 0x00, sizeof(USB_DEV_DESCR), 0x00}; -/*获取配置描述符*/ +/*鑾峰彇閰嶇疆鎻忚堪绗*/ __attribute__((aligned(4))) const uint8_t SetupGetCfgDescr[] = {USB_REQ_TYP_IN, USB_GET_DESCRIPTOR, 0x00, USB_DESCR_TYP_CONFIG, 0x00, 0x00, 0x04, 0x00}; -/*设置USB地址*/ +/*璁剧疆USB鍦板潃*/ __attribute__((aligned(4))) const uint8_t SetupSetUsbAddr[] = {USB_REQ_TYP_OUT, USB_SET_ADDRESS, USB_DEVICE_ADDR, 0x00, 0x00, 0x00, 0x00, 0x00}; -/*设置USB配置*/ +/*璁剧疆USB閰嶇疆*/ __attribute__((aligned(4))) const uint8_t SetupSetUsbConfig[] = {USB_REQ_TYP_OUT, USB_SET_CONFIGURATION, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; -/*设置USB接口配置*/ +/*璁剧疆USB鎺ュ彛閰嶇疆*/ __attribute__((aligned(4))) const uint8_t SetupSetUsbInterface[] = {USB_REQ_RECIP_INTERF, USB_SET_INTERFACE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; -/*清除端点STALL*/ +/*娓呴櫎绔偣STALL*/ __attribute__((aligned(4))) const uint8_t SetupClrEndpStall[] = {USB_REQ_TYP_OUT | USB_REQ_RECIP_ENDP, USB_CLEAR_FEATURE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; /********************************************************************* * @fn DisableRootHubPort * - * @brief 关闭ROOT-HUB端口,实际上硬件已经自动关闭,此处只是清除一些结构状态 + * @brief 鍏抽棴ROOT-HUB绔彛,瀹為檯涓婄‖浠跺凡缁忚嚜鍔ㄥ叧闂,姝ゅ鍙槸娓呴櫎涓浜涚粨鏋勭姸鎬 * * @param none * @@ -65,12 +65,12 @@ void DisableRootHubPort(void) /********************************************************************* * @fn AnalyzeRootHub * - * @brief 分析ROOT-HUB状态,处理ROOT-HUB端口的设备插拔事件 - * 如果设备拔出,函数中调用DisableRootHubPort()函数,将端口关闭,插入事件,置相应端口的状态位 + * @brief 鍒嗘瀽ROOT-HUB鐘舵,澶勭悊ROOT-HUB绔彛鐨勮澶囨彃鎷斾簨浠 + * 濡傛灉璁惧鎷斿嚭,鍑芥暟涓皟鐢―isableRootHubPort()鍑芥暟,灏嗙鍙e叧闂,鎻掑叆浜嬩欢,缃浉搴旂鍙g殑鐘舵佷綅 * * @param none * - * @return 返回ERR_SUCCESS为没有情况,返回ERR_USB_CONNECT为检测到新连接,返回ERR_USB_DISCON为检测到断开 + * @return 杩斿洖ERR_SUCCESS涓烘病鏈夋儏鍐,杩斿洖ERR_USB_CONNECT涓烘娴嬪埌鏂拌繛鎺,杩斿洖ERR_USB_DISCON涓烘娴嬪埌鏂紑 */ uint8_t AnalyzeRootHub(void) { @@ -79,20 +79,20 @@ uint8_t AnalyzeRootHub(void) s = ERR_SUCCESS; if(R8_USB_MIS_ST & RB_UMS_DEV_ATTACH) - { // 设备存在 + { // 璁惧瀛樺湪 #ifdef DISK_BASE_BUF_LEN if(CHRV3DiskStatus == DISK_DISCONNECT #else - if(ThisUsbDev.DeviceStatus == ROOT_DEV_DISCONNECT // 检测到有设备插入 + if(ThisUsbDev.DeviceStatus == ROOT_DEV_DISCONNECT // 妫娴嬪埌鏈夎澶囨彃鍏 #endif || (R8_UHOST_CTRL & RB_UH_PORT_EN) == 0x00) - { // 检测到有设备插入,但尚未允许,说明是刚插入 - DisableRootHubPort(); // 关闭端口 + { // 妫娴嬪埌鏈夎澶囨彃鍏,浣嗗皻鏈厑璁,璇存槑鏄垰鎻掑叆 + DisableRootHubPort(); // 鍏抽棴绔彛 #ifdef DISK_BASE_BUF_LEN CHRV3DiskStatus = DISK_CONNECT; #else ThisUsbDev.DeviceSpeed = R8_USB_MIS_ST & RB_UMS_DM_LEVEL ? 0 : 1; - ThisUsbDev.DeviceStatus = ROOT_DEV_CONNECTED; //置连接标志 + ThisUsbDev.DeviceStatus = ROOT_DEV_CONNECTED; //缃繛鎺ユ爣蹇 #endif PRINT("USB dev in\n"); s = ERR_USB_CONNECT; @@ -104,25 +104,25 @@ uint8_t AnalyzeRootHub(void) { #else else if(ThisUsbDev.DeviceStatus >= ROOT_DEV_CONNECTED) - { //检测到设备拔出 + { //妫娴嬪埌璁惧鎷斿嚭 #endif - DisableRootHubPort(); // 关闭端口 + DisableRootHubPort(); // 鍏抽棴绔彛 PRINT("USB dev out\n"); if(s == ERR_SUCCESS) { s = ERR_USB_DISCON; } } - // R8_USB_INT_FG = RB_UIF_DETECT; // 清中断标志 + // R8_USB_INT_FG = RB_UIF_DETECT; // 娓呬腑鏂爣蹇 return (s); } /********************************************************************* * @fn SetHostUsbAddr * - * @brief 设置USB主机当前操作的USB设备地址 + * @brief 璁剧疆USB涓绘満褰撳墠鎿嶄綔鐨刄SB璁惧鍦板潃 * - * @param addr - USB设备地址 + * @param addr - USB璁惧鍦板潃 * * @return none */ @@ -134,23 +134,23 @@ void SetHostUsbAddr(uint8_t addr) /********************************************************************* * @fn SetUsbSpeed * - * @brief 设置当前USB速度 + * @brief 璁剧疆褰撳墠USB閫熷害 * - * @param FullSpeed - USB速度 + * @param FullSpeed - USB閫熷害 * * @return none */ void SetUsbSpeed(uint8_t FullSpeed) { #ifndef DISK_BASE_BUF_LEN - if(FullSpeed) // 全速 + if(FullSpeed) // 鍏ㄩ { - R8_USB_CTRL &= ~RB_UC_LOW_SPEED; // 全速 - R8_UH_SETUP &= ~RB_UH_PRE_PID_EN; // 禁止PRE PID + R8_USB_CTRL &= ~RB_UC_LOW_SPEED; // 鍏ㄩ + R8_UH_SETUP &= ~RB_UH_PRE_PID_EN; // 绂佹PRE PID } else { - R8_USB_CTRL |= RB_UC_LOW_SPEED; // 低速 + R8_USB_CTRL |= RB_UC_LOW_SPEED; // 浣庨 } #endif (void)FullSpeed; @@ -159,7 +159,7 @@ void SetUsbSpeed(uint8_t FullSpeed) /********************************************************************* * @fn ResetRootHubPort * - * @brief 检测到设备后,复位总线,为枚举设备准备,设置为默认为全速 + * @brief 妫娴嬪埌璁惧鍚,澶嶄綅鎬荤嚎,涓烘灇涓捐澶囧噯澶,璁剧疆涓洪粯璁や负鍏ㄩ * * @param none * @@ -167,25 +167,25 @@ void SetUsbSpeed(uint8_t FullSpeed) */ void ResetRootHubPort(void) { - UsbDevEndp0Size = DEFAULT_ENDP0_SIZE; //USB设备的端点0的最大包尺寸 + UsbDevEndp0Size = DEFAULT_ENDP0_SIZE; //USB璁惧鐨勭鐐0鐨勬渶澶у寘灏哄 SetHostUsbAddr(0x00); - R8_UHOST_CTRL &= ~RB_UH_PORT_EN; // 关掉端口 - SetUsbSpeed(1); // 默认为全速 - R8_UHOST_CTRL = (R8_UHOST_CTRL & ~RB_UH_LOW_SPEED) | RB_UH_BUS_RESET; // 默认为全速,开始复位 - mDelaymS(15); // 复位时间10mS到20mS - R8_UHOST_CTRL = R8_UHOST_CTRL & ~RB_UH_BUS_RESET; // 结束复位 + R8_UHOST_CTRL &= ~RB_UH_PORT_EN; // 鍏虫帀绔彛 + SetUsbSpeed(1); // 榛樿涓哄叏閫 + R8_UHOST_CTRL = (R8_UHOST_CTRL & ~RB_UH_LOW_SPEED) | RB_UH_BUS_RESET; // 榛樿涓哄叏閫,寮濮嬪浣 + mDelaymS(15); // 澶嶄綅鏃堕棿10mS鍒20mS + R8_UHOST_CTRL = R8_UHOST_CTRL & ~RB_UH_BUS_RESET; // 缁撴潫澶嶄綅 mDelayuS(250); - R8_USB_INT_FG = RB_UIF_DETECT; // 清中断标志 + R8_USB_INT_FG = RB_UIF_DETECT; // 娓呬腑鏂爣蹇 } /********************************************************************* * @fn EnableRootHubPort * - * @brief 使能ROOT-HUB端口,相应的bUH_PORT_EN置1开启端口,设备断开可能导致返回失败 + * @brief 浣胯兘ROOT-HUB绔彛,鐩稿簲鐨刡UH_PORT_EN缃1寮鍚鍙,璁惧鏂紑鍙兘瀵艰嚧杩斿洖澶辫触 * * @param none * - * @return 返回ERR_SUCCESS为检测到新连接,返回ERR_USB_DISCON为无连接 + * @return 杩斿洖ERR_SUCCESS涓烘娴嬪埌鏂拌繛鎺,杩斿洖ERR_USB_DISCON涓烘棤杩炴帴 */ uint8_t EnableRootHubPort(void) { @@ -197,18 +197,18 @@ uint8_t EnableRootHubPort(void) ThisUsbDev.DeviceStatus = ROOT_DEV_CONNECTED; #endif if(R8_USB_MIS_ST & RB_UMS_DEV_ATTACH) - { // 有设备 + { // 鏈夎澶 #ifndef DISK_BASE_BUF_LEN if((R8_UHOST_CTRL & RB_UH_PORT_EN) == 0x00) - { // 尚未使能 + { // 灏氭湭浣胯兘 ThisUsbDev.DeviceSpeed = (R8_USB_MIS_ST & RB_UMS_DM_LEVEL) ? 0 : 1; if(ThisUsbDev.DeviceSpeed == 0) { - R8_UHOST_CTRL |= RB_UH_LOW_SPEED; // 低速 + R8_UHOST_CTRL |= RB_UH_LOW_SPEED; // 浣庨 } } #endif - R8_UHOST_CTRL |= RB_UH_PORT_EN; //使能HUB端口 + R8_UHOST_CTRL |= RB_UH_PORT_EN; //浣胯兘HUB绔彛 return (ERR_SUCCESS); } return (ERR_USB_DISCON); @@ -218,28 +218,28 @@ uint8_t EnableRootHubPort(void) /********************************************************************* * @fn SelectHubPort * - * @brief 选定需要操作的HUB口 + * @brief 閫夊畾闇瑕佹搷浣滅殑HUB鍙 * - * @param HubPortIndex - 选择操作指定的ROOT-HUB端口的外部HUB的指定端口 + * @param HubPortIndex - 閫夋嫨鎿嶄綔鎸囧畾鐨凴OOT-HUB绔彛鐨勫閮℉UB鐨勬寚瀹氱鍙 * * @return None */ void SelectHubPort(uint8_t HubPortIndex) { - if(HubPortIndex) // 选择操作指定的ROOT-HUB端口的外部HUB的指定端口 + if(HubPortIndex) // 閫夋嫨鎿嶄綔鎸囧畾鐨凴OOT-HUB绔彛鐨勫閮℉UB鐨勬寚瀹氱鍙 { - SetHostUsbAddr(DevOnHubPort[HubPortIndex - 1].DeviceAddress); // 设置USB主机当前操作的USB设备地址 - SetUsbSpeed(DevOnHubPort[HubPortIndex - 1].DeviceSpeed); // 设置当前USB速度 - if(DevOnHubPort[HubPortIndex - 1].DeviceSpeed == 0) // 通过外部HUB与低速USB设备通讯需要前置ID + SetHostUsbAddr(DevOnHubPort[HubPortIndex - 1].DeviceAddress); // 璁剧疆USB涓绘満褰撳墠鎿嶄綔鐨刄SB璁惧鍦板潃 + SetUsbSpeed(DevOnHubPort[HubPortIndex - 1].DeviceSpeed); // 璁剧疆褰撳墠USB閫熷害 + if(DevOnHubPort[HubPortIndex - 1].DeviceSpeed == 0) // 閫氳繃澶栭儴HUB涓庝綆閫烾SB璁惧閫氳闇瑕佸墠缃甀D { - R8_UEP1_CTRL |= RB_UH_PRE_PID_EN; // 启用PRE PID + R8_UEP1_CTRL |= RB_UH_PRE_PID_EN; // 鍚敤PRE PID mDelayuS(100); } } else { - SetHostUsbAddr(ThisUsbDev.DeviceAddress); // 设置USB主机当前操作的USB设备地址 - SetUsbSpeed(ThisUsbDev.DeviceSpeed); // 设置USB设备的速度 + SetHostUsbAddr(ThisUsbDev.DeviceAddress); // 璁剧疆USB涓绘満褰撳墠鎿嶄綔鐨刄SB璁惧鍦板潃 + SetUsbSpeed(ThisUsbDev.DeviceSpeed); // 璁剧疆USB璁惧鐨勯熷害 } } #endif @@ -247,11 +247,11 @@ void SelectHubPort(uint8_t HubPortIndex) /********************************************************************* * @fn WaitUSB_Interrupt * - * @brief 等待USB中断 + * @brief 绛夊緟USB涓柇 * * @param none * - * @return 返回ERR_SUCCESS 数据接收或者发送成功,返回ERR_USB_UNKNOWN 数据接收或者发送失败 + * @return 杩斿洖ERR_SUCCESS 鏁版嵁鎺ユ敹鎴栬呭彂閫佹垚鍔,杩斿洖ERR_USB_UNKNOWN 鏁版嵁鎺ユ敹鎴栬呭彂閫佸け璐 */ uint8_t WaitUSB_Interrupt(void) { @@ -266,17 +266,17 @@ uint8_t WaitUSB_Interrupt(void) /********************************************************************* * @fn USBHostTransact * - * @brief 传输事务,输入目的端点地址/PID令牌,同步标志,以20uS为单位的NAK重试总时间(0则不重试,0xFFFF无限重试),返回0成功,超时/出错重试 - * 本子程序着重于易理解,而在实际应用中,为了提供运行速度,应该对本子程序代码进行优化 + * @brief 浼犺緭浜嬪姟,杈撳叆鐩殑绔偣鍦板潃/PID浠ょ墝,鍚屾鏍囧織,浠20uS涓哄崟浣嶇殑NAK閲嶈瘯鎬绘椂闂(0鍒欎笉閲嶈瘯,0xFFFF鏃犻檺閲嶈瘯),杩斿洖0鎴愬姛,瓒呮椂/鍑洪敊閲嶈瘯 + * 鏈瓙绋嬪簭鐫閲嶄簬鏄撶悊瑙,鑰屽湪瀹為檯搴旂敤涓,涓轰簡鎻愪緵杩愯閫熷害,搴旇瀵规湰瀛愮▼搴忎唬鐮佽繘琛屼紭鍖 * - * @param endp_pid - 令牌和地址, 高4位是token_pid令牌, 低4位是端点地址 - * @param tog - 同步标志 - * @param timeout - 超时时间 + * @param endp_pid - 浠ょ墝鍜屽湴鍧, 楂4浣嶆槸token_pid浠ょ墝, 浣4浣嶆槸绔偣鍦板潃 + * @param tog - 鍚屾鏍囧織 + * @param timeout - 瓒呮椂鏃堕棿 * - * @return ERR_USB_UNKNOWN 超时,可能硬件异常 - * ERR_USB_DISCON 设备断开 - * ERR_USB_CONNECT 设备连接 - * ERR_SUCCESS 传输完成 + * @return ERR_USB_UNKNOWN 瓒呮椂锛屽彲鑳界‖浠跺紓甯 + * ERR_USB_DISCON 璁惧鏂紑 + * ERR_USB_CONNECT 璁惧杩炴帴 + * ERR_SUCCESS 浼犺緭瀹屾垚 */ uint8_t USBHostTransact(uint8_t endp_pid, uint8_t tog, uint32_t timeout) { @@ -290,23 +290,23 @@ uint8_t USBHostTransact(uint8_t endp_pid, uint8_t tog, uint32_t timeout) do { - R8_UH_EP_PID = endp_pid; // 指定令牌PID和目的端点号 + R8_UH_EP_PID = endp_pid; // 鎸囧畾浠ょ墝PID鍜岀洰鐨勭鐐瑰彿 R8_USB_INT_FG = RB_UIF_TRANSFER; for(i = WAIT_USB_TOUT_200US; i != 0 && (R8_USB_INT_FG & RB_UIF_TRANSFER) == 0; i--) { ; } - R8_UH_EP_PID = 0x00; // 停止USB传输 + R8_UH_EP_PID = 0x00; // 鍋滄USB浼犺緭 if((R8_USB_INT_FG & RB_UIF_TRANSFER) == 0) { return (ERR_USB_UNKNOWN); } if(R8_USB_INT_FG & RB_UIF_DETECT) - { // USB设备插拔事件 - // mDelayuS( 200 ); // 等待传输完成 + { // USB璁惧鎻掓嫈浜嬩欢 + // mDelayuS( 200 ); // 绛夊緟浼犺緭瀹屾垚 R8_USB_INT_FG = RB_UIF_DETECT; - s = AnalyzeRootHub(); // 分析ROOT-HUB状态 + s = AnalyzeRootHub(); // 鍒嗘瀽ROOT-HUB鐘舵 if(s == ERR_USB_CONNECT) FoundNewDev = 1; @@ -314,31 +314,31 @@ uint8_t USBHostTransact(uint8_t endp_pid, uint8_t tog, uint32_t timeout) if(CHRV3DiskStatus == DISK_DISCONNECT) { return (ERR_USB_DISCON); - } // USB设备断开事件 + } // USB璁惧鏂紑浜嬩欢 if(CHRV3DiskStatus == DISK_CONNECT) { return (ERR_USB_CONNECT); - } // USB设备连接事件 + } // USB璁惧杩炴帴浜嬩欢 #else if(ThisUsbDev.DeviceStatus == ROOT_DEV_DISCONNECT) { return (ERR_USB_DISCON); - } // USB设备断开事件 + } // USB璁惧鏂紑浜嬩欢 if(ThisUsbDev.DeviceStatus == ROOT_DEV_CONNECTED) { return (ERR_USB_CONNECT); - } // USB设备连接事件 + } // USB璁惧杩炴帴浜嬩欢 #endif - mDelayuS(200); // 等待传输完成 + mDelayuS(200); // 绛夊緟浼犺緭瀹屾垚 } - if(R8_USB_INT_FG & RB_UIF_TRANSFER) // 传输完成事件 + if(R8_USB_INT_FG & RB_UIF_TRANSFER) // 浼犺緭瀹屾垚浜嬩欢 { if(R8_USB_INT_ST & RB_UIS_TOG_OK) { return (ERR_SUCCESS); } - r = R8_USB_INT_ST & MASK_UIS_H_RES; // USB设备应答状态 + r = R8_USB_INT_ST & MASK_UIS_H_RES; // USB璁惧搴旂瓟鐘舵 if(r == USB_PID_STALL) { return (r | ERR_USB_TRANSFER); @@ -363,41 +363,41 @@ uint8_t USBHostTransact(uint8_t endp_pid, uint8_t tog, uint32_t timeout) if(r) { return (r | ERR_USB_TRANSFER); - } // 不是超时/出错,意外应答 - break; // 超时重试 + } // 涓嶆槸瓒呮椂/鍑洪敊,鎰忓搴旂瓟 + break; // 瓒呮椂閲嶈瘯 case USB_PID_IN: if(r == USB_PID_DATA0 || r == USB_PID_DATA1) - { // 不同步则需丢弃后重试 - } // 不同步重试 + { // 涓嶅悓姝ュ垯闇涓㈠純鍚庨噸璇 + } // 涓嶅悓姝ラ噸璇 else if(r) { return (r | ERR_USB_TRANSFER); - } // 不是超时/出错,意外应答 - break; // 超时重试 + } // 涓嶆槸瓒呮椂/鍑洪敊,鎰忓搴旂瓟 + break; // 瓒呮椂閲嶈瘯 default: - return (ERR_USB_UNKNOWN); // 不可能的情况 + return (ERR_USB_UNKNOWN); // 涓嶅彲鑳界殑鎯呭喌 break; } } else - { // 其它中断,不应该发生的情况 - R8_USB_INT_FG = 0xFF; /* 清中断标志 */ + { // 鍏跺畠涓柇,涓嶅簲璇ュ彂鐢熺殑鎯呭喌 + R8_USB_INT_FG = 0xFF; /* 娓呬腑鏂爣蹇 */ } mDelayuS(15); } while(++TransRetry < 3); - return (ERR_USB_TRANSFER); // 应答超时 + return (ERR_USB_TRANSFER); // 搴旂瓟瓒呮椂 } /********************************************************************* * @fn HostCtrlTransfer * - * @brief 执行控制传输,8字节请求码在pSetupReq中,DataBuf为可选的收发缓冲区 + * @brief 鎵ц鎺у埗浼犺緭,8瀛楄妭璇锋眰鐮佸湪pSetupReq涓,DataBuf涓哄彲閫夌殑鏀跺彂缂撳啿鍖 * - * @param DataBuf - 如果需要接收和发送数据,那么DataBuf需指向有效缓冲区用于存放后续数据 - * @param RetLen - 实际成功收发的总长度保存在RetLen指向的字节变量中 + * @param DataBuf - 濡傛灉闇瑕佹帴鏀跺拰鍙戦佹暟鎹,閭d箞DataBuf闇鎸囧悜鏈夋晥缂撳啿鍖虹敤浜庡瓨鏀惧悗缁暟鎹 + * @param RetLen - 瀹為檯鎴愬姛鏀跺彂鐨勬婚暱搴︿繚瀛樺湪RetLen鎸囧悜鐨勫瓧鑺傚彉閲忎腑 * - * @return ERR_USB_BUF_OVER IN状态阶段出错 - * ERR_SUCCESS 数据交换成功 + * @return ERR_USB_BUF_OVER IN鐘舵侀樁娈靛嚭閿 + * ERR_SUCCESS 鏁版嵁浜ゆ崲鎴愬姛 */ uint8_t HostCtrlTransfer(uint8_t *DataBuf, uint8_t *RetLen) { @@ -411,28 +411,28 @@ uint8_t HostCtrlTransfer(uint8_t *DataBuf, uint8_t *RetLen) mDelayuS(200); if(pLen) { - *pLen = 0; // 实际成功收发的总长度 + *pLen = 0; // 瀹為檯鎴愬姛鏀跺彂鐨勬婚暱搴 } R8_UH_TX_LEN = sizeof(USB_SETUP_REQ); - s = USBHostTransact(USB_PID_SETUP << 4 | 0x00, 0x00, 200000 / 20); // SETUP阶段,200mS超时 + s = USBHostTransact(USB_PID_SETUP << 4 | 0x00, 0x00, 200000 / 20); // SETUP闃舵,200mS瓒呮椂 if(s != ERR_SUCCESS) { return (s); } - R8_UH_RX_CTRL = R8_UH_TX_CTRL = RB_UH_R_TOG | RB_UH_R_AUTO_TOG | RB_UH_T_TOG | RB_UH_T_AUTO_TOG; // 默认DATA1 - R8_UH_TX_LEN = 0x01; // 默认无数据故状态阶段为IN + R8_UH_RX_CTRL = R8_UH_TX_CTRL = RB_UH_R_TOG | RB_UH_R_AUTO_TOG | RB_UH_T_TOG | RB_UH_T_AUTO_TOG; // 榛樿DATA1 + R8_UH_TX_LEN = 0x01; // 榛樿鏃犳暟鎹晠鐘舵侀樁娈典负IN RemLen = pSetupReq->wLength; PRINT("wLength: %x\n", RemLen); - if(RemLen && pBuf) // 需要收发数据 + if(RemLen && pBuf) // 闇瑕佹敹鍙戞暟鎹 { PRINT("bRequestType: %x\n", pSetupReq->bRequestType); - if(pSetupReq->bRequestType & USB_REQ_TYP_IN) // 收 + if(pSetupReq->bRequestType & USB_REQ_TYP_IN) // 鏀 { while(RemLen) { mDelayuS(200); - s = USBHostTransact(USB_PID_IN << 4 | 0x00, R8_UH_RX_CTRL, 200000 / 20); // IN数据 + s = USBHostTransact(USB_PID_IN << 4 | 0x00, R8_UH_RX_CTRL, 200000 / 20); // IN鏁版嵁 if(s != ERR_SUCCESS) { return (s); @@ -441,7 +441,7 @@ uint8_t HostCtrlTransfer(uint8_t *DataBuf, uint8_t *RetLen) RemLen -= RxLen; if(pLen) { - *pLen += RxLen; // 实际成功收发的总长度 + *pLen += RxLen; // 瀹為檯鎴愬姛鏀跺彂鐨勬婚暱搴 } for(RxCnt = 0; RxCnt != RxLen; RxCnt++) { @@ -450,12 +450,12 @@ uint8_t HostCtrlTransfer(uint8_t *DataBuf, uint8_t *RetLen) } if(R8_USB_RX_LEN == 0 || (R8_USB_RX_LEN & (UsbDevEndp0Size - 1))) { - break; // 短包 + break; // 鐭寘 } } - R8_UH_TX_LEN = 0x00; // 状态阶段为OUT + R8_UH_TX_LEN = 0x00; // 鐘舵侀樁娈典负OUT } - else // 发 + else // 鍙 { while(RemLen) { @@ -466,7 +466,7 @@ uint8_t HostCtrlTransfer(uint8_t *DataBuf, uint8_t *RetLen) pHOST_TX_RAM_Addr[TxCnt] = *pBuf; pBuf++; } - s = USBHostTransact(USB_PID_OUT << 4 | 0x00, R8_UH_TX_CTRL, 200000 / 20); // OUT数据 + s = USBHostTransact(USB_PID_OUT << 4 | 0x00, R8_UH_TX_CTRL, 200000 / 20); // OUT鏁版嵁 if(s != ERR_SUCCESS) { return (s); @@ -474,40 +474,40 @@ uint8_t HostCtrlTransfer(uint8_t *DataBuf, uint8_t *RetLen) RemLen -= R8_UH_TX_LEN; if(pLen) { - *pLen += R8_UH_TX_LEN; // 实际成功收发的总长度 + *pLen += R8_UH_TX_LEN; // 瀹為檯鎴愬姛鏀跺彂鐨勬婚暱搴 } } PRINT("Send: %d\n", *pLen); - // R8_UH_TX_LEN = 0x01; // 状态阶段为IN + // R8_UH_TX_LEN = 0x01; // 鐘舵侀樁娈典负IN } } mDelayuS(200); - s = USBHostTransact((R8_UH_TX_LEN ? USB_PID_IN << 4 | 0x00 : USB_PID_OUT << 4 | 0x00), RB_UH_R_TOG | RB_UH_T_TOG, 200000 / 20); // STATUS阶段 + s = USBHostTransact((R8_UH_TX_LEN ? USB_PID_IN << 4 | 0x00 : USB_PID_OUT << 4 | 0x00), RB_UH_R_TOG | RB_UH_T_TOG, 200000 / 20); // STATUS闃舵 if(s != ERR_SUCCESS) { return (s); } if(R8_UH_TX_LEN == 0) { - return (ERR_SUCCESS); // 状态OUT + return (ERR_SUCCESS); // 鐘舵丱UT } if(R8_USB_RX_LEN == 0) { - return (ERR_SUCCESS); // 状态IN,检查IN状态返回数据长度 + return (ERR_SUCCESS); // 鐘舵両N,妫鏌N鐘舵佽繑鍥炴暟鎹暱搴 } - return (ERR_USB_BUF_OVER); // IN状态阶段错误 + return (ERR_USB_BUF_OVER); // IN鐘舵侀樁娈甸敊璇 } /********************************************************************* * @fn CopySetupReqPkg * - * @brief 复制控制传输的请求包 + * @brief 澶嶅埗鎺у埗浼犺緭鐨勮姹傚寘 * - * @param pReqPkt - 控制请求包地址 + * @param pReqPkt - 鎺у埗璇锋眰鍖呭湴鍧 * * @return none */ -void CopySetupReqPkg(const uint8_t *pReqPkt) // 复制控制传输的请求包 +void CopySetupReqPkg(const uint8_t *pReqPkt) // 澶嶅埗鎺у埗浼犺緭鐨勮姹傚寘 { uint8_t i; for(i = 0; i != sizeof(USB_SETUP_REQ); i++) @@ -520,12 +520,12 @@ void CopySetupReqPkg(const uint8_t *pReqPkt) // /********************************************************************* * @fn CtrlGetDeviceDescr * - * @brief 获取设备描述符,返回在 pHOST_TX_RAM_Addr 中 + * @brief 鑾峰彇璁惧鎻忚堪绗,杩斿洖鍦 pHOST_TX_RAM_Addr 涓 * * @param none * - * @return ERR_USB_BUF_OVER 描述符长度错误 - * ERR_SUCCESS 成功 + * @return ERR_USB_BUF_OVER 鎻忚堪绗﹂暱搴﹂敊璇 + * ERR_SUCCESS 鎴愬姛 */ uint8_t CtrlGetDeviceDescr(void) { @@ -534,15 +534,15 @@ uint8_t CtrlGetDeviceDescr(void) UsbDevEndp0Size = DEFAULT_ENDP0_SIZE; CopySetupReqPkg(SetupGetDevDescr); - s = HostCtrlTransfer(Com_Buffer, &len); // 执行控制传输 + s = HostCtrlTransfer(Com_Buffer, &len); // 鎵ц鎺у埗浼犺緭 if(s != ERR_SUCCESS) { return (s); } - UsbDevEndp0Size = ((PUSB_DEV_DESCR)Com_Buffer)->bMaxPacketSize0; // 端点0最大包长度,这是简化处理,正常应该先获取前8字节后立即更新UsbDevEndp0Size再继续 + UsbDevEndp0Size = ((PUSB_DEV_DESCR)Com_Buffer)->bMaxPacketSize0; // 绔偣0鏈澶у寘闀垮害,杩欐槸绠鍖栧鐞,姝e父搴旇鍏堣幏鍙栧墠8瀛楄妭鍚庣珛鍗虫洿鏂癠sbDevEndp0Size鍐嶇户缁 if(len < ((PUSB_SETUP_REQ)SetupGetDevDescr)->wLength) { - return (ERR_USB_BUF_OVER); // 描述符长度错误 + return (ERR_USB_BUF_OVER); // 鎻忚堪绗﹂暱搴﹂敊璇 } return (ERR_SUCCESS); } @@ -550,12 +550,12 @@ uint8_t CtrlGetDeviceDescr(void) /********************************************************************* * @fn CtrlGetConfigDescr * - * @brief 获取配置描述符,返回在 pHOST_TX_RAM_Addr 中 + * @brief 鑾峰彇閰嶇疆鎻忚堪绗,杩斿洖鍦 pHOST_TX_RAM_Addr 涓 * * @param none * - * @return ERR_USB_BUF_OVER 描述符长度错误 - * ERR_SUCCESS 成功 + * @return ERR_USB_BUF_OVER 鎻忚堪绗﹂暱搴﹂敊璇 + * ERR_SUCCESS 鎴愬姛 */ uint8_t CtrlGetConfigDescr(void) { @@ -563,20 +563,20 @@ uint8_t CtrlGetConfigDescr(void) uint8_t len; CopySetupReqPkg(SetupGetCfgDescr); - s = HostCtrlTransfer(Com_Buffer, &len); // 执行控制传输 + s = HostCtrlTransfer(Com_Buffer, &len); // 鎵ц鎺у埗浼犺緭 if(s != ERR_SUCCESS) { return (s); } if(len < ((PUSB_SETUP_REQ)SetupGetCfgDescr)->wLength) { - return (ERR_USB_BUF_OVER); // 返回长度错误 + return (ERR_USB_BUF_OVER); // 杩斿洖闀垮害閿欒 } len = ((PUSB_CFG_DESCR)Com_Buffer)->wTotalLength; CopySetupReqPkg(SetupGetCfgDescr); - pSetupReq->wLength = len; // 完整配置描述符的总长度 - s = HostCtrlTransfer(Com_Buffer, &len); // 执行控制传输 + pSetupReq->wLength = len; // 瀹屾暣閰嶇疆鎻忚堪绗︾殑鎬婚暱搴 + s = HostCtrlTransfer(Com_Buffer, &len); // 鎵ц鎺у埗浼犺緭 if(s != ERR_SUCCESS) { return (s); @@ -585,7 +585,7 @@ uint8_t CtrlGetConfigDescr(void) #ifdef DISK_BASE_BUF_LEN if(len > 64) len = 64; - memcpy(TxBuffer, Com_Buffer, len); //U盘操作时,需要拷贝到TxBuffer + memcpy(TxBuffer, Com_Buffer, len); //U鐩樻搷浣滄椂锛岄渶瑕佹嫹璐濆埌TxBuffer #endif return (ERR_SUCCESS); @@ -594,80 +594,80 @@ uint8_t CtrlGetConfigDescr(void) /********************************************************************* * @fn CtrlSetUsbAddress * - * @brief 设置USB设备地址 + * @brief 璁剧疆USB璁惧鍦板潃 * - * @param addr - 设备地址 + * @param addr - 璁惧鍦板潃 * - * @return ERR_SUCCESS 成功 + * @return ERR_SUCCESS 鎴愬姛 */ uint8_t CtrlSetUsbAddress(uint8_t addr) { uint8_t s; CopySetupReqPkg(SetupSetUsbAddr); - pSetupReq->wValue = addr; // USB设备地址 - s = HostCtrlTransfer(NULL, NULL); // 执行控制传输 + pSetupReq->wValue = addr; // USB璁惧鍦板潃 + s = HostCtrlTransfer(NULL, NULL); // 鎵ц鎺у埗浼犺緭 if(s != ERR_SUCCESS) { return (s); } - SetHostUsbAddr(addr); // 设置USB主机当前操作的USB设备地址 - mDelaymS(10); // 等待USB设备完成操作 + SetHostUsbAddr(addr); // 璁剧疆USB涓绘満褰撳墠鎿嶄綔鐨刄SB璁惧鍦板潃 + mDelaymS(10); // 绛夊緟USB璁惧瀹屾垚鎿嶄綔 return (ERR_SUCCESS); } /********************************************************************* * @fn CtrlSetUsbConfig * - * @brief 设置USB设备配置 + * @brief 璁剧疆USB璁惧閰嶇疆 * - * @param cfg - 配置值 + * @param cfg - 閰嶇疆鍊 * - * @return ERR_SUCCESS 成功 + * @return ERR_SUCCESS 鎴愬姛 */ uint8_t CtrlSetUsbConfig(uint8_t cfg) { CopySetupReqPkg(SetupSetUsbConfig); - pSetupReq->wValue = cfg; // USB设备配置 - return (HostCtrlTransfer(NULL, NULL)); // 执行控制传输 + pSetupReq->wValue = cfg; // USB璁惧閰嶇疆 + return (HostCtrlTransfer(NULL, NULL)); // 鎵ц鎺у埗浼犺緭 } /********************************************************************* * @fn CtrlClearEndpStall * - * @brief 清除端点STALL + * @brief 娓呴櫎绔偣STALL * - * @param endp - 端点地址 + * @param endp - 绔偣鍦板潃 * - * @return ERR_SUCCESS 成功 + * @return ERR_SUCCESS 鎴愬姛 */ uint8_t CtrlClearEndpStall(uint8_t endp) { - CopySetupReqPkg(SetupClrEndpStall); // 清除端点的错误 - pSetupReq->wIndex = endp; // 端点地址 - return (HostCtrlTransfer(NULL, NULL)); // 执行控制传输 + CopySetupReqPkg(SetupClrEndpStall); // 娓呴櫎绔偣鐨勯敊璇 + pSetupReq->wIndex = endp; // 绔偣鍦板潃 + return (HostCtrlTransfer(NULL, NULL)); // 鎵ц鎺у埗浼犺緭 } /********************************************************************* * @fn CtrlSetUsbIntercace * - * @brief 设置USB设备接口 + * @brief 璁剧疆USB璁惧鎺ュ彛 * - * @param cfg - 配置值 + * @param cfg - 閰嶇疆鍊 * - * @return ERR_SUCCESS 成功 + * @return ERR_SUCCESS 鎴愬姛 */ uint8_t CtrlSetUsbIntercace(uint8_t cfg) { CopySetupReqPkg(SetupSetUsbInterface); - pSetupReq->wValue = cfg; // USB设备配置 - return (HostCtrlTransfer(NULL, NULL)); // 执行控制传输 + pSetupReq->wValue = cfg; // USB璁惧閰嶇疆 + return (HostCtrlTransfer(NULL, NULL)); // 鎵ц鎺у埗浼犺緭 } /********************************************************************* * @fn USB_HostInit * - * @brief USB主机功能初始化 + * @brief USB涓绘満鍔熻兘鍒濆鍖 * * @param none * diff --git a/SRC/StdPeriphDriver/CH59x_usbhostClass.c b/SRC/StdPeriphDriver/CH59x_usbhostClass.c index 946f94a..03a26e3 100644 --- a/SRC/StdPeriphDriver/CH59x_usbhostClass.c +++ b/SRC/StdPeriphDriver/CH59x_usbhostClass.c @@ -15,25 +15,25 @@ #include "CHRV3UFI.H" #endif -/* 设置HID上传速率 */ +/* 璁剧疆HID涓婁紶閫熺巼 */ __attribute__((aligned(4))) const uint8_t SetupSetHIDIdle[] = {0x21, HID_SET_IDLE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; -/* 获取HID设备报表描述符 */ +/* 鑾峰彇HID璁惧鎶ヨ〃鎻忚堪绗 */ __attribute__((aligned(4))) const uint8_t SetupGetHIDDevReport[] = {0x81, USB_GET_DESCRIPTOR, 0x00, USB_DESCR_TYP_REPORT, 0x00, 0x00, 0x41, 0x00}; -/* 获取HUB描述符 */ +/* 鑾峰彇HUB鎻忚堪绗 */ __attribute__((aligned(4))) const uint8_t SetupGetHubDescr[] = {HUB_GET_HUB_DESCRIPTOR, HUB_GET_DESCRIPTOR, 0x00, USB_DESCR_TYP_HUB, 0x00, 0x00, sizeof(USB_HUB_DESCR), 0x00}; -__attribute__((aligned(4))) uint8_t Com_Buffer[128]; // 定义用户临时缓冲区,枚举时用于处理描述符,枚举结束也可以用作普通临时缓冲区 +__attribute__((aligned(4))) uint8_t Com_Buffer[128]; // 瀹氫箟鐢ㄦ埛涓存椂缂撳啿鍖,鏋氫妇鏃剁敤浜庡鐞嗘弿杩扮,鏋氫妇缁撴潫涔熷彲浠ョ敤浣滄櫘閫氫复鏃剁紦鍐插尯 /********************************************************************* * @fn AnalyzeHidIntEndp * - * @brief 从描述符中分析出HID中断端点的地址,如果HubPortIndex是0保存到ROOTHUB,如果是非零值则保存到HUB下结构体 + * @brief 浠庢弿杩扮涓垎鏋愬嚭HID涓柇绔偣鐨勫湴鍧,濡傛灉HubPortIndex鏄0淇濆瓨鍒癛OOTHUB锛屽鏋滄槸闈為浂鍊煎垯淇濆瓨鍒癏UB涓嬬粨鏋勪綋 * - * @param buf - 待分析数据缓冲区地址 HubPortIndex:0表示根HUB,非0表示外部HUB下的端口号 + * @param buf - 寰呭垎鏋愭暟鎹紦鍐插尯鍦板潃 HubPortIndex锛0琛ㄧず鏍笻UB锛岄潪0琛ㄧず澶栭儴HUB涓嬬殑绔彛鍙 * - * @return 端点数 + * @return 绔偣鏁 */ uint8_t AnalyzeHidIntEndp(uint8_t *buf, uint8_t HubPortIndex) { @@ -42,35 +42,35 @@ uint8_t AnalyzeHidIntEndp(uint8_t *buf, uint8_t HubPortIndex) if(HubPortIndex) { - memset(DevOnHubPort[HubPortIndex - 1].GpVar, 0, sizeof(DevOnHubPort[HubPortIndex - 1].GpVar)); //清空数组 + memset(DevOnHubPort[HubPortIndex - 1].GpVar, 0, sizeof(DevOnHubPort[HubPortIndex - 1].GpVar)); //娓呯┖鏁扮粍 } else { - memset(ThisUsbDev.GpVar, 0, sizeof(ThisUsbDev.GpVar)); //清空数组 + memset(ThisUsbDev.GpVar, 0, sizeof(ThisUsbDev.GpVar)); //娓呯┖鏁扮粍 } - for(i = 0; i < ((PUSB_CFG_DESCR)buf)->wTotalLength; i += l) // 搜索中断端点描述符,跳过配置描述符和接口描述符 + for(i = 0; i < ((PUSB_CFG_DESCR)buf)->wTotalLength; i += l) // 鎼滅储涓柇绔偣鎻忚堪绗,璺宠繃閰嶇疆鎻忚堪绗﹀拰鎺ュ彛鎻忚堪绗 { - if(((PUSB_ENDP_DESCR)(buf + i))->bDescriptorType == USB_DESCR_TYP_ENDP // 是端点描述符 - && (((PUSB_ENDP_DESCR)(buf + i))->bmAttributes & USB_ENDP_TYPE_MASK) == USB_ENDP_TYPE_INTER // 是中断端点 - && (((PUSB_ENDP_DESCR)(buf + i))->bEndpointAddress & USB_ENDP_DIR_MASK)) // 是IN端点 - { // 保存中断端点的地址,位7用于同步标志位,清0 + if(((PUSB_ENDP_DESCR)(buf + i))->bDescriptorType == USB_DESCR_TYP_ENDP // 鏄鐐规弿杩扮 + && (((PUSB_ENDP_DESCR)(buf + i))->bmAttributes & USB_ENDP_TYPE_MASK) == USB_ENDP_TYPE_INTER // 鏄腑鏂鐐 + && (((PUSB_ENDP_DESCR)(buf + i))->bEndpointAddress & USB_ENDP_DIR_MASK)) // 鏄疘N绔偣 + { // 淇濆瓨涓柇绔偣鐨勫湴鍧,浣7鐢ㄤ簬鍚屾鏍囧織浣,娓0 if(HubPortIndex) { DevOnHubPort[HubPortIndex - 1].GpVar[s] = ((PUSB_ENDP_DESCR)(buf + i))->bEndpointAddress & USB_ENDP_ADDR_MASK; } else { - ThisUsbDev.GpVar[s] = ((PUSB_ENDP_DESCR)(buf + i))->bEndpointAddress & USB_ENDP_ADDR_MASK; // 中断端点的地址,可以根据需要保存wMaxPacketSize和bInterval + ThisUsbDev.GpVar[s] = ((PUSB_ENDP_DESCR)(buf + i))->bEndpointAddress & USB_ENDP_ADDR_MASK; // 涓柇绔偣鐨勫湴鍧锛屽彲浠ユ牴鎹渶瑕佷繚瀛榳MaxPacketSize鍜宐Interval } PRINT("%02x ", (uint16_t)ThisUsbDev.GpVar[s]); s++; if(s >= 4) { - break; //只分析4个端点 + break; //鍙垎鏋4涓鐐 } } - l = ((PUSB_ENDP_DESCR)(buf + i))->bLength; // 当前描述符长度,跳过 + l = ((PUSB_ENDP_DESCR)(buf + i))->bLength; // 褰撳墠鎻忚堪绗﹂暱搴,璺宠繃 if(l > 16) { break; @@ -83,9 +83,9 @@ uint8_t AnalyzeHidIntEndp(uint8_t *buf, uint8_t HubPortIndex) /********************************************************************* * @fn AnalyzeBulkEndp * - * @brief 分析出批量端点,GpVar[0]、GpVar[1]存放上传端点。GpVar[2]、GpVar[3]存放下传端点 + * @brief 鍒嗘瀽鍑烘壒閲忕鐐,GpVar[0]銆丟pVar[1]瀛樻斁涓婁紶绔偣銆侴pVar[2]銆丟pVar[3]瀛樻斁涓嬩紶绔偣 * - * @param buf - 待分析数据缓冲区地址 HubPortIndex:0表示根HUB,非0表示外部HUB下的端口号 + * @param buf - 寰呭垎鏋愭暟鎹紦鍐插尯鍦板潃 HubPortIndex锛0琛ㄧず鏍笻UB锛岄潪0琛ㄧず澶栭儴HUB涓嬬殑绔彛鍙 * * @return 0 */ @@ -97,17 +97,17 @@ uint8_t AnalyzeBulkEndp(uint8_t *buf, uint8_t HubPortIndex) if(HubPortIndex) { - memset(DevOnHubPort[HubPortIndex - 1].GpVar, 0, sizeof(DevOnHubPort[HubPortIndex - 1].GpVar)); //清空数组 + memset(DevOnHubPort[HubPortIndex - 1].GpVar, 0, sizeof(DevOnHubPort[HubPortIndex - 1].GpVar)); //娓呯┖鏁扮粍 } else { - memset(ThisUsbDev.GpVar, 0, sizeof(ThisUsbDev.GpVar)); //清空数组 + memset(ThisUsbDev.GpVar, 0, sizeof(ThisUsbDev.GpVar)); //娓呯┖鏁扮粍 } - for(i = 0; i < ((PUSB_CFG_DESCR)buf)->wTotalLength; i += l) // 搜索中断端点描述符,跳过配置描述符和接口描述符 + for(i = 0; i < ((PUSB_CFG_DESCR)buf)->wTotalLength; i += l) // 鎼滅储涓柇绔偣鎻忚堪绗,璺宠繃閰嶇疆鎻忚堪绗﹀拰鎺ュ彛鎻忚堪绗 { - if((((PUSB_ENDP_DESCR)(buf + i))->bDescriptorType == USB_DESCR_TYP_ENDP) // 是端点描述符 - && ((((PUSB_ENDP_DESCR)(buf + i))->bmAttributes & USB_ENDP_TYPE_MASK) == USB_ENDP_TYPE_BULK)) // 是中断端点 + if((((PUSB_ENDP_DESCR)(buf + i))->bDescriptorType == USB_DESCR_TYP_ENDP) // 鏄鐐规弿杩扮 + && ((((PUSB_ENDP_DESCR)(buf + i))->bmAttributes & USB_ENDP_TYPE_MASK) == USB_ENDP_TYPE_BULK)) // 鏄腑鏂鐐 { if(HubPortIndex) @@ -142,7 +142,7 @@ uint8_t AnalyzeBulkEndp(uint8_t *buf, uint8_t HubPortIndex) s2 = 3; } } - l = ((PUSB_ENDP_DESCR)(buf + i))->bLength; // 当前描述符长度,跳过 + l = ((PUSB_ENDP_DESCR)(buf + i))->bLength; // 褰撳墠鎻忚堪绗﹂暱搴,璺宠繃 if(l > 16) { break; @@ -154,11 +154,11 @@ uint8_t AnalyzeBulkEndp(uint8_t *buf, uint8_t HubPortIndex) /********************************************************************* * @fn InitRootDevice * - * @brief 初始化指定ROOT-HUB端口的USB设备 + * @brief 鍒濆鍖栨寚瀹歊OOT-HUB绔彛鐨刄SB璁惧 * * @param none * - * @return 错误码 + * @return 閿欒鐮 */ uint8_t InitRootDevice(void) { @@ -166,30 +166,30 @@ uint8_t InitRootDevice(void) uint8_t cfg, dv_cls, if_cls; PRINT("Reset host port\n"); - ResetRootHubPort(); // 检测到设备后,复位相应端口的USB总线 + ResetRootHubPort(); // 妫娴嬪埌璁惧鍚,澶嶄綅鐩稿簲绔彛鐨刄SB鎬荤嚎 for(i = 0, s = 0; i < 100; i++) - { // 等待USB设备复位后重新连接,100mS超时 + { // 绛夊緟USB璁惧澶嶄綅鍚庨噸鏂拌繛鎺,100mS瓒呮椂 mDelaymS(1); if(EnableRootHubPort() == ERR_SUCCESS) - { // 使能端口 + { // 浣胯兘绔彛 i = 0; s++; if(s > 100) { - break; // 已经稳定连接100mS + break; // 宸茬粡绋冲畾杩炴帴100mS } } } if(i) - { // 复位后设备没有连接 + { // 澶嶄綅鍚庤澶囨病鏈夎繛鎺 DisableRootHubPort(); PRINT("Disable host port because of disconnect\n"); return (ERR_USB_DISCON); } - SetUsbSpeed(ThisUsbDev.DeviceSpeed); // 设置当前USB速度 + SetUsbSpeed(ThisUsbDev.DeviceSpeed); // 璁剧疆褰撳墠USB閫熷害 PRINT("GetDevDescr: "); - s = CtrlGetDeviceDescr(); // 获取设备描述符 + s = CtrlGetDeviceDescr(); // 鑾峰彇璁惧鎻忚堪绗 if(s == ERR_SUCCESS) { for(i = 0; i < ((PUSB_SETUP_REQ)SetupGetDevDescr)->wLength; i++) @@ -198,14 +198,14 @@ uint8_t InitRootDevice(void) } PRINT("\n"); - ThisUsbDev.DeviceVID = ((PUSB_DEV_DESCR)Com_Buffer)->idVendor; //保存VID PID信息 + ThisUsbDev.DeviceVID = ((PUSB_DEV_DESCR)Com_Buffer)->idVendor; //淇濆瓨VID PID淇℃伅 ThisUsbDev.DevicePID = ((PUSB_DEV_DESCR)Com_Buffer)->idProduct; dv_cls = ((PUSB_DEV_DESCR)Com_Buffer)->bDeviceClass; s = CtrlSetUsbAddress(((PUSB_SETUP_REQ)SetupSetUsbAddr)->wValue); if(s == ERR_SUCCESS) { - ThisUsbDev.DeviceAddress = ((PUSB_SETUP_REQ)SetupSetUsbAddr)->wValue; // 保存USB地址 + ThisUsbDev.DeviceAddress = ((PUSB_SETUP_REQ)SetupSetUsbAddr)->wValue; // 淇濆瓨USB鍦板潃 PRINT("GetCfgDescr: "); s = CtrlGetConfigDescr(); @@ -216,12 +216,12 @@ uint8_t InitRootDevice(void) PRINT("x%02X ", (uint16_t)(Com_Buffer[i])); } PRINT("\n"); - /* 分析配置描述符,获取端点数据/各端点地址/各端点大小等,更新变量endp_addr和endp_size等 */ + /* 鍒嗘瀽閰嶇疆鎻忚堪绗,鑾峰彇绔偣鏁版嵁/鍚勭鐐瑰湴鍧/鍚勭鐐瑰ぇ灏忕瓑,鏇存柊鍙橀噺endp_addr鍜宔ndp_size绛 */ cfg = ((PUSB_CFG_DESCR)Com_Buffer)->bConfigurationValue; - if_cls = ((PUSB_CFG_DESCR_LONG)Com_Buffer)->itf_descr.bInterfaceClass; // 接口类代码 + if_cls = ((PUSB_CFG_DESCR_LONG)Com_Buffer)->itf_descr.bInterfaceClass; // 鎺ュ彛绫讳唬鐮 if((dv_cls == 0x00) && (if_cls == USB_DEV_CLASS_STORAGE)) - { // 是USB存储类设备,基本上确认是U盘 + { // 鏄疷SB瀛樺偍绫昏澶,鍩烘湰涓婄‘璁ゆ槸U鐩 #ifdef FOR_ROOT_UDISK_ONLY CHRV3DiskStatus = DISK_USB_ADDR; return (ERR_SUCCESS); @@ -231,40 +231,40 @@ uint8_t InitRootDevice(void) return (ERR_USB_UNSUPPORT); } #else - s = CtrlSetUsbConfig(cfg); // 设置USB设备配置 + s = CtrlSetUsbConfig(cfg); // 璁剧疆USB璁惧閰嶇疆 if(s == ERR_SUCCESS) { ThisUsbDev.DeviceStatus = ROOT_DEV_SUCCESS; ThisUsbDev.DeviceType = USB_DEV_CLASS_STORAGE; PRINT("USB-Disk Ready\n"); - SetUsbSpeed(1); // 默认为全速 + SetUsbSpeed(1); // 榛樿涓哄叏閫 return (ERR_SUCCESS); } } else if((dv_cls == 0x00) && (if_cls == USB_DEV_CLASS_PRINTER) && ((PUSB_CFG_DESCR_LONG)Com_Buffer)->itf_descr.bInterfaceSubClass == 0x01) - { // 是打印机类设备 - s = CtrlSetUsbConfig(cfg); // 设置USB设备配置 + { // 鏄墦鍗版満绫昏澶 + s = CtrlSetUsbConfig(cfg); // 璁剧疆USB璁惧閰嶇疆 if(s == ERR_SUCCESS) { - // 需保存端点信息以便主程序进行USB传输 + // 闇淇濆瓨绔偣淇℃伅浠ヤ究涓荤▼搴忚繘琛孶SB浼犺緭 ThisUsbDev.DeviceStatus = ROOT_DEV_SUCCESS; ThisUsbDev.DeviceType = USB_DEV_CLASS_PRINTER; PRINT("USB-Print Ready\n"); - SetUsbSpeed(1); // 默认为全速 + SetUsbSpeed(1); // 榛樿涓哄叏閫 return (ERR_SUCCESS); } } else if((dv_cls == 0x00) && (if_cls == USB_DEV_CLASS_HID) && ((PUSB_CFG_DESCR_LONG)Com_Buffer)->itf_descr.bInterfaceSubClass <= 0x01) - { // 是HID类设备,键盘/鼠标等 - // 从描述符中分析出HID中断端点的地址 - s = AnalyzeHidIntEndp(Com_Buffer, 0); // 从描述符中分析出HID中断端点的地址 + { // 鏄疕ID绫昏澶,閿洏/榧犳爣绛 + // 浠庢弿杩扮涓垎鏋愬嚭HID涓柇绔偣鐨勫湴鍧 + s = AnalyzeHidIntEndp(Com_Buffer, 0); // 浠庢弿杩扮涓垎鏋愬嚭HID涓柇绔偣鐨勫湴鍧 PRINT("AnalyzeHidIntEndp %02x\n", (uint16_t)s); - // 保存中断端点的地址,位7用于同步标志位,清0 + // 淇濆瓨涓柇绔偣鐨勫湴鍧,浣7鐢ㄤ簬鍚屾鏍囧織浣,娓0 if_cls = ((PUSB_CFG_DESCR_LONG)Com_Buffer)->itf_descr.bInterfaceProtocol; - s = CtrlSetUsbConfig(cfg); // 设置USB设备配置 + s = CtrlSetUsbConfig(cfg); // 璁剧疆USB璁惧閰嶇疆 if(s == ERR_SUCCESS) { - s = CtrlGetHIDDeviceReport(dv_cls); //获取报表描述符 + s = CtrlGetHIDDeviceReport(dv_cls); //鑾峰彇鎶ヨ〃鎻忚堪绗 if(s == ERR_SUCCESS) { for(i = 0; i < 64; i++) @@ -273,70 +273,70 @@ uint8_t InitRootDevice(void) } PRINT("\n"); } - // 需保存端点信息以便主程序进行USB传输 + // 闇淇濆瓨绔偣淇℃伅浠ヤ究涓荤▼搴忚繘琛孶SB浼犺緭 ThisUsbDev.DeviceStatus = ROOT_DEV_SUCCESS; if(if_cls == 1) { ThisUsbDev.DeviceType = DEV_TYPE_KEYBOARD; - // 进一步初始化,例如设备键盘指示灯LED等 + // 杩涗竴姝ュ垵濮嬪寲,渚嬪璁惧閿洏鎸囩ず鐏疞ED绛 PRINT("USB-Keyboard Ready\n"); - SetUsbSpeed(1); // 默认为全速 + SetUsbSpeed(1); // 榛樿涓哄叏閫 return (ERR_SUCCESS); } else if(if_cls == 2) { ThisUsbDev.DeviceType = DEV_TYPE_MOUSE; - // 为了以后查询鼠标状态,应该分析描述符,取得中断端口的地址,长度等信息 + // 涓轰簡浠ュ悗鏌ヨ榧犳爣鐘舵,搴旇鍒嗘瀽鎻忚堪绗,鍙栧緱涓柇绔彛鐨勫湴鍧,闀垮害绛変俊鎭 PRINT("USB-Mouse Ready\n"); - SetUsbSpeed(1); // 默认为全速 + SetUsbSpeed(1); // 榛樿涓哄叏閫 return (ERR_SUCCESS); } s = ERR_USB_UNSUPPORT; } } else if(dv_cls == USB_DEV_CLASS_HUB) - { // 是HUB类设备,集线器等 + { // 鏄疕UB绫昏澶,闆嗙嚎鍣ㄧ瓑 s = CtrlGetHubDescr(); if(s == ERR_SUCCESS) { PRINT("Max Port:%02X ", (((PXUSB_HUB_DESCR)Com_Buffer)->bNbrPorts)); - ThisUsbDev.GpHUBPortNum = ((PXUSB_HUB_DESCR)Com_Buffer)->bNbrPorts; // 保存HUB的端口数量 + ThisUsbDev.GpHUBPortNum = ((PXUSB_HUB_DESCR)Com_Buffer)->bNbrPorts; // 淇濆瓨HUB鐨勭鍙f暟閲 if(ThisUsbDev.GpHUBPortNum > HUB_MAX_PORTS) { - ThisUsbDev.GpHUBPortNum = HUB_MAX_PORTS; // 因为定义结构DevOnHubPort时人为假定每个HUB不超过HUB_MAX_PORTS个端口 + ThisUsbDev.GpHUBPortNum = HUB_MAX_PORTS; // 鍥犱负瀹氫箟缁撴瀯DevOnHubPort鏃朵汉涓哄亣瀹氭瘡涓狧UB涓嶈秴杩嘓UB_MAX_PORTS涓鍙 } - s = CtrlSetUsbConfig(cfg); // 设置USB设备配置 + s = CtrlSetUsbConfig(cfg); // 璁剧疆USB璁惧閰嶇疆 if(s == ERR_SUCCESS) { ThisUsbDev.DeviceStatus = ROOT_DEV_SUCCESS; ThisUsbDev.DeviceType = USB_DEV_CLASS_HUB; - //需保存端点信息以便主程序进行USB传输,本来中断端点可用于HUB事件通知,但本程序使用查询状态控制传输代替 - //给HUB各端口上电,查询各端口状态,初始化有设备连接的HUB端口,初始化设备 - for(i = 1; i <= ThisUsbDev.GpHUBPortNum; i++) // 给HUB各端口都上电 + //闇淇濆瓨绔偣淇℃伅浠ヤ究涓荤▼搴忚繘琛孶SB浼犺緭,鏈潵涓柇绔偣鍙敤浜嶩UB浜嬩欢閫氱煡,浣嗘湰绋嬪簭浣跨敤鏌ヨ鐘舵佹帶鍒朵紶杈撲唬鏇 + //缁橦UB鍚勭鍙d笂鐢,鏌ヨ鍚勭鍙g姸鎬,鍒濆鍖栨湁璁惧杩炴帴鐨凥UB绔彛,鍒濆鍖栬澶 + for(i = 1; i <= ThisUsbDev.GpHUBPortNum; i++) // 缁橦UB鍚勭鍙i兘涓婄數 { - DevOnHubPort[i - 1].DeviceStatus = ROOT_DEV_DISCONNECT; // 清外部HUB端口上设备的状态 + DevOnHubPort[i - 1].DeviceStatus = ROOT_DEV_DISCONNECT; // 娓呭閮℉UB绔彛涓婅澶囩殑鐘舵 s = HubSetPortFeature(i, HUB_PORT_POWER); if(s != ERR_SUCCESS) { - PRINT("Ext-HUB Port_%1d# power on error\n", (uint16_t)i); // 端口上电失败 + PRINT("Ext-HUB Port_%1d# power on error\n", (uint16_t)i); // 绔彛涓婄數澶辫触 } } PRINT("USB-HUB Ready\n"); - SetUsbSpeed(1); // 默认为全速 + SetUsbSpeed(1); // 榛樿涓哄叏閫 return (ERR_SUCCESS); } } } else - { // 可以进一步分析 - s = CtrlSetUsbConfig(cfg); // 设置USB设备配置 + { // 鍙互杩涗竴姝ュ垎鏋 + s = CtrlSetUsbConfig(cfg); // 璁剧疆USB璁惧閰嶇疆 if(s == ERR_SUCCESS) { - // 需保存端点信息以便主程序进行USB传输 + // 闇淇濆瓨绔偣淇℃伅浠ヤ究涓荤▼搴忚繘琛孶SB浼犺緭 ThisUsbDev.DeviceStatus = ROOT_DEV_SUCCESS; ThisUsbDev.DeviceType = DEV_TYPE_UNKNOW; - SetUsbSpeed(1); // 默认为全速 - return (ERR_SUCCESS); /* 未知设备初始化成功 */ + SetUsbSpeed(1); // 榛樿涓哄叏閫 + return (ERR_SUCCESS); /* 鏈煡璁惧鍒濆鍖栨垚鍔 */ } } #endif @@ -350,18 +350,18 @@ uint8_t InitRootDevice(void) #else ThisUsbDev.DeviceStatus = ROOT_DEV_FAILED; #endif - SetUsbSpeed(1); // 默认为全速 + SetUsbSpeed(1); // 榛樿涓哄叏閫 return (s); } /********************************************************************* * @fn InitDevOnHub * - * @brief 初始化枚举外部HUB后的二级USB设备 + * @brief 鍒濆鍖栨灇涓惧閮℉UB鍚庣殑浜岀骇USB璁惧 * - * @param HubPortIndex - 指定外部HUB + * @param HubPortIndex - 鎸囧畾澶栭儴HUB * - * @return 错误码 + * @return 閿欒鐮 */ uint8_t InitDevOnHub(uint8_t HubPortIndex) { @@ -372,26 +372,26 @@ uint8_t InitDevOnHub(uint8_t HubPortIndex) { return (ERR_USB_UNKNOWN); } - SelectHubPort(HubPortIndex); // 选择操作指定的ROOT-HUB端口的外部HUB的指定端口,选择速度 + SelectHubPort(HubPortIndex); // 閫夋嫨鎿嶄綔鎸囧畾鐨凴OOT-HUB绔彛鐨勫閮℉UB鐨勬寚瀹氱鍙,閫夋嫨閫熷害 PRINT("GetDevDescr: "); - s = CtrlGetDeviceDescr(); // 获取设备描述符 + s = CtrlGetDeviceDescr(); // 鑾峰彇璁惧鎻忚堪绗 if(s != ERR_SUCCESS) { return (s); } - DevOnHubPort[HubPortIndex - 1].DeviceVID = ((uint16_t)((PUSB_DEV_DESCR)Com_Buffer)->idVendor); //保存VID PID信息 + DevOnHubPort[HubPortIndex - 1].DeviceVID = ((uint16_t)((PUSB_DEV_DESCR)Com_Buffer)->idVendor); //淇濆瓨VID PID淇℃伅 DevOnHubPort[HubPortIndex - 1].DevicePID = ((uint16_t)((PUSB_DEV_DESCR)Com_Buffer)->idProduct); - dv_cls = ((PUSB_DEV_DESCR)Com_Buffer)->bDeviceClass; // 设备类代码 - cfg = (1 << 4) + HubPortIndex; // 计算出一个USB地址,避免地址重叠 - s = CtrlSetUsbAddress(cfg); // 设置USB设备地址 + dv_cls = ((PUSB_DEV_DESCR)Com_Buffer)->bDeviceClass; // 璁惧绫讳唬鐮 + cfg = (1 << 4) + HubPortIndex; // 璁$畻鍑轰竴涓猆SB鍦板潃,閬垮厤鍦板潃閲嶅彔 + s = CtrlSetUsbAddress(cfg); // 璁剧疆USB璁惧鍦板潃 if(s != ERR_SUCCESS) { return (s); } - DevOnHubPort[HubPortIndex - 1].DeviceAddress = cfg; // 保存分配的USB地址 + DevOnHubPort[HubPortIndex - 1].DeviceAddress = cfg; // 淇濆瓨鍒嗛厤鐨刄SB鍦板潃 PRINT("GetCfgDescr: "); - s = CtrlGetConfigDescr(); // 获取配置描述符 + s = CtrlGetConfigDescr(); // 鑾峰彇閰嶇疆鎻忚堪绗 if(s != ERR_SUCCESS) { return (s); @@ -402,9 +402,9 @@ uint8_t InitDevOnHub(uint8_t HubPortIndex) PRINT("x%02X ", (uint16_t)(Com_Buffer[i])); } PRINT("\n"); - /* 分析配置描述符,获取端点数据/各端点地址/各端点大小等,更新变量endp_addr和endp_size等 */ - if_cls = ((PXUSB_CFG_DESCR_LONG)Com_Buffer)->itf_descr.bInterfaceClass; // 接口类代码 - if(dv_cls == 0x00 && if_cls == USB_DEV_CLASS_STORAGE) // 是USB存储类设备,基本上确认是U盘 + /* 鍒嗘瀽閰嶇疆鎻忚堪绗,鑾峰彇绔偣鏁版嵁/鍚勭鐐瑰湴鍧/鍚勭鐐瑰ぇ灏忕瓑,鏇存柊鍙橀噺endp_addr鍜宔ndp_size绛 */ + if_cls = ((PXUSB_CFG_DESCR_LONG)Com_Buffer)->itf_descr.bInterfaceClass; // 鎺ュ彛绫讳唬鐮 + if(dv_cls == 0x00 && if_cls == USB_DEV_CLASS_STORAGE) // 鏄疷SB瀛樺偍绫昏澶,鍩烘湰涓婄‘璁ゆ槸U鐩 { AnalyzeBulkEndp(Com_Buffer, HubPortIndex); for(i = 0; i != 4; i++) @@ -412,28 +412,28 @@ uint8_t InitDevOnHub(uint8_t HubPortIndex) PRINT("%02x ", (uint16_t)DevOnHubPort[HubPortIndex - 1].GpVar[i]); } PRINT("\n"); - s = CtrlSetUsbConfig(cfg); // 设置USB设备配置 + s = CtrlSetUsbConfig(cfg); // 璁剧疆USB璁惧閰嶇疆 if(s == ERR_SUCCESS) { DevOnHubPort[HubPortIndex - 1].DeviceStatus = ROOT_DEV_SUCCESS; DevOnHubPort[HubPortIndex - 1].DeviceType = USB_DEV_CLASS_STORAGE; PRINT("USB-Disk Ready\n"); - SetUsbSpeed(1); // 默认为全速 + SetUsbSpeed(1); // 榛樿涓哄叏閫 return (ERR_SUCCESS); } } - else if((dv_cls == 0x00) && (if_cls == USB_DEV_CLASS_HID) && (((PXUSB_CFG_DESCR_LONG)Com_Buffer)->itf_descr.bInterfaceSubClass <= 0x01)) // 是HID类设备,键盘/鼠标等 + else if((dv_cls == 0x00) && (if_cls == USB_DEV_CLASS_HID) && (((PXUSB_CFG_DESCR_LONG)Com_Buffer)->itf_descr.bInterfaceSubClass <= 0x01)) // 鏄疕ID绫昏澶,閿洏/榧犳爣绛 { ifc = ((PXUSB_CFG_DESCR_LONG)Com_Buffer)->cfg_descr.bNumInterfaces; - s = AnalyzeHidIntEndp(Com_Buffer, HubPortIndex); // 从描述符中分析出HID中断端点的地址 + s = AnalyzeHidIntEndp(Com_Buffer, HubPortIndex); // 浠庢弿杩扮涓垎鏋愬嚭HID涓柇绔偣鐨勫湴鍧 PRINT("AnalyzeHidIntEndp %02x\n", (uint16_t)s); if_cls = ((PXUSB_CFG_DESCR_LONG)Com_Buffer)->itf_descr.bInterfaceProtocol; - s = CtrlSetUsbConfig(cfg); // 设置USB设备配置 + s = CtrlSetUsbConfig(cfg); // 璁剧疆USB璁惧閰嶇疆 if(s == ERR_SUCCESS) { for(dv_cls = 0; dv_cls < ifc; dv_cls++) { - s = CtrlGetHIDDeviceReport(dv_cls); //获取报表描述符 + s = CtrlGetHIDDeviceReport(dv_cls); //鑾峰彇鎶ヨ〃鎻忚堪绗 if(s == ERR_SUCCESS) { for(i = 0; i < 64; i++) @@ -443,105 +443,105 @@ uint8_t InitDevOnHub(uint8_t HubPortIndex) PRINT("\n"); } } - //需保存端点信息以便主程序进行USB传输 + //闇淇濆瓨绔偣淇℃伅浠ヤ究涓荤▼搴忚繘琛孶SB浼犺緭 DevOnHubPort[HubPortIndex - 1].DeviceStatus = ROOT_DEV_SUCCESS; if(if_cls == 1) { DevOnHubPort[HubPortIndex - 1].DeviceType = DEV_TYPE_KEYBOARD; - //进一步初始化,例如设备键盘指示灯LED等 + //杩涗竴姝ュ垵濮嬪寲,渚嬪璁惧閿洏鎸囩ず鐏疞ED绛 if(ifc > 1) { PRINT("USB_DEV_CLASS_HID Ready\n"); - DevOnHubPort[HubPortIndex - 1].DeviceType = USB_DEV_CLASS_HID; //复合HID设备 + DevOnHubPort[HubPortIndex - 1].DeviceType = USB_DEV_CLASS_HID; //澶嶅悎HID璁惧 } PRINT("USB-Keyboard Ready\n"); - SetUsbSpeed(1); // 默认为全速 + SetUsbSpeed(1); // 榛樿涓哄叏閫 return (ERR_SUCCESS); } else if(if_cls == 2) { DevOnHubPort[HubPortIndex - 1].DeviceType = DEV_TYPE_MOUSE; - //为了以后查询鼠标状态,应该分析描述符,取得中断端口的地址,长度等信息 + //涓轰簡浠ュ悗鏌ヨ榧犳爣鐘舵,搴旇鍒嗘瀽鎻忚堪绗,鍙栧緱涓柇绔彛鐨勫湴鍧,闀垮害绛変俊鎭 if(ifc > 1) { PRINT("USB_DEV_CLASS_HID Ready\n"); - DevOnHubPort[HubPortIndex - 1].DeviceType = USB_DEV_CLASS_HID; //复合HID设备 + DevOnHubPort[HubPortIndex - 1].DeviceType = USB_DEV_CLASS_HID; //澶嶅悎HID璁惧 } PRINT("USB-Mouse Ready\n"); - SetUsbSpeed(1); // 默认为全速 + SetUsbSpeed(1); // 榛樿涓哄叏閫 return (ERR_SUCCESS); } s = ERR_USB_UNSUPPORT; } } - else if(dv_cls == USB_DEV_CLASS_HUB) // 是HUB类设备,集线器等 + else if(dv_cls == USB_DEV_CLASS_HUB) // 鏄疕UB绫昏澶,闆嗙嚎鍣ㄧ瓑 { DevOnHubPort[HubPortIndex - 1].DeviceType = USB_DEV_CLASS_HUB; - PRINT("This program don't support Level 2 HUB\n"); // 需要支持多级HUB级联请参考本程序进行扩展 - s = HubClearPortFeature(i, HUB_PORT_ENABLE); // 禁止HUB端口 + PRINT("This program don't support Level 2 HUB\n"); // 闇瑕佹敮鎸佸绾UB绾ц仈璇峰弬鑰冩湰绋嬪簭杩涜鎵╁睍 + s = HubClearPortFeature(i, HUB_PORT_ENABLE); // 绂佹HUB绔彛 if(s != ERR_SUCCESS) { return (s); } s = ERR_USB_UNSUPPORT; } - else //其他设备 + else //鍏朵粬璁惧 { - AnalyzeBulkEndp(Com_Buffer, HubPortIndex); //分析出批量端点 + AnalyzeBulkEndp(Com_Buffer, HubPortIndex); //鍒嗘瀽鍑烘壒閲忕鐐 for(i = 0; i != 4; i++) { PRINT("%02x ", (uint16_t)DevOnHubPort[HubPortIndex - 1].GpVar[i]); } PRINT("\n"); - s = CtrlSetUsbConfig(cfg); // 设置USB设备配置 + s = CtrlSetUsbConfig(cfg); // 璁剧疆USB璁惧閰嶇疆 if(s == ERR_SUCCESS) { - //需保存端点信息以便主程序进行USB传输 + //闇淇濆瓨绔偣淇℃伅浠ヤ究涓荤▼搴忚繘琛孶SB浼犺緭 DevOnHubPort[HubPortIndex - 1].DeviceStatus = ROOT_DEV_SUCCESS; DevOnHubPort[HubPortIndex - 1].DeviceType = dv_cls ? dv_cls : if_cls; - SetUsbSpeed(1); // 默认为全速 - return (ERR_SUCCESS); //未知设备初始化成功 + SetUsbSpeed(1); // 榛樿涓哄叏閫 + return (ERR_SUCCESS); //鏈煡璁惧鍒濆鍖栨垚鍔 } } PRINT("InitDevOnHub Err = %02X\n", (uint16_t)s); DevOnHubPort[HubPortIndex - 1].DeviceStatus = ROOT_DEV_FAILED; - SetUsbSpeed(1); // 默认为全速 + SetUsbSpeed(1); // 榛樿涓哄叏閫 return (s); } /********************************************************************* * @fn EnumHubPort * - * @brief 枚举指定ROOT-HUB端口上的外部HUB集线器的各个端口,检查各端口有无连接或移除事件并初始化二级USB设备 + * @brief 鏋氫妇鎸囧畾ROOT-HUB绔彛涓婄殑澶栭儴HUB闆嗙嚎鍣ㄧ殑鍚勪釜绔彛,妫鏌ュ悇绔彛鏈夋棤杩炴帴鎴栫Щ闄や簨浠跺苟鍒濆鍖栦簩绾SB璁惧 * - * @param RootHubIndex - ROOT_HUB0和ROOT_HUB1 + * @param RootHubIndex - ROOT_HUB0鍜孯OOT_HUB1 * - * @return 错误码 + * @return 閿欒鐮 */ uint8_t EnumHubPort() { uint8_t i, s; - for(i = 1; i <= ThisUsbDev.GpHUBPortNum; i++) // 查询集线器的端口是否有变化 + for(i = 1; i <= ThisUsbDev.GpHUBPortNum; i++) // 鏌ヨ闆嗙嚎鍣ㄧ殑绔彛鏄惁鏈夊彉鍖 { - SelectHubPort(0); // 选择操作指定的ROOT-HUB端口,设置当前USB速度以及被操作设备的USB地址 - s = HubGetPortStatus(i); // 获取端口状态 + SelectHubPort(0); // 閫夋嫨鎿嶄綔鎸囧畾鐨凴OOT-HUB绔彛,璁剧疆褰撳墠USB閫熷害浠ュ強琚搷浣滆澶囩殑USB鍦板潃 + s = HubGetPortStatus(i); // 鑾峰彇绔彛鐘舵 if(s != ERR_SUCCESS) { - return (s); // 可能是该HUB断开了 + return (s); // 鍙兘鏄HUB鏂紑浜 } if(((Com_Buffer[0] & (1 << (HUB_PORT_CONNECTION & 0x07))) && (Com_Buffer[2] & (1 << (HUB_C_PORT_CONNECTION & 0x07)))) || (Com_Buffer[2] == 0x10)) - { // 发现有设备连接 - DevOnHubPort[i - 1].DeviceStatus = ROOT_DEV_CONNECTED; // 有设备连接 + { // 鍙戠幇鏈夎澶囪繛鎺 + DevOnHubPort[i - 1].DeviceStatus = ROOT_DEV_CONNECTED; // 鏈夎澶囪繛鎺 DevOnHubPort[i - 1].DeviceAddress = 0x00; - s = HubGetPortStatus(i); // 获取端口状态 + s = HubGetPortStatus(i); // 鑾峰彇绔彛鐘舵 if(s != ERR_SUCCESS) { - return (s); // 可能是该HUB断开了 + return (s); // 鍙兘鏄HUB鏂紑浜 } - DevOnHubPort[i - 1].DeviceSpeed = Com_Buffer[1] & (1 << (HUB_PORT_LOW_SPEED & 0x07)) ? 0 : 1; // 低速还是全速 + DevOnHubPort[i - 1].DeviceSpeed = Com_Buffer[1] & (1 << (HUB_PORT_LOW_SPEED & 0x07)) ? 0 : 1; // 浣庨熻繕鏄叏閫 if(DevOnHubPort[i - 1].DeviceSpeed) { PRINT("Found full speed device on port %1d\n", (uint16_t)i); @@ -550,97 +550,97 @@ uint8_t EnumHubPort() { PRINT("Found low speed device on port %1d\n", (uint16_t)i); } - mDelaymS(200); // 等待设备上电稳定 - s = HubSetPortFeature(i, HUB_PORT_RESET); // 对有设备连接的端口复位 + mDelaymS(200); // 绛夊緟璁惧涓婄數绋冲畾 + s = HubSetPortFeature(i, HUB_PORT_RESET); // 瀵规湁璁惧杩炴帴鐨勭鍙e浣 if(s != ERR_SUCCESS) { - return (s); // 可能是该HUB断开了 + return (s); // 鍙兘鏄HUB鏂紑浜 } PRINT("Reset port and then wait in\n"); - do // 查询复位端口,直到复位完成,把完成后的状态显示出来 + do // 鏌ヨ澶嶄綅绔彛,鐩村埌澶嶄綅瀹屾垚,鎶婂畬鎴愬悗鐨勭姸鎬佹樉绀哄嚭鏉 { mDelaymS(1); s = HubGetPortStatus(i); if(s != ERR_SUCCESS) { - return (s); // 可能是该HUB断开了 + return (s); // 鍙兘鏄HUB鏂紑浜 } - } while(Com_Buffer[0] & (1 << (HUB_PORT_RESET & 0x07))); // 端口正在复位则等待 + } while(Com_Buffer[0] & (1 << (HUB_PORT_RESET & 0x07))); // 绔彛姝e湪澶嶄綅鍒欑瓑寰 mDelaymS(100); - s = HubClearPortFeature(i, HUB_C_PORT_RESET); // 清除复位完成标志 - // s = HubSetPortFeature( i, HUB_PORT_ENABLE ); // 启用HUB端口 - s = HubClearPortFeature(i, HUB_C_PORT_CONNECTION); // 清除连接或移除变化标志 + s = HubClearPortFeature(i, HUB_C_PORT_RESET); // 娓呴櫎澶嶄綅瀹屾垚鏍囧織 + // s = HubSetPortFeature( i, HUB_PORT_ENABLE ); // 鍚敤HUB绔彛 + s = HubClearPortFeature(i, HUB_C_PORT_CONNECTION); // 娓呴櫎杩炴帴鎴栫Щ闄ゅ彉鍖栨爣蹇 if(s != ERR_SUCCESS) { return (s); } - s = HubGetPortStatus(i); // 再读取状态,复查设备是否还在 + s = HubGetPortStatus(i); // 鍐嶈鍙栫姸鎬,澶嶆煡璁惧鏄惁杩樺湪 if(s != ERR_SUCCESS) { return (s); } if((Com_Buffer[0] & (1 << (HUB_PORT_CONNECTION & 0x07))) == 0) { - DevOnHubPort[i - 1].DeviceStatus = ROOT_DEV_DISCONNECT; // 设备不在了 + DevOnHubPort[i - 1].DeviceStatus = ROOT_DEV_DISCONNECT; // 璁惧涓嶅湪浜 } - s = InitDevOnHub(i); // 初始化二级USB设备 + s = InitDevOnHub(i); // 鍒濆鍖栦簩绾SB璁惧 if(s != ERR_SUCCESS) { return (s); } - SetUsbSpeed(1); // 默认为全速 + SetUsbSpeed(1); // 榛樿涓哄叏閫 } - else if(Com_Buffer[2] & (1 << (HUB_C_PORT_ENABLE & 0x07))) // 设备连接出错 + else if(Com_Buffer[2] & (1 << (HUB_C_PORT_ENABLE & 0x07))) // 璁惧杩炴帴鍑洪敊 { - HubClearPortFeature(i, HUB_C_PORT_ENABLE); // 清除连接错误标志 + HubClearPortFeature(i, HUB_C_PORT_ENABLE); // 娓呴櫎杩炴帴閿欒鏍囧織 PRINT("Device on port error\n"); - s = HubSetPortFeature(i, HUB_PORT_RESET); // 对有设备连接的端口复位 + s = HubSetPortFeature(i, HUB_PORT_RESET); // 瀵规湁璁惧杩炴帴鐨勭鍙e浣 if(s != ERR_SUCCESS) - return (s); // 可能是该HUB断开了 - do // 查询复位端口,直到复位完成,把完成后的状态显示出来 + return (s); // 鍙兘鏄HUB鏂紑浜 + do // 鏌ヨ澶嶄綅绔彛,鐩村埌澶嶄綅瀹屾垚,鎶婂畬鎴愬悗鐨勭姸鎬佹樉绀哄嚭鏉 { mDelaymS(1); s = HubGetPortStatus(i); if(s != ERR_SUCCESS) - return (s); // 可能是该HUB断开了 - } while(Com_Buffer[0] & (1 << (HUB_PORT_RESET & 0x07))); // 端口正在复位则等待 + return (s); // 鍙兘鏄HUB鏂紑浜 + } while(Com_Buffer[0] & (1 << (HUB_PORT_RESET & 0x07))); // 绔彛姝e湪澶嶄綅鍒欑瓑寰 } - else if((Com_Buffer[0] & (1 << (HUB_PORT_CONNECTION & 0x07))) == 0) // 设备已经断开 + else if((Com_Buffer[0] & (1 << (HUB_PORT_CONNECTION & 0x07))) == 0) // 璁惧宸茬粡鏂紑 { if(DevOnHubPort[i - 1].DeviceStatus >= ROOT_DEV_CONNECTED) { PRINT("Device on port %1d removed\n", (uint16_t)i); } - DevOnHubPort[i - 1].DeviceStatus = ROOT_DEV_DISCONNECT; // 有设备连接 + DevOnHubPort[i - 1].DeviceStatus = ROOT_DEV_DISCONNECT; // 鏈夎澶囪繛鎺 if(Com_Buffer[2] & (1 << (HUB_C_PORT_CONNECTION & 0x07))) { - HubClearPortFeature(i, HUB_C_PORT_CONNECTION); // 清除移除变化标志 + HubClearPortFeature(i, HUB_C_PORT_CONNECTION); // 娓呴櫎绉婚櫎鍙樺寲鏍囧織 } } } - return (ERR_SUCCESS); // 返回操作成功 + return (ERR_SUCCESS); // 杩斿洖鎿嶄綔鎴愬姛 } /********************************************************************* * @fn EnumAllHubPort * - * @brief 枚举所有ROOT-HUB端口下外部HUB后的二级USB设备 + * @brief 鏋氫妇鎵鏈塕OOT-HUB绔彛涓嬪閮℉UB鍚庣殑浜岀骇USB璁惧 * - * @return 错误码 + * @return 閿欒鐮 */ uint8_t EnumAllHubPort(void) { uint8_t s; - if((ThisUsbDev.DeviceStatus >= ROOT_DEV_SUCCESS) && (ThisUsbDev.DeviceType == USB_DEV_CLASS_HUB)) // HUB枚举成功 + if((ThisUsbDev.DeviceStatus >= ROOT_DEV_SUCCESS) && (ThisUsbDev.DeviceType == USB_DEV_CLASS_HUB)) // HUB鏋氫妇鎴愬姛 { - SelectHubPort(0); // 选择操作指定的ROOT-HUB端口,设置当前USB速度以及被操作设备的USB地址 - s = EnumHubPort(); // 枚举指定ROOT-HUB端口上的外部HUB集线器的各个端口,检查各端口有无连接或移除事件 - if(s != ERR_SUCCESS) // 可能是HUB断开了 + SelectHubPort(0); // 閫夋嫨鎿嶄綔鎸囧畾鐨凴OOT-HUB绔彛,璁剧疆褰撳墠USB閫熷害浠ュ強琚搷浣滆澶囩殑USB鍦板潃 + s = EnumHubPort(); // 鏋氫妇鎸囧畾ROOT-HUB绔彛涓婄殑澶栭儴HUB闆嗙嚎鍣ㄧ殑鍚勪釜绔彛,妫鏌ュ悇绔彛鏈夋棤杩炴帴鎴栫Щ闄や簨浠 + if(s != ERR_SUCCESS) // 鍙兘鏄疕UB鏂紑浜 { PRINT("EnumAllHubPort err = %02X\n", (uint16_t)s); } - SetUsbSpeed(1); // 默认为全速 + SetUsbSpeed(1); // 榛樿涓哄叏閫 } return (ERR_SUCCESS); } @@ -648,32 +648,32 @@ uint8_t EnumAllHubPort(void) /********************************************************************* * @fn SearchTypeDevice * - * @brief 在ROOT-HUB以及外部HUB各端口上搜索指定类型的设备所在的端口号,输出端口号为0xFFFF则未搜索到. - * 当然也可以根据USB的厂商VID产品PID进行搜索(事先要记录各设备的VID和PID),以及指定搜索序号 + * @brief 鍦≧OOT-HUB浠ュ強澶栭儴HUB鍚勭鍙d笂鎼滅储鎸囧畾绫诲瀷鐨勮澶囨墍鍦ㄧ殑绔彛鍙,杈撳嚭绔彛鍙蜂负0xFFFF鍒欐湭鎼滅储鍒. + * 褰撶劧涔熷彲浠ユ牴鎹甎SB鐨勫巶鍟哣ID浜у搧PID杩涜鎼滅储(浜嬪厛瑕佽褰曞悇璁惧鐨刅ID鍜孭ID),浠ュ強鎸囧畾鎼滅储搴忓彿 * - * @param type - 搜索的设备类型 + * @param type - 鎼滅储鐨勮澶囩被鍨 * - * @return 输出高8位为ROOT-HUB端口号,低8位为外部HUB的端口号,低8位为0则设备直接在ROOT-HUB端口上 + * @return 杈撳嚭楂8浣嶄负ROOT-HUB绔彛鍙,浣8浣嶄负澶栭儴HUB鐨勭鍙e彿,浣8浣嶄负0鍒欒澶囩洿鎺ュ湪ROOT-HUB绔彛涓 */ uint16_t SearchTypeDevice(uint8_t type) { - uint8_t RootHubIndex; //CH554只有一个USB口,RootHubIndex = 0,只需看返回值的低八位即可 + uint8_t RootHubIndex; //CH554鍙湁涓涓猆SB鍙,RootHubIndex = 0,鍙渶鐪嬭繑鍥炲肩殑浣庡叓浣嶅嵆鍙 uint8_t HubPortIndex; RootHubIndex = 0; - if((ThisUsbDev.DeviceType == USB_DEV_CLASS_HUB) && (ThisUsbDev.DeviceStatus >= ROOT_DEV_SUCCESS)) // 外部集线器HUB且枚举成功 + if((ThisUsbDev.DeviceType == USB_DEV_CLASS_HUB) && (ThisUsbDev.DeviceStatus >= ROOT_DEV_SUCCESS)) // 澶栭儴闆嗙嚎鍣℉UB涓旀灇涓炬垚鍔 { - for(HubPortIndex = 1; HubPortIndex <= ThisUsbDev.GpHUBPortNum; HubPortIndex++) // 搜索外部HUB的各个端口 + for(HubPortIndex = 1; HubPortIndex <= ThisUsbDev.GpHUBPortNum; HubPortIndex++) // 鎼滅储澶栭儴HUB鐨勫悇涓鍙 { if(DevOnHubPort[HubPortIndex - 1].DeviceType == type && DevOnHubPort[HubPortIndex - 1].DeviceStatus >= ROOT_DEV_SUCCESS) { - return (((uint16_t)RootHubIndex << 8) | HubPortIndex); // 类型匹配且枚举成功 + return (((uint16_t)RootHubIndex << 8) | HubPortIndex); // 绫诲瀷鍖归厤涓旀灇涓炬垚鍔 } } } if((ThisUsbDev.DeviceType == type) && (ThisUsbDev.DeviceStatus >= ROOT_DEV_SUCCESS)) { - return ((uint16_t)RootHubIndex << 8); // 类型匹配且枚举成功,在ROOT-HUB端口上 + return ((uint16_t)RootHubIndex << 8); // 绫诲瀷鍖归厤涓旀灇涓炬垚鍔,鍦≧OOT-HUB绔彛涓 } return (0xFFFF); @@ -682,11 +682,11 @@ uint16_t SearchTypeDevice(uint8_t type) /********************************************************************* * @fn SETorOFFNumLock * - * @brief NumLock的点灯判断 + * @brief NumLock鐨勭偣鐏垽鏂 * - * @param buf - 点灯键值 + * @param buf - 鐐圭伅閿 * - * @return 错误码 + * @return 閿欒鐮 */ uint8_t SETorOFFNumLock(uint8_t *buf) { @@ -698,7 +698,7 @@ uint8_t SETorOFFNumLock(uint8_t *buf) { ((uint8_t *)pSetupReq)[s] = tmp[s]; } - s = HostCtrlTransfer(Com_Buffer, &len); // 执行控制传输 + s = HostCtrlTransfer(Com_Buffer, &len); // 鎵ц鎺у埗浼犺緭 if(s != ERR_SUCCESS) { return (s); @@ -710,11 +710,11 @@ uint8_t SETorOFFNumLock(uint8_t *buf) /********************************************************************* * @fn CtrlGetHIDDeviceReport * - * @brief 获取HID设备报表描述符,返回在TxBuffer中 + * @brief 鑾峰彇HID璁惧鎶ヨ〃鎻忚堪绗,杩斿洖鍦═xBuffer涓 * * @param none * - * @return 错误码 + * @return 閿欒鐮 */ uint8_t CtrlGetHIDDeviceReport(uint8_t infc) { @@ -723,7 +723,7 @@ uint8_t CtrlGetHIDDeviceReport(uint8_t infc) CopySetupReqPkg(SetupSetHIDIdle); pSetupReq->wIndex = infc; - s = HostCtrlTransfer(Com_Buffer, &len); // 执行控制传输 + s = HostCtrlTransfer(Com_Buffer, &len); // 鎵ц鎺у埗浼犺緭 if(s != ERR_SUCCESS) { return (s); @@ -731,7 +731,7 @@ uint8_t CtrlGetHIDDeviceReport(uint8_t infc) CopySetupReqPkg(SetupGetHIDDevReport); pSetupReq->wIndex = infc; - s = HostCtrlTransfer(Com_Buffer, &len); // 执行控制传输 + s = HostCtrlTransfer(Com_Buffer, &len); // 鎵ц鎺у埗浼犺緭 if(s != ERR_SUCCESS) { return (s); @@ -743,11 +743,11 @@ uint8_t CtrlGetHIDDeviceReport(uint8_t infc) /********************************************************************* * @fn CtrlGetHubDescr * - * @brief 获取HUB描述符,返回在Com_Buffer中 + * @brief 鑾峰彇HUB鎻忚堪绗,杩斿洖鍦–om_Buffer涓 * * @param none * - * @return 错误码 + * @return 閿欒鐮 */ uint8_t CtrlGetHubDescr(void) { @@ -755,27 +755,27 @@ uint8_t CtrlGetHubDescr(void) uint8_t len; CopySetupReqPkg(SetupGetHubDescr); - s = HostCtrlTransfer(Com_Buffer, &len); // 执行控制传输 + s = HostCtrlTransfer(Com_Buffer, &len); // 鎵ц鎺у埗浼犺緭 if(s != ERR_SUCCESS) { return (s); } if(len < ((PUSB_SETUP_REQ)SetupGetHubDescr)->wLength) { - return (ERR_USB_BUF_OVER); // 描述符长度错误 + return (ERR_USB_BUF_OVER); // 鎻忚堪绗﹂暱搴﹂敊璇 } - // if ( len < 4 ) return( ERR_USB_BUF_OVER ); // 描述符长度错误 + // if ( len < 4 ) return( ERR_USB_BUF_OVER ); // 鎻忚堪绗﹂暱搴﹂敊璇 return (ERR_SUCCESS); } /********************************************************************* * @fn HubGetPortStatus * - * @brief 查询HUB端口状态,返回在Com_Buffer中 + * @brief 鏌ヨHUB绔彛鐘舵,杩斿洖鍦–om_Buffer涓 * - * @param HubPortIndex - 端口号 + * @param HubPortIndex - 绔彛鍙 * - * @return 错误码 + * @return 閿欒鐮 */ uint8_t HubGetPortStatus(uint8_t HubPortIndex) { @@ -787,14 +787,14 @@ uint8_t HubGetPortStatus(uint8_t HubPortIndex) pSetupReq->wValue = 0x0000; pSetupReq->wIndex = 0x0000 | HubPortIndex; pSetupReq->wLength = 0x0004; - s = HostCtrlTransfer(Com_Buffer, &len); // 执行控制传输 + s = HostCtrlTransfer(Com_Buffer, &len); // 鎵ц鎺у埗浼犺緭 if(s != ERR_SUCCESS) { return (s); } if(len < 4) { - return (ERR_USB_BUF_OVER); // 描述符长度错误 + return (ERR_USB_BUF_OVER); // 鎻忚堪绗﹂暱搴﹂敊璇 } return (ERR_SUCCESS); } @@ -802,12 +802,12 @@ uint8_t HubGetPortStatus(uint8_t HubPortIndex) /********************************************************************* * @fn HubSetPortFeature * - * @brief 设置HUB端口特性 + * @brief 璁剧疆HUB绔彛鐗规 * - * @param HubPortIndex - 端口号 - * @param FeatureSelt - 端口特性 + * @param HubPortIndex - 绔彛鍙 + * @param FeatureSelt - 绔彛鐗规 * - * @return 错误码 + * @return 閿欒鐮 */ uint8_t HubSetPortFeature(uint8_t HubPortIndex, uint8_t FeatureSelt) { @@ -816,18 +816,18 @@ uint8_t HubSetPortFeature(uint8_t HubPortIndex, uint8_t FeatureSelt) pSetupReq->wValue = 0x0000 | FeatureSelt; pSetupReq->wIndex = 0x0000 | HubPortIndex; pSetupReq->wLength = 0x0000; - return (HostCtrlTransfer(NULL, NULL)); // 执行控制传输 + return (HostCtrlTransfer(NULL, NULL)); // 鎵ц鎺у埗浼犺緭 } /********************************************************************* * @fn HubClearPortFeature * - * @brief 清除HUB端口特性 + * @brief 娓呴櫎HUB绔彛鐗规 * - * @param HubPortIndex - 端口号 - * @param FeatureSelt - 端口特性 + * @param HubPortIndex - 绔彛鍙 + * @param FeatureSelt - 绔彛鐗规 * - * @return 错误码 + * @return 閿欒鐮 */ uint8_t HubClearPortFeature(uint8_t HubPortIndex, uint8_t FeatureSelt) { @@ -836,5 +836,5 @@ uint8_t HubClearPortFeature(uint8_t HubPortIndex, uint8_t FeatureSelt) pSetupReq->wValue = 0x0000 | FeatureSelt; pSetupReq->wIndex = 0x0000 | HubPortIndex; pSetupReq->wLength = 0x0000; - return (HostCtrlTransfer(NULL, NULL)); // 执行控制传输 + return (HostCtrlTransfer(NULL, NULL)); // 鎵ц鎺у埗浼犺緭 } diff --git a/SRC/StdPeriphDriver/inc/CH59x_adc.h b/SRC/StdPeriphDriver/inc/CH59x_adc.h index 5f11560..fe785c9 100644 --- a/SRC/StdPeriphDriver/inc/CH59x_adc.h +++ b/SRC/StdPeriphDriver/inc/CH59x_adc.h @@ -24,23 +24,23 @@ extern "C" { */ typedef enum { - CH_EXTIN_0 = 0, // ADC 外部模拟通道 0 - CH_EXTIN_1, // ADC 外部模拟通道 1 - CH_EXTIN_2, // ADC 外部模拟通道 2 - CH_EXTIN_3, // ADC 外部模拟通道 3 - CH_EXTIN_4, // ADC 外部模拟通道 4 - CH_EXTIN_5, // ADC 外部模拟通道 5 - CH_EXTIN_6, // ADC 外部模拟通道 6 - CH_EXTIN_7, // ADC 外部模拟通道 7 - CH_EXTIN_8, // ADC 外部模拟通道 8 - CH_EXTIN_9, // ADC 外部模拟通道 9 - CH_EXTIN_10, // ADC 外部模拟通道 10 - CH_EXTIN_11, // ADC 外部模拟通道 11 - CH_EXTIN_12, // ADC 外部模拟通道 12 - CH_EXTIN_13, // ADC 外部模拟通道 13 + CH_EXTIN_0 = 0, // ADC 澶栭儴妯℃嫙閫氶亾 0 + CH_EXTIN_1, // ADC 澶栭儴妯℃嫙閫氶亾 1 + CH_EXTIN_2, // ADC 澶栭儴妯℃嫙閫氶亾 2 + CH_EXTIN_3, // ADC 澶栭儴妯℃嫙閫氶亾 3 + CH_EXTIN_4, // ADC 澶栭儴妯℃嫙閫氶亾 4 + CH_EXTIN_5, // ADC 澶栭儴妯℃嫙閫氶亾 5 + CH_EXTIN_6, // ADC 澶栭儴妯℃嫙閫氶亾 6 + CH_EXTIN_7, // ADC 澶栭儴妯℃嫙閫氶亾 7 + CH_EXTIN_8, // ADC 澶栭儴妯℃嫙閫氶亾 8 + CH_EXTIN_9, // ADC 澶栭儴妯℃嫙閫氶亾 9 + CH_EXTIN_10, // ADC 澶栭儴妯℃嫙閫氶亾 10 + CH_EXTIN_11, // ADC 澶栭儴妯℃嫙閫氶亾 11 + CH_EXTIN_12, // ADC 澶栭儴妯℃嫙閫氶亾 12 + CH_EXTIN_13, // ADC 澶栭儴妯℃嫙閫氶亾 13 - CH_INTE_VBAT = 14, // ADC 内部电池检测通道 - CH_INTE_VTEMP = 15, // ADC 内部温度传感器检测通道 + CH_INTE_VBAT = 14, // ADC 鍐呴儴鐢垫睜妫娴嬮氶亾 + CH_INTE_VTEMP = 15, // ADC 鍐呴儴娓╁害浼犳劅鍣ㄦ娴嬮氶亾 } ADC_SingleChannelTypeDef; @@ -49,8 +49,8 @@ typedef enum */ typedef enum { - CH_DIFF_0_2 = 0, // ADC 差分通道 #0-#2 - CH_DIFF_1_3, // ADC 差分通道 #1-#3 + CH_DIFF_0_2 = 0, // ADC 宸垎閫氶亾 #0-#2 + CH_DIFF_1_3, // ADC 宸垎閫氶亾 #1-#3 } ADC_DiffChannelTypeDef; @@ -59,10 +59,10 @@ typedef enum */ typedef enum { - SampleFreq_3_2 = 0, // 3.2M 采样频率 - SampleFreq_8, // 8M 采样频率 - SampleFreq_5_33, // 5.33M 采样频率 - SampleFreq_4, // 4M 采样频率 + SampleFreq_3_2 = 0, // 3.2M 閲囨牱棰戠巼 + SampleFreq_8, // 8M 閲囨牱棰戠巼 + SampleFreq_5_33, // 5.33M 閲囨牱棰戠巼 + SampleFreq_4, // 4M 閲囨牱棰戠巼 } ADC_SampClkTypeDef; /** @@ -70,14 +70,14 @@ typedef enum */ typedef enum { - ADC_PGA_1_4 = 0, // -12dB, 1/4倍 - ADC_PGA_1_2, // -6dB, 1/2倍 - ADC_PGA_0, // 0dB, 1倍,无增益 - ADC_PGA_2, // 6dB, 2倍 - ADC_PGA_2_ = 0x10, // 6dB, 2倍 - ADC_PGA_4, // 12dB, 4倍 - ADC_PGA_8, // 18dB, 8倍 - ADC_PGA_16, // 24dB, 16倍 + ADC_PGA_1_4 = 0, // -12dB, 1/4鍊 + ADC_PGA_1_2, // -6dB, 1/2鍊 + ADC_PGA_0, // 0dB, 1鍊嶏紝鏃犲鐩 + ADC_PGA_2, // 6dB, 2鍊 + ADC_PGA_2_ = 0x10, // 6dB, 2鍊 + ADC_PGA_4, // 12dB, 4鍊 + ADC_PGA_8, // 18dB, 8鍊 + ADC_PGA_16, // 24dB, 16鍊 } ADC_SignalPGATypeDef; /** @@ -85,41 +85,41 @@ typedef enum */ typedef enum { - ADC_Mode_Single = 0, // 单次模式 - ADC_Mode_LOOP, // 循环模式 + ADC_Mode_Single = 0, // 鍗曟妯″紡 + ADC_Mode_LOOP, // 寰幆妯″紡 } ADC_DMAModeTypeDef; /** - * @brief 设置 ADC 采样通道 + * @brief 璁剧疆 ADC 閲囨牱閫氶亾 * * @param d - refer to ADC_SingleChannelTypeDef */ #define ADC_ChannelCfg(d) (R8_ADC_CHANNEL = d) /** - * @brief 设置 ADC 采样时钟 + * @brief 璁剧疆 ADC 閲囨牱鏃堕挓 * * @param d - refer to ADC_SampClkTypeDef */ #define ADC_SampClkCfg(d) (R8_ADC_CFG = R8_ADC_CFG & (~RB_ADC_CLK_DIV) | (d << 6)) /** - * @brief 设置 ADC 信号增益 + * @brief 璁剧疆 ADC 淇″彿澧炵泭 * * @param d - refer to ADC_SignalPGATypeDef */ #define ADC_PGACfg(d) (R8_ADC_CFG = R8_ADC_CFG & (~RB_ADC_PGA_GAIN) | (d << 4)) /** - * @brief 设置内部温度传感器校准值 + * @brief 璁剧疆鍐呴儴娓╁害浼犳劅鍣ㄦ牎鍑嗗 * - * @param d - 校准值 + * @param d - 鏍″噯鍊 */ #define ADC_TempCalibCfg(d) (R8_TEM_SENSOR = R8_TEM_SENSOR & (~RB_TEM_SEN_CALIB) | d) /** - * @brief 外部信号单通道采样初始化 + * @brief 澶栭儴淇″彿鍗曢氶亾閲囨牱鍒濆鍖 * * @param sp - refer to ADC_SampClkTypeDef * @param ga - refer to ADC_SignalPGATypeDef @@ -127,7 +127,7 @@ typedef enum void ADC_ExtSingleChSampInit(ADC_SampClkTypeDef sp, ADC_SignalPGATypeDef ga); /** - * @brief 外部信号差分通道采样初始化 + * @brief 澶栭儴淇″彿宸垎閫氶亾閲囨牱鍒濆鍖 * * @param sp - refer to ADC_SampClkTypeDef * @param ga - refer to ADC_SignalPGATypeDef @@ -135,68 +135,68 @@ void ADC_ExtSingleChSampInit(ADC_SampClkTypeDef sp, ADC_SignalPGATypeDef ga); void ADC_ExtDiffChSampInit(ADC_SampClkTypeDef sp, ADC_SignalPGATypeDef ga); /** - * @brief 触摸按键通道采样初始化 + * @brief 瑙︽懜鎸夐敭閫氶亾閲囨牱鍒濆鍖 */ void TouchKey_ChSampInit(void); /** - * @brief 关闭TouchKey电源 + * @brief 鍏抽棴TouchKey鐢垫簮 */ #define TouchKey_DisableTSPower() (R8_TKEY_CFG &= ~RB_TKEY_PWR_ON) /** - * @brief 内置温度传感器采样初始化 + * @brief 鍐呯疆娓╁害浼犳劅鍣ㄩ噰鏍峰垵濮嬪寲 */ void ADC_InterTSSampInit(void); /** - * @brief 关闭温度传感器电源 + * @brief 鍏抽棴娓╁害浼犳劅鍣ㄧ數婧 */ #define ADC_DisableTSPower() (R8_TEM_SENSOR = 0) /** - * @brief 内置电池电压采样初始化 + * @brief 鍐呯疆鐢垫睜鐢靛帇閲囨牱鍒濆鍖 */ void ADC_InterBATSampInit(void); /** - * @brief ADC执行单次转换 + * @brief ADC鎵ц鍗曟杞崲 * - * @return ADC转换后的数据 + * @return ADC杞崲鍚庣殑鏁版嵁 */ uint16_t ADC_ExcutSingleConver(void); /** - * @brief 采样数据粗调,获取偏差值,必须先配置ADC后调用此函数获取校准值 + * @brief 閲囨牱鏁版嵁绮楄皟,鑾峰彇鍋忓樊鍊,蹇呴』鍏堥厤缃瓵DC鍚庤皟鐢ㄦ鍑芥暟鑾峰彇鏍″噯鍊 * - * @return 偏差 + * @return 鍋忓樊 */ signed short ADC_DataCalib_Rough(void); /** - * @brief TouchKey转换后数据 + * @brief TouchKey杞崲鍚庢暟鎹 * - * @param charg - Touchkey充电时间,5bits有效, t=charg*Tadc - * @param disch - Touchkey放电时间,3bits有效, t=disch*Tadc + * @param charg - Touchkey鍏呯數鏃堕棿,5bits鏈夋晥, t=charg*Tadc + * @param disch - Touchkey鏀剧數鏃堕棿,3bits鏈夋晥, t=disch*Tadc * - * @return 当前TouchKey等效数据 + * @return 褰撳墠TouchKey绛夋晥鏁版嵁 */ uint16_t TouchKey_ExcutSingleConver(uint8_t charg, uint8_t disch); /** - * @brief 设置连续 ADC的周期 + * @brief 璁剧疆杩炵画 ADC鐨勫懆鏈 * - * @param cycle - 单位为 16个系统时钟 + * @param cycle - 鍗曚綅涓 16涓郴缁熸椂閽 */ void ADC_AutoConverCycle(uint8_t cycle); /** - * @brief 配置DMA功能 + * @brief 閰嶇疆DMA鍔熻兘 * - * @param s - 是否打开DMA功能 - * @param startAddr - DMA 起始地址 - * @param endAddr - DMA 结束地址 - * @param m - 配置DMA模式 + * @param s - 鏄惁鎵撳紑DMA鍔熻兘 + * @param startAddr - DMA 璧峰鍦板潃 + * @param endAddr - DMA 缁撴潫鍦板潃 + * @param m - 閰嶇疆DMA妯″紡 */ void ADC_DMACfg(uint8_t s, uint32_t startAddr, uint32_t endAddr, ADC_DMAModeTypeDef m); @@ -210,59 +210,59 @@ void ADC_DMACfg(uint8_t s, uint32_t startAddr, uint32_t endAddr, ADC_DMAModeType int adc_to_temperature_celsius(uint16_t adc_val); /** - * @brief 获取ADC转换值 + * @brief 鑾峰彇ADC杞崲鍊 * - * @return ADC转换值 + * @return ADC杞崲鍊 */ #define ADC_ReadConverValue() (R16_ADC_DATA) /** - * @brief ADC执行单次转换 + * @brief ADC鎵ц鍗曟杞崲 */ #define ADC_StartUp() (R8_ADC_CONVERT |= RB_ADC_START) /** - * @brief 获取ADC中断状态 + * @brief 鑾峰彇ADC涓柇鐘舵 */ #define ADC_GetITStatus() (R8_ADC_INT_FLAG & RB_ADC_IF_EOC) /** - * @brief 清除ADC中断标志 + * @brief 娓呴櫎ADC涓柇鏍囧織 */ #define ADC_ClearITFlag() (R8_ADC_CONVERT = R8_ADC_CONVERT) /** - * @brief 获取ADC DMA完成状态 + * @brief 鑾峰彇ADC DMA瀹屾垚鐘舵 */ #define ADC_GetDMAStatus() (R8_ADC_DMA_IF & RB_ADC_IF_DMA_END) /** - * @brief 清除ADC DMA完成标志 + * @brief 娓呴櫎ADC DMA瀹屾垚鏍囧織 */ #define ADC_ClearDMAFlag() (R8_ADC_DMA_IF |= RB_ADC_IF_DMA_END) /** - * @brief 开启定时间隔自动连续 ADC + * @brief 寮鍚畾鏃堕棿闅旇嚜鍔ㄨ繛缁 ADC */ #define ADC_StartAutoDMA() (R8_ADC_CTRL_DMA |= RB_ADC_AUTO_EN) /** - * @brief 停止定时间隔自动连续 ADC + * @brief 鍋滄瀹氭椂闂撮殧鑷姩杩炵画 ADC */ #define ADC_StopAutoDMA() (R8_ADC_CTRL_DMA &= ~RB_ADC_AUTO_EN) /** - * @brief 开启连续转换 ADC + * @brief 寮鍚繛缁浆鎹 ADC */ #define ADC_StartContDMA() (R8_ADC_CTRL_DMA |= RB_ADC_CONT_EN) /** - * @brief 停止连续转换 ADC + * @brief 鍋滄杩炵画杞崲 ADC */ #define ADC_StopContDMA() (R8_ADC_CTRL_DMA &= ~RB_ADC_CONT_EN) /** - * @brief 关闭ADC电源 + * @brief 鍏抽棴ADC鐢垫簮 */ #define ADC_DisablePower() (R8_ADC_CFG &= ~RB_ADC_POWER_ON) diff --git a/SRC/StdPeriphDriver/inc/CH59x_clk.h b/SRC/StdPeriphDriver/inc/CH59x_clk.h index 5f861fd..8c36649 100644 --- a/SRC/StdPeriphDriver/inc/CH59x_clk.h +++ b/SRC/StdPeriphDriver/inc/CH59x_clk.h @@ -18,7 +18,7 @@ extern "C" { #endif /** - * @brief 系统主频定义 + * @brief 绯荤粺涓婚瀹氫箟 */ typedef enum { @@ -37,7 +37,7 @@ typedef enum } SYS_CLKTypeDef; /** - * @brief 32K时钟选择 + * @brief 32K鏃堕挓閫夋嫨 */ typedef enum { @@ -47,7 +47,7 @@ typedef enum } LClk32KTypeDef; /** - * @brief 32M晶振电流挡位 + * @brief 32M鏅舵尟鐢垫祦鎸′綅 */ typedef enum { @@ -59,7 +59,7 @@ typedef enum } HSECurrentTypeDef; /** - * @brief 32M晶振内部电容挡位 + * @brief 32M鏅舵尟鍐呴儴鐢靛鎸′綅 */ typedef enum { @@ -75,7 +75,7 @@ typedef enum } HSECapTypeDef; /** - * @brief 32K晶振电流挡位 + * @brief 32K鏅舵尟鐢垫祦鎸′綅 */ typedef enum { @@ -87,11 +87,11 @@ typedef enum } LSECurrentTypeDef; /** - * @brief 32K晶振内部电容挡位 + * @brief 32K鏅舵尟鍐呴儴鐢靛鎸′綅 */ typedef enum { - LSECap_2p = 0, // 定义保留,实际上为12p + LSECap_2p = 0, // 瀹氫箟淇濈暀锛屽疄闄呬笂涓12p LSECap_12p = 0, LSECap_13p, LSECap_14p, @@ -127,14 +127,14 @@ typedef enum */ typedef enum { - Period_0_125_S = 0, // 0.125s 周期 - Period_0_25_S, // 0.25s 周期 - Period_0_5_S, // 0.5s 周期 - Period_1_S, // 1s 周期 - Period_2_S, // 2s 周期 - Period_4_S, // 4s 周期 - Period_8_S, // 8s 周期 - Period_16_S, // 16s 周期 + Period_0_125_S = 0, // 0.125s 鍛ㄦ湡 + Period_0_25_S, // 0.25s 鍛ㄦ湡 + Period_0_5_S, // 0.5s 鍛ㄦ湡 + Period_1_S, // 1s 鍛ㄦ湡 + Period_2_S, // 2s 鍛ㄦ湡 + Period_4_S, // 4s 鍛ㄦ湡 + Period_8_S, // 8s 鍛ㄦ湡 + Period_16_S, // 16s 鍛ㄦ湡 } RTC_TMRCycTypeDef; /** @@ -142,8 +142,8 @@ typedef enum */ typedef enum { - RTC_TRIG_EVENT = 0, // RTC 触发事件 - RTC_TMR_EVENT, // RTC 周期定时事件 + RTC_TRIG_EVENT = 0, // RTC 瑙﹀彂浜嬩欢 + RTC_TMR_EVENT, // RTC 鍛ㄦ湡瀹氭椂浜嬩欢 } RTC_EVENTTypeDef; @@ -152,134 +152,134 @@ typedef enum */ typedef enum { - RTC_TRIG_MODE = 0, // RTC 触发模式 - RTC_TMR_MODE, // RTC 周期定时模式 + RTC_TRIG_MODE = 0, // RTC 瑙﹀彂妯″紡 + RTC_TMR_MODE, // RTC 鍛ㄦ湡瀹氭椂妯″紡 } RTC_MODETypeDef; typedef enum { - /* 校准精度越高,耗时越长 */ - Level_32 = 3, // 用时 1.2ms 1000ppm (32M 主频) 1100ppm (60M 主频) - Level_64, // 用时 2.2ms 800ppm (32M 主频) 1000ppm (60M 主频) - Level_128, // 用时 4.2ms 600ppm (32M 主频) 800ppm (60M 主频) + /* 鏍″噯绮惧害瓒婇珮锛岃楁椂瓒婇暱 */ + Level_32 = 3, // 鐢ㄦ椂 1.2ms 1000ppm (32M 涓婚) 1100ppm (60M 涓婚) + Level_64, // 鐢ㄦ椂 2.2ms 800ppm (32M 涓婚) 1000ppm (60M 涓婚) + Level_128, // 鐢ㄦ椂 4.2ms 600ppm (32M 涓婚) 800ppm (60M 涓婚) } Cali_LevelTypeDef; /** - * @brief 32K 低频时钟来源 + * @brief 32K 浣庨鏃堕挓鏉ユ簮 * - * @param hc - 选择32K使用内部还是外部 + * @param hc - 閫夋嫨32K浣跨敤鍐呴儴杩樻槸澶栭儴 */ void LClk32K_Select(LClk32KTypeDef hc); /** - * @brief HSE晶体 偏置电流配置 + * @brief HSE鏅朵綋 鍋忕疆鐢垫祦閰嶇疆 * * @param c - 75%,100%,125%,150% */ void HSECFG_Current(HSECurrentTypeDef c); /** - * @brief HSE晶体 负载电容配置 + * @brief HSE鏅朵綋 璐熻浇鐢靛閰嶇疆 * * @param c - refer to HSECapTypeDef */ void HSECFG_Capacitance(HSECapTypeDef c); /** - * @brief LSE晶体 偏置电流配置 + * @brief LSE鏅朵綋 鍋忕疆鐢垫祦閰嶇疆 * * @param c - 70%,100%,140%,200% */ void LSECFG_Current(LSECurrentTypeDef c); /** - * @brief LSE晶体 负载电容配置 + * @brief LSE鏅朵綋 璐熻浇鐢靛閰嶇疆 * * @param c - refer to LSECapTypeDef */ void LSECFG_Capacitance(LSECapTypeDef c); -void Calibration_LSI(Cali_LevelTypeDef cali_Lv); /* 用主频校准内部32K时钟 */ +void Calibration_LSI(Cali_LevelTypeDef cali_Lv); /* 鐢ㄤ富棰戞牎鍑嗗唴閮32K鏃堕挓 */ /** - * @brief RTC时钟初始化当前时间 + * @brief RTC鏃堕挓鍒濆鍖栧綋鍓嶆椂闂 * - * @param y - 配置年,MAX_Y = BEGYEAR + 44 - * @param mon - 配置月,MAX_MON = 12 - * @param d - 配置日,MAX_D = 31 - * @param h - 配置小时,MAX_H = 23 - * @param m - 配置分钟,MAX_M = 59 - * @param s - 配置秒,MAX_S = 59 + * @param y - 閰嶇疆骞达紝MAX_Y = BEGYEAR + 44 + * @param mon - 閰嶇疆鏈堬紝MAX_MON = 12 + * @param d - 閰嶇疆鏃ワ紝MAX_D = 31 + * @param h - 閰嶇疆灏忔椂锛孧AX_H = 23 + * @param m - 閰嶇疆鍒嗛挓锛孧AX_M = 59 + * @param s - 閰嶇疆绉掞紝MAX_S = 59 */ void RTC_InitTime(uint16_t y, uint16_t mon, uint16_t d, uint16_t h, uint16_t m, uint16_t s); /** - * @brief 获取当前时间 + * @brief 鑾峰彇褰撳墠鏃堕棿 * - * @param py - 获取到的年,MAX_Y = BEGYEAR + 44 - * @param pmon - 获取到的月,MAX_MON = 12 - * @param pd - 获取到的日,MAX_D = 31 - * @param ph - 获取到的小时,MAX_H = 23 - * @param pm - 获取到的分钟,MAX_M = 59 - * @param ps - 获取到的秒,MAX_S = 59 + * @param py - 鑾峰彇鍒扮殑骞达紝MAX_Y = BEGYEAR + 44 + * @param pmon - 鑾峰彇鍒扮殑鏈堬紝MAX_MON = 12 + * @param pd - 鑾峰彇鍒扮殑鏃ワ紝MAX_D = 31 + * @param ph - 鑾峰彇鍒扮殑灏忔椂锛孧AX_H = 23 + * @param pm - 鑾峰彇鍒扮殑鍒嗛挓锛孧AX_M = 59 + * @param ps - 鑾峰彇鍒扮殑绉掞紝MAX_S = 59 */ void RTC_GetTime(uint16_t *py, uint16_t *pmon, uint16_t *pd, uint16_t *ph, uint16_t *pm, uint16_t *ps); /** - * @brief 基于LSE/LSI时钟,配置当前RTC 周期数 + * @brief 鍩轰簬LSE/LSI鏃堕挓锛岄厤缃綋鍓峈TC 鍛ㄦ湡鏁 * - * @param cyc - 配置周期计数初值,MAX_CYC = 0xA8BFFFFF = 2831155199 + * @param cyc - 閰嶇疆鍛ㄦ湡璁℃暟鍒濆硷紝MAX_CYC = 0xA8BFFFFF = 2831155199 */ void RTC_SetCycle32k(uint32_t cyc); /** - * @brief 基于LSE/LSI时钟,获取当前RTC 周期数 + * @brief 鍩轰簬LSE/LSI鏃堕挓锛岃幏鍙栧綋鍓峈TC 鍛ㄦ湡鏁 * - * @return 当前周期数,MAX_CYC = 0xA8BFFFFF = 2831155199 + * @return 褰撳墠鍛ㄦ湡鏁帮紝MAX_CYC = 0xA8BFFFFF = 2831155199 */ uint32_t RTC_GetCycle32k(void); /** - * @brief RTC定时模式配置(注意定时基准固定为32768Hz) + * @brief RTC瀹氭椂妯″紡閰嶇疆锛堟敞鎰忓畾鏃跺熀鍑嗗浐瀹氫负32768Hz锛 * * @param t - refer to RTC_TMRCycTypeDef */ void RTC_TRIGFunCfg(uint32_t cyc); /** - * @brief RTC定时模式配置(注意定时基准固定为32768Hz) + * @brief RTC瀹氭椂妯″紡閰嶇疆锛堟敞鎰忓畾鏃跺熀鍑嗗浐瀹氫负32768Hz锛 * * @param t - refer to RTC_TMRCycTypeDef */ void RTC_TMRFunCfg(RTC_TMRCycTypeDef t); /** - * @brief RTC 模式功能关闭 + * @brief RTC 妯″紡鍔熻兘鍏抽棴 * - * @param m - 需要关闭的当前模式 + * @param m - 闇瑕佸叧闂殑褰撳墠妯″紡 */ void RTC_ModeFunDisable(RTC_MODETypeDef m); /** - * @brief 获取RTC中断标志 + * @brief 鑾峰彇RTC涓柇鏍囧織 * * @param f - refer to RTC_EVENTTypeDef * - * @return 中断标志状态 + * @return 涓柇鏍囧織鐘舵 */ uint8_t RTC_GetITFlag(RTC_EVENTTypeDef f); /** - * @brief 清除RTC中断标志 + * @brief 娓呴櫎RTC涓柇鏍囧織 * * @param f - refer to RTC_EVENTTypeDef */ void RTC_ClearITFlag(RTC_EVENTTypeDef f); /** - * @brief 32K 低频时钟电源配置 + * @brief 32K 浣庨鏃堕挓鐢垫簮閰嶇疆 */ void LClk32K_Cfg(LClk32KTypeDef hc, FunctionalState s); diff --git a/SRC/StdPeriphDriver/inc/CH59x_common.h b/SRC/StdPeriphDriver/inc/CH59x_common.h index 26afd62..68d7e9a 100644 --- a/SRC/StdPeriphDriver/inc/CH59x_common.h +++ b/SRC/StdPeriphDriver/inc/CH59x_common.h @@ -46,7 +46,7 @@ #endif /** - * @brief 系统主频时钟(Hz) + * @brief 绯荤粺涓婚鏃堕挓锛圚z锛 */ #ifndef FREQ_SYS #define FREQ_SYS 60000000 @@ -57,7 +57,7 @@ #endif /** - * @brief 32K时钟(Hz) + * @brief 32K鏃堕挓锛圚z锛 */ #ifdef CLK_OSC32K #if ( CLK_OSC32K == 1 ) diff --git a/SRC/StdPeriphDriver/inc/CH59x_flash.h b/SRC/StdPeriphDriver/inc/CH59x_flash.h index 3fb3de9..c6c2f6c 100644 --- a/SRC/StdPeriphDriver/inc/CH59x_flash.h +++ b/SRC/StdPeriphDriver/inc/CH59x_flash.h @@ -18,7 +18,7 @@ extern "C" { #endif /** - * @brief 读取Flash-ROM + * @brief 璇诲彇Flash-ROM * * @param StartAddr - read address * @param Buffer - read buffer diff --git a/SRC/StdPeriphDriver/inc/CH59x_gpio.h b/SRC/StdPeriphDriver/inc/CH59x_gpio.h index 9ca314b..0f84849 100644 --- a/SRC/StdPeriphDriver/inc/CH59x_gpio.h +++ b/SRC/StdPeriphDriver/inc/CH59x_gpio.h @@ -51,11 +51,11 @@ extern "C" { */ typedef enum { - GPIO_ModeIN_Floating, //浮空输入 - GPIO_ModeIN_PU, //上拉输入 - GPIO_ModeIN_PD, //下拉输入 - GPIO_ModeOut_PP_5mA, //推挽输出最大5mA - GPIO_ModeOut_PP_20mA, //推挽输出最大20mA + GPIO_ModeIN_Floating, //娴┖杈撳叆 + GPIO_ModeIN_PU, //涓婃媺杈撳叆 + GPIO_ModeIN_PD, //涓嬫媺杈撳叆 + GPIO_ModeOut_PP_5mA, //鎺ㄦ尳杈撳嚭鏈澶5mA + GPIO_ModeOut_PP_20mA, //鎺ㄦ尳杈撳嚭鏈澶20mA } GPIOModeTypeDef; @@ -64,169 +64,169 @@ typedef enum */ typedef enum { - GPIO_ITMode_LowLevel, //低电平触发 - GPIO_ITMode_HighLevel, //高电平触发 - GPIO_ITMode_FallEdge, //下降沿触发 - GPIO_ITMode_RiseEdge, //上升沿触发 + GPIO_ITMode_LowLevel, //浣庣數骞宠Е鍙 + GPIO_ITMode_HighLevel, //楂樼數骞宠Е鍙 + GPIO_ITMode_FallEdge, //涓嬮檷娌胯Е鍙 + GPIO_ITMode_RiseEdge, //涓婂崌娌胯Е鍙 } GPIOITModeTpDef; /** - * @brief GPIOA端口引脚模式配置 + * @brief GPIOA绔彛寮曡剼妯″紡閰嶇疆 * * @param pin - PA0-PA15 - * @param mode - 输入输出类型 + * @param mode - 杈撳叆杈撳嚭绫诲瀷 */ void GPIOA_ModeCfg(uint32_t pin, GPIOModeTypeDef mode); /** - * @brief GPIOB端口引脚模式配置 + * @brief GPIOB绔彛寮曡剼妯″紡閰嶇疆 * * @param pin - PB0-PB23 - * @param mode - 输入输出类型 + * @param mode - 杈撳叆杈撳嚭绫诲瀷 */ void GPIOB_ModeCfg(uint32_t pin, GPIOModeTypeDef mode); /** - * @brief GPIOA端口引脚输出置低 + * @brief GPIOA绔彛寮曡剼杈撳嚭缃綆 * * @param pin - PA0-PA15 */ #define GPIOA_ResetBits(pin) (R32_PA_CLR |= pin) /** - * @brief GPIOA端口引脚输出置高 + * @brief GPIOA绔彛寮曡剼杈撳嚭缃珮 * * @param pin - PA0-PA15 */ #define GPIOA_SetBits(pin) (R32_PA_OUT |= pin) /** - * @brief GPIOB端口引脚输出置低 + * @brief GPIOB绔彛寮曡剼杈撳嚭缃綆 * * @param pin - PB0-PB23 */ #define GPIOB_ResetBits(pin) (R32_PB_CLR |= pin) /** - * @brief GPIOB端口引脚输出置高 + * @brief GPIOB绔彛寮曡剼杈撳嚭缃珮 * * @param pin - PB0-PB23 */ #define GPIOB_SetBits(pin) (R32_PB_OUT |= pin) /** - * @brief GPIOA端口引脚输出电平翻转 + * @brief GPIOA绔彛寮曡剼杈撳嚭鐢靛钩缈昏浆 * * @param pin - PA0-PA15 */ #define GPIOA_InverseBits(pin) (R32_PA_OUT ^= pin) /** - * @brief GPIOB端口引脚输出电平翻转 + * @brief GPIOB绔彛寮曡剼杈撳嚭鐢靛钩缈昏浆 * * @param pin - PB0-PB23 */ #define GPIOB_InverseBits(pin) (R32_PB_OUT ^= pin) /** - * @brief GPIOA端口32位数据返回,低16位有效 + * @brief GPIOA绔彛32浣嶆暟鎹繑鍥烇紝浣16浣嶆湁鏁 * - * @return GPIOA端口32位数据 + * @return GPIOA绔彛32浣嶆暟鎹 */ #define GPIOA_ReadPort() (R32_PA_PIN) /** - * @brief GPIOB端口32位数据返回,低24位有效 + * @brief GPIOB绔彛32浣嶆暟鎹繑鍥烇紝浣24浣嶆湁鏁 * - * @return GPIOB端口32位数据 + * @return GPIOB绔彛32浣嶆暟鎹 */ #define GPIOB_ReadPort() (R32_PB_PIN) /** - * @brief GPIOA端口引脚状态,0-引脚低电平,(!0)-引脚高电平 + * @brief GPIOA绔彛寮曡剼鐘舵侊紝0-寮曡剼浣庣數骞筹紝(!0)-寮曡剼楂樼數骞 * * @param pin - PA0-PA15 * - * @return GPIOA端口引脚状态 + * @return GPIOA绔彛寮曡剼鐘舵 */ #define GPIOA_ReadPortPin(pin) (R32_PA_PIN & (pin)) /** - * @brief GPIOB端口引脚状态,0-引脚低电平,(!0)-引脚高电平 + * @brief GPIOB绔彛寮曡剼鐘舵侊紝0-寮曡剼浣庣數骞筹紝(!0)-寮曡剼楂樼數骞 * * @param pin - PB0-PB23 * - * @return GPIOB端口引脚状态 + * @return GPIOB绔彛寮曡剼鐘舵 */ #define GPIOB_ReadPortPin(pin) (R32_PB_PIN & (pin)) /** - * @brief GPIOA引脚中断模式配置 + * @brief GPIOA寮曡剼涓柇妯″紡閰嶇疆 * * @param pin - PA0-PA15 - * @param mode - 触发类型 + * @param mode - 瑙﹀彂绫诲瀷 */ void GPIOA_ITModeCfg(uint32_t pin, GPIOITModeTpDef mode); /** - * @brief GPIOB引脚中断模式配置 + * @brief GPIOB寮曡剼涓柇妯″紡閰嶇疆 * * @param pin - PB0-PB23 - * @param mode - 触发类型 + * @param mode - 瑙﹀彂绫诲瀷 */ void GPIOB_ITModeCfg(uint32_t pin, GPIOITModeTpDef mode); /** - * @brief 读取GPIOA端口中断标志状态 + * @brief 璇诲彇GPIOA绔彛涓柇鏍囧織鐘舵 * - * @return GPIOA端口中断标志状态 + * @return GPIOA绔彛涓柇鏍囧織鐘舵 */ #define GPIOA_ReadITFlagPort() (R16_PA_INT_IF) /** - * @brief 读取GPIOB端口中断标志状态 + * @brief 璇诲彇GPIOB绔彛涓柇鏍囧織鐘舵 * - * @return GPIOB端口中断标志状态 + * @return GPIOB绔彛涓柇鏍囧織鐘舵 */ #define GPIOB_ReadITFlagPort() ((R16_PB_INT_IF & (~((GPIO_Pin_22 | GPIO_Pin_23) >> 14))) | ((R16_PB_INT_IF << 14) & (GPIO_Pin_22 | GPIO_Pin_23))) /** - * @brief 读取GPIOA端口引脚中断标志状态 + * @brief 璇诲彇GPIOA绔彛寮曡剼涓柇鏍囧織鐘舵 * * @param pin - PA0-PA15 * - * @return GPIOA端口引脚中断标志状态 + * @return GPIOA绔彛寮曡剼涓柇鏍囧織鐘舵 */ #define GPIOA_ReadITFlagBit(pin) (R16_PA_INT_IF & (pin)) /** - * @brief 读取GPIOB端口引脚中断标志状态 + * @brief 璇诲彇GPIOB绔彛寮曡剼涓柇鏍囧織鐘舵 * * @param pin - PB0-PB23 * - * @return GPIOB端口引脚中断标志状态 + * @return GPIOB绔彛寮曡剼涓柇鏍囧織鐘舵 */ #define GPIOB_ReadITFlagBit(pin) (R16_PB_INT_IF & ((pin) | (((pin) & (GPIO_Pin_22 | GPIO_Pin_23)) >> 14))) /** - * @brief 清除GPIOA端口引脚中断标志状态 + * @brief 娓呴櫎GPIOA绔彛寮曡剼涓柇鏍囧織鐘舵 * * @param pin - PA0-PA15 */ #define GPIOA_ClearITFlagBit(pin) (R16_PA_INT_IF = pin) /** - * @brief 清除GPIOB端口引脚中断标志状态 + * @brief 娓呴櫎GPIOB绔彛寮曡剼涓柇鏍囧織鐘舵 * * @param pin - PB0-PB23 */ #define GPIOB_ClearITFlagBit(pin) (R16_PB_INT_IF = ((pin) | (((pin) & (GPIO_Pin_22 | GPIO_Pin_23)) >> 14))) /** - * @brief 外设功能引脚映射 + * @brief 澶栬鍔熻兘寮曡剼鏄犲皠 * - * @param s - 是否使能映射 + * @param s - 鏄惁浣胯兘鏄犲皠 * @param perph - RB_RF_ANT_SW_EN - RF antenna switch control output on PB16/PB17/PB18/PB19/PB20/PB21 * RB_PIN_U0_INV - RXD0/RXD0_/TXD0/TXD0_ invert input/output * RB_PIN_INTX - INTX: INT24/INT25 PB8/PB9 -> INT24_/INT25_ PB22/PB23 @@ -246,11 +246,11 @@ void GPIOB_ITModeCfg(uint32_t pin, GPIOITModeTpDef mode); void GPIOPinRemap(FunctionalState s, uint16_t perph); /** - * @brief 模拟外设GPIO引脚功能控制 + * @brief 妯℃嫙澶栬GPIO寮曡剼鍔熻兘鎺у埗 * - * @param s - 是否启用模拟外设功能 - * @param perph - RB_PIN_USB_DP_PU - USB UD+引脚内部上拉电阻 - * RB_PIN_USB_IE - USB 引脚 + * @param s - 鏄惁鍚敤妯℃嫙澶栬鍔熻兘 + * @param perph - RB_PIN_USB_DP_PU - USB UD+寮曡剼鍐呴儴涓婃媺鐢甸樆 + * RB_PIN_USB_IE - USB 寮曡剼 */ void GPIOAGPPCfg(FunctionalState s, uint16_t perph); diff --git a/SRC/StdPeriphDriver/inc/CH59x_lcd.h b/SRC/StdPeriphDriver/inc/CH59x_lcd.h index 826e27b..e9f379e 100644 --- a/SRC/StdPeriphDriver/inc/CH59x_lcd.h +++ b/SRC/StdPeriphDriver/inc/CH59x_lcd.h @@ -25,8 +25,8 @@ */ typedef enum { - LCD_PS_3V3 = 0, // 3.3V 驱动 - LCD_PS_2V5, // 2.5V 驱动 + LCD_PS_3V3 = 0, // 3.3V 椹卞姩 + LCD_PS_2V5, // 2.5V 椹卞姩 }LCDDrvPowerTypeDef; /** @@ -34,8 +34,8 @@ typedef enum */ typedef enum { - LCD_1_2_Bias = 0, // 2级分压 - LCD_1_3_Bias, // 3级分压 + LCD_1_2_Bias = 0, // 2绾у垎鍘 + LCD_1_3_Bias, // 3绾у垎鍘 }LCDBiasTypeDef; /** @@ -59,34 +59,34 @@ typedef enum LCD_CLK_128 // 128Hz }LCDSCANCLKTypeDef; -/* LCD段式屏驱动初始化配置 */ +/* LCD娈靛紡灞忛┍鍔ㄥ垵濮嬪寲閰嶇疆 */ void LCD_Init(LCDDutyTypeDef duty, LCDBiasTypeDef bias); -#define LCD_PowerDown() (R32_LCD_CMD &= ~(RB_LCD_ON | RB_LCD_SYS_EN)) /* LCD功能模块关闭 */ -#define LCD_PowerOn() (R32_LCD_CMD |= (RB_LCD_ON | RB_LCD_SYS_EN)) /* LCD功能模块开启 */ +#define LCD_PowerDown() (R32_LCD_CMD &= ~(RB_LCD_ON | RB_LCD_SYS_EN)) /* LCD鍔熻兘妯″潡鍏抽棴 */ +#define LCD_PowerOn() (R32_LCD_CMD |= (RB_LCD_ON | RB_LCD_SYS_EN)) /* LCD鍔熻兘妯″潡寮鍚 */ -// 输入值参考 LCDDrvPowerTypeDef -#define LCD_PowerCfg( d ) (R32_LCD_CMD = (R32_LCD_CMD & ~RB_LCD_VLCD_SEL) | (d<<7)) /* 配置LCD的 供电电压选择 */ -// 输入值参考 LCDSCANCLKTypeDef -#define LCD_ScanCLKCfg( d ) (R32_LCD_CMD = (R32_LCD_CMD & ~RB_LCD_SCAN_CLK) | (d<<5)) /* 配置LCD的 扫描时钟选择 */ -// 输入值参考 LCDDutyTypeDef -#define LCD_DutyCfg( d ) (R32_LCD_CMD = (R32_LCD_CMD & ~RB_LCD_DUTY) | (d<<3)) /* 配置LCD的 duty选择 */ -// 输入值参考 LCDBiasTypeDef -#define LCD_BiasCfg( d ) (R32_LCD_CMD = (R32_LCD_CMD & ~RB_LCD_BIAS) | (d<<2)) /* 配置LCD的 bias选择 */ +// 杈撳叆鍊煎弬鑰 LCDDrvPowerTypeDef +#define LCD_PowerCfg( d ) (R32_LCD_CMD = (R32_LCD_CMD & ~RB_LCD_VLCD_SEL) | (d<<7)) /* 閰嶇疆LCD鐨 渚涚數鐢靛帇閫夋嫨 */ +// 杈撳叆鍊煎弬鑰 LCDSCANCLKTypeDef +#define LCD_ScanCLKCfg( d ) (R32_LCD_CMD = (R32_LCD_CMD & ~RB_LCD_SCAN_CLK) | (d<<5)) /* 閰嶇疆LCD鐨 鎵弿鏃堕挓閫夋嫨 */ +// 杈撳叆鍊煎弬鑰 LCDDutyTypeDef +#define LCD_DutyCfg( d ) (R32_LCD_CMD = (R32_LCD_CMD & ~RB_LCD_DUTY) | (d<<3)) /* 閰嶇疆LCD鐨 duty閫夋嫨 */ +// 杈撳叆鍊煎弬鑰 LCDBiasTypeDef +#define LCD_BiasCfg( d ) (R32_LCD_CMD = (R32_LCD_CMD & ~RB_LCD_BIAS) | (d<<2)) /* 閰嶇疆LCD鐨 bias閫夋嫨 */ -#define LCD_WriteData0( d ) (R32_LCD_RAM0 = (R32_LCD_RAM0 & 0xffffff00) | ((UINT32)d)) /* 填充SEG0驱动数值 */ -#define LCD_WriteData1( d ) (R32_LCD_RAM0 = (R32_LCD_RAM0 & 0xffff00ff) | ((UINT32)d<<8)) /* 填充SEG1驱动数值 */ -#define LCD_WriteData2( d ) (R32_LCD_RAM0 = (R32_LCD_RAM0 & 0xff00ffff) | ((UINT32)d<<16)) /* 填充SEG2驱动数值 */ -#define LCD_WriteData3( d ) (R32_LCD_RAM0 = (R32_LCD_RAM0 & 0x00ffffff) | ((UINT32)d<<24)) /* 填充SEG3驱动数值 */ +#define LCD_WriteData0( d ) (R32_LCD_RAM0 = (R32_LCD_RAM0 & 0xffffff00) | ((UINT32)d)) /* 濉厖SEG0椹卞姩鏁板 */ +#define LCD_WriteData1( d ) (R32_LCD_RAM0 = (R32_LCD_RAM0 & 0xffff00ff) | ((UINT32)d<<8)) /* 濉厖SEG1椹卞姩鏁板 */ +#define LCD_WriteData2( d ) (R32_LCD_RAM0 = (R32_LCD_RAM0 & 0xff00ffff) | ((UINT32)d<<16)) /* 濉厖SEG2椹卞姩鏁板 */ +#define LCD_WriteData3( d ) (R32_LCD_RAM0 = (R32_LCD_RAM0 & 0x00ffffff) | ((UINT32)d<<24)) /* 濉厖SEG3椹卞姩鏁板 */ -#define LCD_WriteData4( d ) (R32_LCD_RAM1 = (R32_LCD_RAM1 & 0xffffff00) | ((UINT32)d)) /* 填充SEG4驱动数值 */ -#define LCD_WriteData5( d ) (R32_LCD_RAM1 = (R32_LCD_RAM1 & 0xffff00ff) | ((UINT32)d<<8)) /* 填充SEG5驱动数值 */ -#define LCD_WriteData6( d ) (R32_LCD_RAM1 = (R32_LCD_RAM1 & 0xff00ffff) | ((UINT32)d<<16)) /* 填充SEG6驱动数值 */ -#define LCD_WriteData7( d ) (R32_LCD_RAM1 = (R32_LCD_RAM1 & 0x00ffffff) | ((UINT32)d<<24)) /* 填充SEG7驱动数值 */ +#define LCD_WriteData4( d ) (R32_LCD_RAM1 = (R32_LCD_RAM1 & 0xffffff00) | ((UINT32)d)) /* 濉厖SEG4椹卞姩鏁板 */ +#define LCD_WriteData5( d ) (R32_LCD_RAM1 = (R32_LCD_RAM1 & 0xffff00ff) | ((UINT32)d<<8)) /* 濉厖SEG5椹卞姩鏁板 */ +#define LCD_WriteData6( d ) (R32_LCD_RAM1 = (R32_LCD_RAM1 & 0xff00ffff) | ((UINT32)d<<16)) /* 濉厖SEG6椹卞姩鏁板 */ +#define LCD_WriteData7( d ) (R32_LCD_RAM1 = (R32_LCD_RAM1 & 0x00ffffff) | ((UINT32)d<<24)) /* 濉厖SEG7椹卞姩鏁板 */ -#define LCD_WriteData8( d ) (R32_LCD_RAM2 = (R32_LCD_RAM2 & 0xffffff00) | ((UINT32)d)) /* 填充SEG8驱动数值 */ -#define LCD_WriteData9( d ) (R32_LCD_RAM2 = (R32_LCD_RAM2 & 0xffff00ff) | ((UINT32)d<<8)) /* 填充SEG9驱动数值 */ -#define LCD_WriteData10( d ) (R32_LCD_RAM2 = (R32_LCD_RAM2 & 0xff00ffff) | ((UINT32)d<<16)) /* 填充SEG10驱动数值 */ +#define LCD_WriteData8( d ) (R32_LCD_RAM2 = (R32_LCD_RAM2 & 0xffffff00) | ((UINT32)d)) /* 濉厖SEG8椹卞姩鏁板 */ +#define LCD_WriteData9( d ) (R32_LCD_RAM2 = (R32_LCD_RAM2 & 0xffff00ff) | ((UINT32)d<<8)) /* 濉厖SEG9椹卞姩鏁板 */ +#define LCD_WriteData10( d ) (R32_LCD_RAM2 = (R32_LCD_RAM2 & 0xff00ffff) | ((UINT32)d<<16)) /* 濉厖SEG10椹卞姩鏁板 */ diff --git a/SRC/StdPeriphDriver/inc/CH59x_pwm.h b/SRC/StdPeriphDriver/inc/CH59x_pwm.h index 6f315a5..2933546 100644 --- a/SRC/StdPeriphDriver/inc/CH59x_pwm.h +++ b/SRC/StdPeriphDriver/inc/CH59x_pwm.h @@ -20,22 +20,22 @@ extern "C" { /** * @brief channel of PWM define */ -#define CH_PWM4 0x01 // PWM4 通道 -#define CH_PWM5 0x02 // PWM5 通道 -#define CH_PWM6 0x04 // PWM6 通道 -#define CH_PWM7 0x08 // PWM7 通道 -#define CH_PWM8 0x10 // PWM8 通道 -#define CH_PWM9 0x20 // PWM9 通道 -#define CH_PWM10 0x40 // PWM10 通道 -#define CH_PWM11 0x80 // PWM11 通道 +#define CH_PWM4 0x01 // PWM4 閫氶亾 +#define CH_PWM5 0x02 // PWM5 閫氶亾 +#define CH_PWM6 0x04 // PWM6 閫氶亾 +#define CH_PWM7 0x08 // PWM7 閫氶亾 +#define CH_PWM8 0x10 // PWM8 閫氶亾 +#define CH_PWM9 0x20 // PWM9 閫氶亾 +#define CH_PWM10 0x40 // PWM10 閫氶亾 +#define CH_PWM11 0x80 // PWM11 閫氶亾 /** * @brief channel of PWM define */ typedef enum { - High_Level = 0, // 默认低电平,高电平有效 - Low_Level, // 默认高电平,低电平有效 + High_Level = 0, // 榛樿浣庣數骞筹紝楂樼數骞虫湁鏁 + Low_Level, // 榛樿楂樼數骞筹紝浣庣數骞虫湁鏁 } PWMX_PolarTypeDef; /** @@ -43,93 +43,93 @@ typedef enum */ typedef enum { - PWMX_Cycle_256 = 0, // 256 个PWMX周期 - PWMX_Cycle_255, // 255 个PWMX周期 - PWMX_Cycle_128, // 128 个PWMX周期 - PWMX_Cycle_127, // 127 个PWMX周期 - PWMX_Cycle_64, // 64 个PWMX周期 - PWMX_Cycle_63, // 63 个PWMX周期 + PWMX_Cycle_256 = 0, // 256 涓狿WMX鍛ㄦ湡 + PWMX_Cycle_255, // 255 涓狿WMX鍛ㄦ湡 + PWMX_Cycle_128, // 128 涓狿WMX鍛ㄦ湡 + PWMX_Cycle_127, // 127 涓狿WMX鍛ㄦ湡 + PWMX_Cycle_64, // 64 涓狿WMX鍛ㄦ湡 + PWMX_Cycle_63, // 63 涓狿WMX鍛ㄦ湡 } PWMX_CycleTypeDef; /** - * @brief PWM4-PWM11 通道基准时钟配置 + * @brief PWM4-PWM11 閫氶亾鍩哄噯鏃堕挓閰嶇疆 * - * @param d - 通道基准时钟 = d*Tsys + * @param d - 閫氶亾鍩哄噯鏃堕挓 = d*Tsys */ #define PWMX_CLKCfg(d) (R8_PWM_CLOCK_DIV = d) /** - * @brief PWM4-PWM11周期配置 + * @brief PWM4-PWM11鍛ㄦ湡閰嶇疆 * * @param cyc - refer to PWMX_CycleTypeDef */ void PWMX_CycleCfg(PWMX_CycleTypeDef cyc); /** - * @brief PWM4-PWM9 16位周期配置 + * @brief PWM4-PWM9 16浣嶅懆鏈熼厤缃 * - * @param cyc - 16位周期 + * @param cyc - 16浣嶅懆鏈 */ void PWMX_16bit_CycleCfg(uint16_t cyc); /** - * @brief 设置 PWM4 有效数据脉宽 + * @brief 璁剧疆 PWM4 鏈夋晥鏁版嵁鑴夊 * - * @param d - 有效数据脉宽 + * @param d - 鏈夋晥鏁版嵁鑴夊 */ #define PWM4_ActDataWidth(d) (R8_PWM4_DATA = d) /** - * @brief 设置 PWM5 有效数据脉宽 + * @brief 璁剧疆 PWM5 鏈夋晥鏁版嵁鑴夊 * - * @param d - 有效数据脉宽 + * @param d - 鏈夋晥鏁版嵁鑴夊 */ #define PWM5_ActDataWidth(d) (R8_PWM5_DATA = d) /** - * @brief 设置 PWM6 有效数据脉宽 + * @brief 璁剧疆 PWM6 鏈夋晥鏁版嵁鑴夊 * - * @param d - 有效数据脉宽 + * @param d - 鏈夋晥鏁版嵁鑴夊 */ #define PWM6_ActDataWidth(d) (R8_PWM6_DATA = d) /** - * @brief 设置 PWM7 有效数据脉宽 + * @brief 璁剧疆 PWM7 鏈夋晥鏁版嵁鑴夊 * - * @param d - 有效数据脉宽 + * @param d - 鏈夋晥鏁版嵁鑴夊 */ #define PWM7_ActDataWidth(d) (R8_PWM7_DATA = d) /** - * @brief 设置 PWM8 有效数据脉宽 + * @brief 璁剧疆 PWM8 鏈夋晥鏁版嵁鑴夊 * - * @param d - 有效数据脉宽 + * @param d - 鏈夋晥鏁版嵁鑴夊 */ #define PWM8_ActDataWidth(d) (R8_PWM8_DATA = d) /** - * @brief 设置 PWM9 有效数据脉宽 + * @brief 璁剧疆 PWM9 鏈夋晥鏁版嵁鑴夊 * - * @param d - 有效数据脉宽 + * @param d - 鏈夋晥鏁版嵁鑴夊 */ #define PWM9_ActDataWidth(d) (R8_PWM9_DATA = d) /** - * @brief 设置 PWM10 有效数据脉宽 + * @brief 璁剧疆 PWM10 鏈夋晥鏁版嵁鑴夊 * - * @param d - 有效数据脉宽 + * @param d - 鏈夋晥鏁版嵁鑴夊 */ #define PWM10_ActDataWidth(d) (R8_PWM10_DATA = d) /** - * @brief 设置 PWM11 有效数据脉宽 + * @brief 璁剧疆 PWM11 鏈夋晥鏁版嵁鑴夊 * - * @param d - 有效数据脉宽 + * @param d - 鏈夋晥鏁版嵁鑴夊 */ #define PWM11_ActDataWidth(d) (R8_PWM11_DATA = d) /** - * @brief PWM4-PWM11通道输出波形配置 + * @brief PWM4-PWM11閫氶亾杈撳嚭娉㈠舰閰嶇疆 * * @param ch - select channel of pwm, refer to channel of PWM define * @param da - effective pulse width @@ -139,7 +139,7 @@ void PWMX_16bit_CycleCfg(uint16_t cyc); void PWMX_ACTOUT(uint8_t ch, uint8_t da, PWMX_PolarTypeDef pr, FunctionalState s); /** - * @brief PWM4-PWM9 通道16位输出波形配置 + * @brief PWM4-PWM9 閫氶亾16浣嶈緭鍑烘尝褰㈤厤缃 * * @param ch - select channel of pwm, refer to channel of PWM define * @param da - effective pulse width @@ -149,13 +149,13 @@ void PWMX_ACTOUT(uint8_t ch, uint8_t da, PWMX_PolarTypeDef pr, FunctionalState s void PWMX_16bit_ACTOUT(uint8_t ch, uint16_t da, PWMX_PolarTypeDef pr, FunctionalState s); /** - * @brief PWM 交替输出模式配置 + * @brief PWM 浜ゆ浛杈撳嚭妯″紡閰嶇疆 * * @param ch - select group of PWM alternate output - * RB_PWM4_5_STAG_EN - PWM4 和 PWM5 通道交替输出 - * RB_PWM6_7_STAG_EN - PWM6 和 PWM7 通道交替输出 - * RB_PWM8_9_STAG_EN - PWM8 和 PWM9 通道交替输出 - * RB_PWM10_11_STAG_EN - PWM10 和 PWM11 通道交替输出 + * RB_PWM4_5_STAG_EN - PWM4 鍜 PWM5 閫氶亾浜ゆ浛杈撳嚭 + * RB_PWM6_7_STAG_EN - PWM6 鍜 PWM7 閫氶亾浜ゆ浛杈撳嚭 + * RB_PWM8_9_STAG_EN - PWM8 鍜 PWM9 閫氶亾浜ゆ浛杈撳嚭 + * RB_PWM10_11_STAG_EN - PWM10 鍜 PWM11 閫氶亾浜ゆ浛杈撳嚭 * @param s - control pwmx function, ENABLE or DISABLE */ void PWMX_AlterOutCfg(uint8_t ch, FunctionalState s); diff --git a/SRC/StdPeriphDriver/inc/CH59x_pwr.h b/SRC/StdPeriphDriver/inc/CH59x_pwr.h index 9446542..c5dcac6 100644 --- a/SRC/StdPeriphDriver/inc/CH59x_pwr.h +++ b/SRC/StdPeriphDriver/inc/CH59x_pwr.h @@ -46,10 +46,10 @@ extern "C" { /** * @brief unit of controllable power supply */ -#define UNIT_SYS_LSE RB_CLK_XT32K_PON // 外部32K 时钟振荡 -#define UNIT_SYS_LSI RB_CLK_INT32K_PON // 内部32K 时钟振荡 -#define UNIT_SYS_HSE RB_CLK_XT32M_PON // 外部32M 时钟振荡 -#define UNIT_SYS_PLL RB_CLK_PLL_PON // PLL 时钟振荡 +#define UNIT_SYS_LSE RB_CLK_XT32K_PON // 澶栭儴32K 鏃堕挓鎸崱 +#define UNIT_SYS_LSI RB_CLK_INT32K_PON // 鍐呴儴32K 鏃堕挓鎸崱 +#define UNIT_SYS_HSE RB_CLK_XT32M_PON // 澶栭儴32M 鏃堕挓鎸崱 +#define UNIT_SYS_PLL RB_CLK_PLL_PON // PLL 鏃堕挓鎸崱 /** * @brief wakeup mode define @@ -66,13 +66,13 @@ typedef enum */ typedef enum { - /* 下面等级将使用高精度监控,210uA消耗 */ + /* 涓嬮潰绛夌骇灏嗕娇鐢ㄩ珮绮惧害鐩戞帶锛210uA娑堣 */ HALevel_1V9 = 0, // 1.7-1.9 HALevel_2V1, // 1.9-2.1 HALevel_2V3, // 2.1-2.3 HALevel_2V5, // 2.3-2.5 - /* 下面等级将使用低功耗监控,1uA消耗 */ + /* 涓嬮潰绛夌骇灏嗕娇鐢ㄤ綆鍔熻楃洃鎺э紝1uA娑堣 */ LPLevel_1V8 = 0x80, LPLevel_1V9, LPLevel_2V0, @@ -85,80 +85,80 @@ typedef enum } VolM_LevelypeDef; /** - * @brief 启用内部DC/DC电源,用于节约系统功耗 + * @brief 鍚敤鍐呴儴DC/DC鐢垫簮锛岀敤浜庤妭绾︾郴缁熷姛鑰 * - * @param s - 是否打开DCDC电源 + * @param s - 鏄惁鎵撳紑DCDC鐢垫簮 */ void PWR_DCDCCfg(FunctionalState s); /** - * @brief 可控单元模块的电源控制 + * @brief 鍙帶鍗曞厓妯″潡鐨勭數婧愭帶鍒 * - * @param s - 是否打开电源 + * @param s - 鏄惁鎵撳紑鐢垫簮 * @param unit - please refer to unit of controllable power supply */ void PWR_UnitModCfg(FunctionalState s, uint8_t unit); /** - * @brief 外设时钟控制位 + * @brief 澶栬鏃堕挓鎺у埗浣 * - * @param s - 是否打开对应外设时钟 + * @param s - 鏄惁鎵撳紑瀵瑰簲澶栬鏃堕挓 * @param perph - please refer to Peripher CLK control bit define */ void PWR_PeriphClkCfg(FunctionalState s, uint16_t perph); /** - * @brief 睡眠唤醒源配置 + * @brief 鐫$湢鍞ら啋婧愰厤缃 * - * @param s - 是否打开此外设睡眠唤醒功能 - * @param perph - 需要设置的唤醒源 - * RB_SLP_USB_WAKE - USB 为唤醒源 - * RB_SLP_RTC_WAKE - RTC 为唤醒源 - * RB_SLP_GPIO_WAKE - GPIO 为唤醒源 - * RB_SLP_BAT_WAKE - BAT 为唤醒源 + * @param s - 鏄惁鎵撳紑姝ゅ璁剧潯鐪犲敜閱掑姛鑳 + * @param perph - 闇瑕佽缃殑鍞ら啋婧 + * RB_SLP_USB_WAKE - USB 涓哄敜閱掓簮 + * RB_SLP_RTC_WAKE - RTC 涓哄敜閱掓簮 + * RB_SLP_GPIO_WAKE - GPIO 涓哄敜閱掓簮 + * RB_SLP_BAT_WAKE - BAT 涓哄敜閱掓簮 * @param mode - refer to WakeUP_ModeypeDef */ void PWR_PeriphWakeUpCfg(FunctionalState s, uint8_t perph, WakeUP_ModeypeDef mode); /** - * @brief 电源监控 + * @brief 鐢垫簮鐩戞帶 * - * @param s - 是否打开此功能 + * @param s - 鏄惁鎵撳紑姝ゅ姛鑳 * @param vl - refer to VolM_LevelypeDef */ void PowerMonitor(FunctionalState s, VolM_LevelypeDef vl); /** - * @brief 低功耗-Idle模式 + * @brief 浣庡姛鑰-Idle妯″紡 */ void LowPower_Idle(void); /** - * @brief 低功耗-Halt模式,此低功耗切到HSI/5时钟运行,唤醒后需要用户自己重新选择系统时钟源 + * @brief 浣庡姛鑰-Halt妯″紡锛屾浣庡姛鑰楀垏鍒癏SI/5鏃堕挓杩愯锛屽敜閱掑悗闇瑕佺敤鎴疯嚜宸遍噸鏂伴夋嫨绯荤粺鏃堕挓婧 */ void LowPower_Halt(void); /** - * @brief 低功耗-Sleep模式,此低功耗切到HSI/5时钟运行,唤醒后需要用户自己重新选择系统时钟源 - * @note 注意调用此函数,DCDC功能强制关闭,唤醒后可以手动再次打开 + * @brief 浣庡姛鑰-Sleep妯″紡锛屾浣庡姛鑰楀垏鍒癏SI/5鏃堕挓杩愯锛屽敜閱掑悗闇瑕佺敤鎴疯嚜宸遍噸鏂伴夋嫨绯荤粺鏃堕挓婧 + * @note 娉ㄦ剰璋冪敤姝ゅ嚱鏁帮紝DCDC鍔熻兘寮哄埗鍏抽棴锛屽敜閱掑悗鍙互鎵嬪姩鍐嶆鎵撳紑 * - * @param rm - 供电模块选择 - * RB_PWR_RAM2K - 2K retention SRAM 供电 - * RB_PWR_RAM16K - 16K main SRAM 供电 - * RB_PWR_EXTEND - USB 和 BLE 单元保留区域供电 - * RB_PWR_XROM - FlashROM 供电 - * NULL - 以上单元都断电 + * @param rm - 渚涚數妯″潡閫夋嫨 + * RB_PWR_RAM2K - 2K retention SRAM 渚涚數 + * RB_PWR_RAM16K - 16K main SRAM 渚涚數 + * RB_PWR_EXTEND - USB 鍜 BLE 鍗曞厓淇濈暀鍖哄煙渚涚數 + * RB_PWR_XROM - FlashROM 渚涚數 + * NULL - 浠ヤ笂鍗曞厓閮芥柇鐢 */ void LowPower_Sleep(uint16_t rm); /** - * @brief 低功耗-Shutdown模式,此低功耗切到HSI/5时钟运行,唤醒后需要用户自己重新选择系统时钟源 - * @note 注意调用此函数,DCDC功能强制关闭,唤醒后可以手动再次打开 + * @brief 浣庡姛鑰-Shutdown妯″紡锛屾浣庡姛鑰楀垏鍒癏SI/5鏃堕挓杩愯锛屽敜閱掑悗闇瑕佺敤鎴疯嚜宸遍噸鏂伴夋嫨绯荤粺鏃堕挓婧 + * @note 娉ㄦ剰璋冪敤姝ゅ嚱鏁帮紝DCDC鍔熻兘寮哄埗鍏抽棴锛屽敜閱掑悗鍙互鎵嬪姩鍐嶆鎵撳紑 * - * @param rm - 供电模块选择 - * RB_PWR_RAM2K - 2K retention SRAM 供电 - * RB_PWR_RAM16K - 16K main SRAM 供电 - * NULL - 以上单元都断电 + * @param rm - 渚涚數妯″潡閫夋嫨 + * RB_PWR_RAM2K - 2K retention SRAM 渚涚數 + * RB_PWR_RAM16K - 16K main SRAM 渚涚數 + * NULL - 浠ヤ笂鍗曞厓閮芥柇鐢 */ void LowPower_Shutdown(uint16_t rm); diff --git a/SRC/StdPeriphDriver/inc/CH59x_spi.h b/SRC/StdPeriphDriver/inc/CH59x_spi.h index 6283ba3..f0ca920 100644 --- a/SRC/StdPeriphDriver/inc/CH59x_spi.h +++ b/SRC/StdPeriphDriver/inc/CH59x_spi.h @@ -20,22 +20,22 @@ extern "C" { /** * @brief SPI0 interrupt bit define */ -#define SPI0_IT_FST_BYTE RB_SPI_IE_FST_BYTE // 从机模式的首字节命令模式下,接收到首字节中断 -#define SPI0_IT_FIFO_OV RB_SPI_IE_FIFO_OV // FIFO 溢出 -#define SPI0_IT_DMA_END RB_SPI_IE_DMA_END // DMA 传输结束 -#define SPI0_IT_FIFO_HF RB_SPI_IE_FIFO_HF // FIFO 使用过半 -#define SPI0_IT_BYTE_END RB_SPI_IE_BYTE_END // 单字节传输完成 -#define SPI0_IT_CNT_END RB_SPI_IE_CNT_END // 全部字节传输完成 +#define SPI0_IT_FST_BYTE RB_SPI_IE_FST_BYTE // 浠庢満妯″紡鐨勯瀛楄妭鍛戒护妯″紡涓嬶紝鎺ユ敹鍒伴瀛楄妭涓柇 +#define SPI0_IT_FIFO_OV RB_SPI_IE_FIFO_OV // FIFO 婧㈠嚭 +#define SPI0_IT_DMA_END RB_SPI_IE_DMA_END // DMA 浼犺緭缁撴潫 +#define SPI0_IT_FIFO_HF RB_SPI_IE_FIFO_HF // FIFO 浣跨敤杩囧崐 +#define SPI0_IT_BYTE_END RB_SPI_IE_BYTE_END // 鍗曞瓧鑺備紶杈撳畬鎴 +#define SPI0_IT_CNT_END RB_SPI_IE_CNT_END // 鍏ㄩ儴瀛楄妭浼犺緭瀹屾垚 /** * @brief Configuration data mode */ typedef enum { - Mode0_LowBitINFront = 0, // 模式0,低位在前 - Mode0_HighBitINFront, // 模式0,高位在前 - Mode3_LowBitINFront, // 模式3,低位在前 - Mode3_HighBitINFront, // 模式3,高位在前 + Mode0_LowBitINFront = 0, // 妯″紡0锛屼綆浣嶅湪鍓 + Mode0_HighBitINFront, // 妯″紡0锛岄珮浣嶅湪鍓 + Mode3_LowBitINFront, // 妯″紡3锛屼綆浣嶅湪鍓 + Mode3_HighBitINFront, // 妯″紡3锛岄珮浣嶅湪鍓 } ModeBitOrderTypeDef; /** @@ -43,167 +43,167 @@ typedef enum */ typedef enum { - Mode_DataStream = 0, // 数据流模式 - Mose_FirstCmd, // 首字节命令模式 + Mode_DataStream = 0, // 鏁版嵁娴佹ā寮 + Mose_FirstCmd, // 棣栧瓧鑺傚懡浠ゆā寮 } Slave_ModeTypeDef; /** - * @brief 主机模式默认初始化:模式0+3线全双工+8MHz + * @brief 涓绘満妯″紡榛樿鍒濆鍖栵細妯″紡0+3绾垮叏鍙屽伐+8MHz */ void SPI0_MasterDefInit(void); /** - * @brief SPI0 基准时钟配置,= d*Tsys + * @brief SPI0 鍩哄噯鏃堕挓閰嶇疆锛= d*Tsys * - * @param c - 时钟分频系数 + * @param c - 鏃堕挓鍒嗛绯绘暟 */ void SPI0_CLKCfg(uint8_t c); /** - * @brief 设置数据流模式 + * @brief 璁剧疆鏁版嵁娴佹ā寮 * - * @param m - 数据流模式 refer to ModeBitOrderTypeDef + * @param m - 鏁版嵁娴佹ā寮 refer to ModeBitOrderTypeDef */ void SPI0_DataMode(ModeBitOrderTypeDef m); /** - * @brief 发送单字节 (buffer) + * @brief 鍙戦佸崟瀛楄妭 (buffer) * - * @param d - 发送字节 + * @param d - 鍙戦佸瓧鑺 */ void SPI0_MasterSendByte(uint8_t d); /** - * @brief 接收单字节 (buffer) + * @brief 鎺ユ敹鍗曞瓧鑺 (buffer) * * @param none */ uint8_t SPI0_MasterRecvByte(void); /** - * @brief 使用FIFO连续发送多字节 + * @brief 浣跨敤FIFO杩炵画鍙戦佸瀛楄妭 * - * @param pbuf - 待发送的数据内容首地址 - * @param len - 请求发送的数据长度,最大4095 + * @param pbuf - 寰呭彂閫佺殑鏁版嵁鍐呭棣栧湴鍧 + * @param len - 璇锋眰鍙戦佺殑鏁版嵁闀垮害锛屾渶澶4095 */ void SPI0_MasterTrans(uint8_t *pbuf, uint16_t len); /** - * @brief 使用FIFO连续接收多字节 + * @brief 浣跨敤FIFO杩炵画鎺ユ敹澶氬瓧鑺 * - * @param pbuf - 待接收的数据首地址 - * @param len - 待接收的数据长度,最大4095 + * @param pbuf - 寰呮帴鏀剁殑鏁版嵁棣栧湴鍧 + * @param len - 寰呮帴鏀剁殑鏁版嵁闀垮害锛屾渶澶4095 */ void SPI0_MasterRecv(uint8_t *pbuf, uint16_t len); /** - * @brief DMA方式连续发送数据 + * @brief DMA鏂瑰紡杩炵画鍙戦佹暟鎹 * - * @param pbuf - 待发送数据起始地址,需要四字节对其 - * @param len - 待发送数据长度 + * @param pbuf - 寰呭彂閫佹暟鎹捣濮嬪湴鍧,闇瑕佸洓瀛楄妭瀵瑰叾 + * @param len - 寰呭彂閫佹暟鎹暱搴 */ void SPI0_MasterDMATrans(uint8_t *pbuf, uint16_t len); /** - * @brief DMA方式连续接收数据 + * @brief DMA鏂瑰紡杩炵画鎺ユ敹鏁版嵁 * - * @param pbuf - 待接收数据存放起始地址,需要四字节对其 - * @param len - 待接收数据长度 + * @param pbuf - 寰呮帴鏀舵暟鎹瓨鏀捐捣濮嬪湴鍧,闇瑕佸洓瀛楄妭瀵瑰叾 + * @param len - 寰呮帴鏀舵暟鎹暱搴 */ void SPI0_MasterDMARecv(uint8_t *pbuf, uint16_t len); -void SPI1_MasterDefInit(void); /* 主机模式默认初始化:模式0+3线全双工+8MHz */ -void SPI1_CLKCfg(UINT8 c); /* SPI1 基准时钟配置,= d*Tsys */ -void SPI1_DataMode(ModeBitOrderTypeDef m); /* 设置数据流模式 */ +void SPI1_MasterDefInit(void); /* 涓绘満妯″紡榛樿鍒濆鍖栵細妯″紡0+3绾垮叏鍙屽伐+8MHz */ +void SPI1_CLKCfg(UINT8 c); /* SPI1 鍩哄噯鏃堕挓閰嶇疆锛= d*Tsys */ +void SPI1_DataMode(ModeBitOrderTypeDef m); /* 璁剧疆鏁版嵁娴佹ā寮 */ -void SPI1_MasterSendByte(UINT8 d); /* 发送单字节 (buffer) */ -UINT8 SPI1_MasterRecvByte(void); /* 接收单字节 (buffer) */ +void SPI1_MasterSendByte(UINT8 d); /* 鍙戦佸崟瀛楄妭 (buffer) */ +UINT8 SPI1_MasterRecvByte(void); /* 鎺ユ敹鍗曞瓧鑺 (buffer) */ -void SPI1_MasterTrans(UINT8 *pbuf, UINT16 len); /* 使用FIFO连续发送多字节 */ -void SPI1_MasterRecv(UINT8 *pbuf, UINT16 len); /* 使用FIFO连续接收多字节 */ +void SPI1_MasterTrans(UINT8 *pbuf, UINT16 len); /* 浣跨敤FIFO杩炵画鍙戦佸瀛楄妭 */ +void SPI1_MasterRecv(UINT8 *pbuf, UINT16 len); /* 浣跨敤FIFO杩炵画鎺ユ敹澶氬瓧鑺 */ /** - * @brief 设备模式默认初始化,建议设置MISO的GPIO对应为输入模式 + * @brief 璁惧妯″紡榛樿鍒濆鍖栵紝寤鸿璁剧疆MISO鐨凣PIO瀵瑰簲涓鸿緭鍏ユā寮 */ void SPI0_SlaveInit(void); /** - * @brief 加载首字节数据内容 + * @brief 鍔犺浇棣栧瓧鑺傛暟鎹唴瀹 * - * @param d - 首字节数据内容 + * @param d - 棣栧瓧鑺傛暟鎹唴瀹 */ #define SetFirstData(d) (R8_SPI0_SLAVE_PRE = d) /** - * @brief 从机模式,发送一字节数据 + * @brief 浠庢満妯″紡锛屽彂閫佷竴瀛楄妭鏁版嵁 * - * @param d - 待发送数据 + * @param d - 寰呭彂閫佹暟鎹 */ void SPI0_SlaveSendByte(uint8_t d); /** - * @brief 从机模式,接收一字节数据 + * @brief 浠庢満妯″紡锛屾帴鏀朵竴瀛楄妭鏁版嵁 * - * @return 接收到数据 + * @return 鎺ユ敹鍒版暟鎹 */ uint8_t SPI0_SlaveRecvByte(void); /** - * @brief 从机模式,发送多字节数据 + * @brief 浠庢満妯″紡锛屽彂閫佸瀛楄妭鏁版嵁 * - * @param pbuf - 待发送的数据内容首地址 - * @param len - 请求发送的数据长度,最大4095 + * @param pbuf - 寰呭彂閫佺殑鏁版嵁鍐呭棣栧湴鍧 + * @param len - 璇锋眰鍙戦佺殑鏁版嵁闀垮害锛屾渶澶4095 */ void SPI0_SlaveTrans(uint8_t *pbuf, uint16_t len); /** - * @brief 从机模式,接收多字节数据 + * @brief 浠庢満妯″紡锛屾帴鏀跺瀛楄妭鏁版嵁 * - * @param pbuf - 接收收数据存放起始地址 - * @param len - 请求接收数据长度 + * @param pbuf - 鎺ユ敹鏀舵暟鎹瓨鏀捐捣濮嬪湴鍧 + * @param len - 璇锋眰鎺ユ敹鏁版嵁闀垮害 */ void SPI0_SlaveRecv(uint8_t *pbuf, uint16_t len); /** - * @brief DMA方式连续发送数据 + * @brief DMA鏂瑰紡杩炵画鍙戦佹暟鎹 * - * @param pbuf - 待发送数据起始地址,需要四字节对其 - * @param len - 待发送数据长度 + * @param pbuf - 寰呭彂閫佹暟鎹捣濮嬪湴鍧,闇瑕佸洓瀛楄妭瀵瑰叾 + * @param len - 寰呭彂閫佹暟鎹暱搴 */ void SPI0_SlaveDMATrans(uint8_t *pbuf, uint16_t len); /** - * @brief DMA方式连续接收数据 + * @brief DMA鏂瑰紡杩炵画鎺ユ敹鏁版嵁 * - * @param pbuf - 待接收数据存放起始地址,需要四字节对其 - * @param len - 待接收数据长度 + * @param pbuf - 寰呮帴鏀舵暟鎹瓨鏀捐捣濮嬪湴鍧,闇瑕佸洓瀛楄妭瀵瑰叾 + * @param len - 寰呮帴鏀舵暟鎹暱搴 */ void SPI0_SlaveDMARecv(uint8_t *pbuf, uint16_t len); /** - * @brief 配置SPI0中断 + * @brief 閰嶇疆SPI0涓柇 * - * @param s - 使能/关闭 + * @param s - 浣胯兘/鍏抽棴 * @param f - refer to SPI0 interrupt bit define */ #define SPI0_ITCfg(s, f) ((s) ? (R8_SPI0_INTER_EN |= f) : (R8_SPI0_INTER_EN &= ~f)) /** - * @brief 获取中断标志状态,0-未置位,(!0)-触发 + * @brief 鑾峰彇涓柇鏍囧織鐘舵侊紝0-鏈疆浣嶏紝(!0)-瑙﹀彂 * * @param f - refer to SPI0 interrupt bit define */ #define SPI0_GetITFlag(f) (R8_SPI0_INT_FLAG & f) /** - * @brief 清除当前中断标志 + * @brief 娓呴櫎褰撳墠涓柇鏍囧織 * * @param f - refer to SPI0 interrupt bit define */ #define SPI0_ClearITFlag(f) (R8_SPI0_INT_FLAG = f) /** - * @brief 关闭SPI0 + * @brief 鍏抽棴SPI0 */ #define SPI0_Disable() (R8_SPI0_CTRL_MOD &= ~(RB_SPI_MOSI_OE | RB_SPI_SCK_OE | RB_SPI_MISO_OE)) diff --git a/SRC/StdPeriphDriver/inc/CH59x_sys.h b/SRC/StdPeriphDriver/inc/CH59x_sys.h index 2c70a59..fddd0cf 100644 --- a/SRC/StdPeriphDriver/inc/CH59x_sys.h +++ b/SRC/StdPeriphDriver/inc/CH59x_sys.h @@ -22,14 +22,14 @@ extern "C" { */ typedef enum { - RST_STATUS_SW = 0, // 软件复位 - RST_STATUS_RPOR, // 上电复位 - RST_STATUS_WTR, // 看门狗超时复位 - RST_STATUS_MR, // 外部手动复位 - RST_STATUS_LRM0, // 唤醒复位-软复位引起 - RST_STATUS_GPWSM, // 下电模式唤醒复位 - RST_STATUS_LRM1, // 唤醒复位-看门狗引起 - RST_STATUS_LRM2, // 唤醒复位-手动复位引起 + RST_STATUS_SW = 0, // 杞欢澶嶄綅 + RST_STATUS_RPOR, // 涓婄數澶嶄綅 + RST_STATUS_WTR, // 鐪嬮棬鐙楄秴鏃跺浣 + RST_STATUS_MR, // 澶栭儴鎵嬪姩澶嶄綅 + RST_STATUS_LRM0, // 鍞ら啋澶嶄綅-杞浣嶅紩璧 + RST_STATUS_GPWSM, // 涓嬬數妯″紡鍞ら啋澶嶄綅 + RST_STATUS_LRM1, // 鍞ら啋澶嶄綅-鐪嬮棬鐙楀紩璧 + RST_STATUS_LRM2, // 鍞ら啋澶嶄綅-鎵嬪姩澶嶄綅寮曡捣 } SYS_ResetStaTypeDef; @@ -38,132 +38,132 @@ typedef enum */ typedef enum { - INFO_ROM_READ = 0, // FlashROM 代码和数据区 是否可读 - INFO_RESET_EN = 2, // RST#外部手动复位输入功能是否开启 - INFO_BOOT_EN, // 系统引导程序 BootLoader 是否开启 - INFO_DEBUG_EN, // 系统仿真调试接口是否开启 - INFO_LOADER, // 当前系统是否处于Bootloader 区 - STA_SAFEACC_ACT, // 当前系统是否处于安全访问状态,否则RWA属性区域不可访问 + INFO_ROM_READ = 0, // FlashROM 浠g爜鍜屾暟鎹尯 鏄惁鍙 + INFO_RESET_EN = 2, // RST#澶栭儴鎵嬪姩澶嶄綅杈撳叆鍔熻兘鏄惁寮鍚 + INFO_BOOT_EN, // 绯荤粺寮曞绋嬪簭 BootLoader 鏄惁寮鍚 + INFO_DEBUG_EN, // 绯荤粺浠跨湡璋冭瘯鎺ュ彛鏄惁寮鍚 + INFO_LOADER, // 褰撳墠绯荤粺鏄惁澶勪簬Bootloader 鍖 + STA_SAFEACC_ACT, // 褰撳墠绯荤粺鏄惁澶勪簬瀹夊叏璁块棶鐘舵侊紝鍚﹀垯RWA灞炴у尯鍩熶笉鍙闂 } SYS_InfoStaTypeDef; /** - * @brief 获取芯片ID类,一般为固定值 + * @brief 鑾峰彇鑺墖ID绫伙紝涓鑸负鍥哄畾鍊 */ #define SYS_GetChipID() R8_CHIP_ID /** - * @brief 获取安全访问ID,一般为固定值 + * @brief 鑾峰彇瀹夊叏璁块棶ID锛屼竴鑸负鍥哄畾鍊 */ #define SYS_GetAccessID() R8_SAFE_ACCESS_ID /** - * @brief 配置系统运行时钟 + * @brief 閰嶇疆绯荤粺杩愯鏃堕挓 * - * @param sc - 系统时钟源选择 refer to SYS_CLKTypeDef + * @param sc - 绯荤粺鏃堕挓婧愰夋嫨 refer to SYS_CLKTypeDef */ void SetSysClock(SYS_CLKTypeDef sc); /** - * @brief 获取当前系统时钟 + * @brief 鑾峰彇褰撳墠绯荤粺鏃堕挓 * * @return Hz */ uint32_t GetSysClock(void); /** - * @brief 获取当前系统信息状态 + * @brief 鑾峰彇褰撳墠绯荤粺淇℃伅鐘舵 * * @param i - refer to SYS_InfoStaTypeDef * - * @return 是否开启 + * @return 鏄惁寮鍚 */ uint8_t SYS_GetInfoSta(SYS_InfoStaTypeDef i); /** - * @brief 获取系统上次复位状态 + * @brief 鑾峰彇绯荤粺涓婃澶嶄綅鐘舵 * * @return refer to SYS_ResetStaTypeDef */ #define SYS_GetLastResetSta() (R8_RESET_STATUS & RB_RESET_FLAG) /** - * @brief 执行系统软件复位 + * @brief 鎵ц绯荤粺杞欢澶嶄綅 */ void SYS_ResetExecute(void); /** - * @brief 设置复位保存寄存器的值,不受手动复位、 软件复位、 看门狗复位或者普通唤醒复位的影响 + * @brief 璁剧疆澶嶄綅淇濆瓨瀵勫瓨鍣ㄧ殑鍊硷紝涓嶅彈鎵嬪姩澶嶄綅銆 杞欢澶嶄綅銆 鐪嬮棬鐙楀浣嶆垨鑰呮櫘閫氬敜閱掑浣嶇殑褰卞搷 * * @param i - refer to SYS_InfoStaTypeDef */ #define SYS_ResetKeepBuf(d) (R8_GLOB_RESET_KEEP = d) /** - * @brief 关闭所有中断,并保留当前中断值 + * @brief 鍏抽棴鎵鏈変腑鏂紝骞朵繚鐣欏綋鍓嶄腑鏂 * - * @param pirqv - 当前保留中断值 + * @param pirqv - 褰撳墠淇濈暀涓柇鍊 */ void SYS_DisableAllIrq(uint32_t *pirqv); /** - * @brief 恢复之前关闭的中断值 + * @brief 鎭㈠涔嬪墠鍏抽棴鐨勪腑鏂 * - * @param irq_status - 当前保留中断值 + * @param irq_status - 褰撳墠淇濈暀涓柇鍊 */ void SYS_RecoverIrq(uint32_t irq_status); /** - * @brief 获取当前系统(SYSTICK)计数值 + * @brief 鑾峰彇褰撳墠绯荤粺(SYSTICK)璁℃暟鍊 * - * @return 当前计数值 + * @return 褰撳墠璁℃暟鍊 */ uint32_t SYS_GetSysTickCnt(void); /** - * @brief 加载看门狗计数初值,递增型 + * @brief 鍔犺浇鐪嬮棬鐙楄鏁板垵鍊硷紝閫掑鍨 * - * @param c - 看门狗计数初值 + * @param c - 鐪嬮棬鐙楄鏁板垵鍊 */ #define WWDG_SetCounter(c) (R8_WDOG_COUNT = c) /** - * @brief 看门狗定时器溢出中断使能 + * @brief 鐪嬮棬鐙楀畾鏃跺櫒婧㈠嚭涓柇浣胯兘 * - * @param s - 溢出是否中断 + * @param s - 婧㈠嚭鏄惁涓柇 */ void WWDG_ITCfg(FunctionalState s); /** - * @brief 看门狗定时器复位功能 + * @brief 鐪嬮棬鐙楀畾鏃跺櫒澶嶄綅鍔熻兘 * - * @param s - 溢出是否复位 + * @param s - 婧㈠嚭鏄惁澶嶄綅 */ void WWDG_ResetCfg(FunctionalState s); /** - * @brief 获取当前看门狗定时器溢出标志 + * @brief 鑾峰彇褰撳墠鐪嬮棬鐙楀畾鏃跺櫒婧㈠嚭鏍囧織 * - * @return 看门狗定时器溢出标志 + * @return 鐪嬮棬鐙楀畾鏃跺櫒婧㈠嚭鏍囧織 */ #define WWDG_GetFlowFlag() (R8_RST_WDOG_CTRL & RB_WDOG_INT_FLAG) /** - * @brief 清除看门狗中断标志,重新加载计数值也可清除 + * @brief 娓呴櫎鐪嬮棬鐙椾腑鏂爣蹇楋紝閲嶆柊鍔犺浇璁℃暟鍊间篃鍙竻闄 */ void WWDG_ClearFlag(void); /** - * @brief uS 延时 + * @brief uS 寤舵椂 * - * @param t - 时间参数 + * @param t - 鏃堕棿鍙傛暟 */ void mDelayuS(uint16_t t); /** - * @brief mS 延时 + * @brief mS 寤舵椂 * - * @param t - 时间参数 + * @param t - 鏃堕棿鍙傛暟 */ void mDelaymS(uint16_t t); diff --git a/SRC/StdPeriphDriver/inc/CH59x_timer.h b/SRC/StdPeriphDriver/inc/CH59x_timer.h index 9667412..734f6d0 100644 --- a/SRC/StdPeriphDriver/inc/CH59x_timer.h +++ b/SRC/StdPeriphDriver/inc/CH59x_timer.h @@ -23,21 +23,21 @@ extern "C" { * @brief TMR0 interrupt bit define */ -#define TMR0_3_IT_CYC_END 0x01 // 周期结束标志:捕捉-超时,定时-周期结束,PWM-周期结束 -#define TMR0_3_IT_DATA_ACT 0x02 // 数据有效标志:捕捉-新数据,PWM-有效电平结束 -#define TMR0_3_IT_FIFO_HF 0x04 // FIFO 使用过半:捕捉- FIFO>=4, PWM- FIFO<4 -#define TMR1_2_IT_DMA_END 0x08 // DMA 结束,支持TMR1和TMR2 -#define TMR0_3_IT_FIFO_OV 0x10 // FIFO 溢出:捕捉- FIFO满, PWM- FIFO空 +#define TMR0_3_IT_CYC_END 0x01 // 鍛ㄦ湡缁撴潫鏍囧織锛氭崟鎹-瓒呮椂锛屽畾鏃-鍛ㄦ湡缁撴潫锛孭WM-鍛ㄦ湡缁撴潫 +#define TMR0_3_IT_DATA_ACT 0x02 // 鏁版嵁鏈夋晥鏍囧織锛氭崟鎹-鏂版暟鎹紝PWM-鏈夋晥鐢靛钩缁撴潫 +#define TMR0_3_IT_FIFO_HF 0x04 // FIFO 浣跨敤杩囧崐锛氭崟鎹- FIFO>=4锛 PWM- FIFO<4 +#define TMR1_2_IT_DMA_END 0x08 // DMA 缁撴潫锛屾敮鎸乀MR1鍜孴MR2 +#define TMR0_3_IT_FIFO_OV 0x10 // FIFO 婧㈠嚭锛氭崟鎹- FIFO婊★紝 PWM- FIFO绌 /** * @brief Configuration PWM effective level repeat times */ typedef enum { - PWM_Times_1 = 0, // PWM 有效输出重复1次数 - PWM_Times_4, // PWM 有效输出重复4次数 - PWM_Times_8, // PWM 有效输出重复8次数 - PWM_Times_16, // PWM 有效输出重复16次数 + PWM_Times_1 = 0, // PWM 鏈夋晥杈撳嚭閲嶅1娆℃暟 + PWM_Times_4, // PWM 鏈夋晥杈撳嚭閲嶅4娆℃暟 + PWM_Times_8, // PWM 鏈夋晥杈撳嚭閲嶅8娆℃暟 + PWM_Times_16, // PWM 鏈夋晥杈撳嚭閲嶅16娆℃暟 } PWM_RepeatTsTypeDef; /** @@ -45,10 +45,10 @@ typedef enum */ typedef enum { - CAP_NULL = 0, // 不捕捉 & 不计数 - Edge_To_Edge, // 任意边沿之间 & 计数任意边沿 - FallEdge_To_FallEdge, // 下降沿到下降沿 & 计数下降沿 - RiseEdge_To_RiseEdge, // 上升沿到上升沿 & 计数上升沿 + CAP_NULL = 0, // 涓嶆崟鎹 & 涓嶈鏁 + Edge_To_Edge, // 浠绘剰杈规部涔嬮棿 & 璁℃暟浠绘剰杈规部 + FallEdge_To_FallEdge, // 涓嬮檷娌垮埌涓嬮檷娌 & 璁℃暟涓嬮檷娌 + RiseEdge_To_RiseEdge, // 涓婂崌娌垮埌涓婂崌娌 & 璁℃暟涓婂崌娌 } CapModeTypeDef; /** @@ -56,54 +56,54 @@ typedef enum */ typedef enum { - Mode_Single = 0, // 单次模式 - Mode_LOOP, // 循环模式 + Mode_Single = 0, // 鍗曟妯″紡 + Mode_LOOP, // 寰幆妯″紡 } DMAModeTypeDef; /** - * @brief 定时功能初始化 + * @brief 瀹氭椂鍔熻兘鍒濆鍖 * - * @param t - 定时时间,基于当前系统时钟Tsys, 最长定时周期 67108864 + * @param t - 瀹氭椂鏃堕棿锛屽熀浜庡綋鍓嶇郴缁熸椂閽烼sys, 鏈闀垮畾鏃跺懆鏈 67108864 */ void TMR0_TimerInit(uint32_t t); /** - * @brief 获取当前定时器值,最大67108864 + * @brief 鑾峰彇褰撳墠瀹氭椂鍣ㄥ硷紝鏈澶67108864 * - * @return 当前定时器值 + * @return 褰撳墠瀹氭椂鍣ㄥ */ #define TMR0_GetCurrentTimer() R32_TMR0_COUNT /** - * @brief 边沿计数功能初始化 + * @brief 杈规部璁℃暟鍔熻兘鍒濆鍖 * - * @param cap - 采集计数类型 + * @param cap - 閲囬泦璁℃暟绫诲瀷 */ void TMR0_EXTSingleCounterInit(CapModeTypeDef cap); /** - * @brief 设置计数统计溢出大小,最大67108862 + * @brief 璁剧疆璁℃暟缁熻婧㈠嚭澶у皬锛屾渶澶67108862 * - * @param cyc - 计数统计溢出大小 + * @param cyc - 璁℃暟缁熻婧㈠嚭澶у皬 */ #define TMR0_CountOverflowCfg(cyc) (R32_TMR0_CNT_END = (cyc + 2)) /** - * @brief 获取当前计数值,最大67108862 + * @brief 鑾峰彇褰撳墠璁℃暟鍊硷紝鏈澶67108862 * - * @return 当前计数值 + * @return 褰撳墠璁℃暟鍊 */ #define TMR0_GetCurrentCount() R32_TMR0_COUNT /** - * @brief PWM0 通道输出波形周期配置, 最大67108864 + * @brief PWM0 閫氶亾杈撳嚭娉㈠舰鍛ㄦ湡閰嶇疆, 鏈澶67108864 * - * @param cyc - 输出波形周期 + * @param cyc - 杈撳嚭娉㈠舰鍛ㄦ湡 */ #define TMR0_PWMCycleCfg(cyc) (R32_TMR0_CNT_END = cyc) /** - * @brief PWM 输出初始化 + * @brief PWM 杈撳嚭鍒濆鍖 * * @param pr - select wave polar, refer to PWMX_PolarTypeDef * @param ts - set pwm repeat times, refer to PWM_RepeatTsTypeDef @@ -111,126 +111,126 @@ void TMR0_EXTSingleCounterInit(CapModeTypeDef cap); void TMR0_PWMInit(PWMX_PolarTypeDef pr, PWM_RepeatTsTypeDef ts); /** - * @brief PWM0 有效数据脉宽, 最大67108864 + * @brief PWM0 鏈夋晥鏁版嵁鑴夊, 鏈澶67108864 * - * @param d - 有效数据脉宽 + * @param d - 鏈夋晥鏁版嵁鑴夊 */ #define TMR0_PWMActDataWidth(d) (R32_TMR0_FIFO = d) /** - * @brief CAP0 捕捉电平超时配置, 最大33554432 + * @brief CAP0 鎹曟崏鐢靛钩瓒呮椂閰嶇疆, 鏈澶33554432 * - * @param cyc - 捕捉电平超时 + * @param cyc - 鎹曟崏鐢靛钩瓒呮椂 */ #define TMR0_CAPTimeoutCfg(cyc) (R32_TMR0_CNT_END = cyc) /** - * @brief 外部信号捕捉功能初始化 + * @brief 澶栭儴淇″彿鎹曟崏鍔熻兘鍒濆鍖 * * @param cap - select capture mode, refer to CapModeTypeDef */ void TMR0_CapInit(CapModeTypeDef cap); /** - * @brief 获取脉冲数据 + * @brief 鑾峰彇鑴夊啿鏁版嵁 * - * @return 脉冲数据 + * @return 鑴夊啿鏁版嵁 */ #define TMR0_CAPGetData() R32_TMR0_FIFO /** - * @brief 获取当前已捕获数据个数 + * @brief 鑾峰彇褰撳墠宸叉崟鑾锋暟鎹釜鏁 * - * @return 当前已捕获数据个数 + * @return 褰撳墠宸叉崟鑾锋暟鎹釜鏁 */ #define TMR0_CAPDataCounter() R8_TMR0_FIFO_COUNT /** - * @brief 关闭 TMR0 PWM输出 + * @brief 鍏抽棴 TMR0 PWM杈撳嚭 */ #define TMR0_PWMDisable() (R8_TMR0_CTRL_MOD &= ~RB_TMR_OUT_EN) /** - * @brief 开启 TMR0 PWM输出 + * @brief 寮鍚 TMR0 PWM杈撳嚭 */ #define TMR0_PWMEnable() (R8_TMR0_CTRL_MOD |= RB_TMR_OUT_EN) /** - * @brief 关闭 TMR0 + * @brief 鍏抽棴 TMR0 */ #define TMR0_Disable() (R8_TMR0_CTRL_MOD &= ~RB_TMR_COUNT_EN) /** - * @brief 开启 TMR0 + * @brief 寮鍚 TMR0 */ #define TMR0_Enable() (R8_TMR0_CTRL_MOD |= RB_TMR_COUNT_EN) /** - * @brief 中断配置 + * @brief 涓柇閰嶇疆 * - * @param s - 使能/关闭 + * @param s - 浣胯兘/鍏抽棴 * @param f - refer to TMR interrupt bit define */ #define TMR0_ITCfg(s, f) ((s) ? (R8_TMR0_INTER_EN |= f) : (R8_TMR0_INTER_EN &= ~f)) /** - * @brief 清除中断标志 + * @brief 娓呴櫎涓柇鏍囧織 * * @param f - refer to TMR interrupt bit define */ #define TMR0_ClearITFlag(f) (R8_TMR0_INT_FLAG = f) /** - * @brief 查询中断标志状态 + * @brief 鏌ヨ涓柇鏍囧織鐘舵 * * @param f - refer to TMR interrupt bit define */ #define TMR0_GetITFlag(f) (R8_TMR0_INT_FLAG & f) /** - * @brief 定时功能初始化 + * @brief 瀹氭椂鍔熻兘鍒濆鍖 * - * @param t - 定时时间,基于当前系统时钟Tsys, 最长定时周期 67108864 + * @param t - 瀹氭椂鏃堕棿锛屽熀浜庡綋鍓嶇郴缁熸椂閽烼sys, 鏈闀垮畾鏃跺懆鏈 67108864 */ void TMR1_TimerInit(uint32_t t); /** - * @brief 获取当前定时器值,最大67108864 + * @brief 鑾峰彇褰撳墠瀹氭椂鍣ㄥ硷紝鏈澶67108864 * - * @return 当前定时器值 + * @return 褰撳墠瀹氭椂鍣ㄥ */ #define TMR1_GetCurrentTimer() R32_TMR1_COUNT /** - * @brief 边沿计数功能初始化 + * @brief 杈规部璁℃暟鍔熻兘鍒濆鍖 * - * @param cap - 采集计数类型 + * @param cap - 閲囬泦璁℃暟绫诲瀷 */ void TMR1_EXTSingleCounterInit(CapModeTypeDef cap); /** - * @brief 设置计数统计溢出大小,最大67108862 + * @brief 璁剧疆璁℃暟缁熻婧㈠嚭澶у皬锛屾渶澶67108862 * - * @param cyc - 计数统计溢出大小 + * @param cyc - 璁℃暟缁熻婧㈠嚭澶у皬 */ #define TMR1_CountOverflowCfg(cyc) (R32_TMR1_CNT_END = (cyc + 2)) /** - * @brief 获取当前计数值,最大67108862 + * @brief 鑾峰彇褰撳墠璁℃暟鍊硷紝鏈澶67108862 * - * @return 当前计数值 + * @return 褰撳墠璁℃暟鍊 */ #define TMR1_GetCurrentCount() R32_TMR1_COUNT /** - * @brief PWM1 通道输出波形周期配置, 最大67108864 + * @brief PWM1 閫氶亾杈撳嚭娉㈠舰鍛ㄦ湡閰嶇疆, 鏈澶67108864 * - * @param cyc - 输出波形周期 + * @param cyc - 杈撳嚭娉㈠舰鍛ㄦ湡 */ #define TMR1_PWMCycleCfg(cyc) (R32_TMR1_CNT_END = cyc) /** - * @brief PWM 输出初始化 + * @brief PWM 杈撳嚭鍒濆鍖 * * @param pr - select wave polar, refer to PWMX_PolarTypeDef * @param ts - set pwm repeat times, refer to PWM_RepeatTsTypeDef @@ -238,136 +238,136 @@ void TMR1_EXTSingleCounterInit(CapModeTypeDef cap); void TMR1_PWMInit(PWMX_PolarTypeDef pr, PWM_RepeatTsTypeDef ts); /** - * @brief PWM1 有效数据脉宽, 最大67108864 + * @brief PWM1 鏈夋晥鏁版嵁鑴夊, 鏈澶67108864 * - * @param d - 有效数据脉宽 + * @param d - 鏈夋晥鏁版嵁鑴夊 */ #define TMR1_PWMActDataWidth(d) (R32_TMR1_FIFO = d) /** - * @brief CAP1 捕捉电平超时配置, 最大33554432 + * @brief CAP1 鎹曟崏鐢靛钩瓒呮椂閰嶇疆, 鏈澶33554432 * - * @param cyc - 捕捉电平超时 + * @param cyc - 鎹曟崏鐢靛钩瓒呮椂 */ #define TMR1_CAPTimeoutCfg(cyc) (R32_TMR1_CNT_END = cyc) /** - * @brief 外部信号捕捉功能初始化 + * @brief 澶栭儴淇″彿鎹曟崏鍔熻兘鍒濆鍖 * * @param cap - select capture mode, refer to CapModeTypeDef */ void TMR1_CapInit(CapModeTypeDef cap); /** - * @brief 获取脉冲数据 + * @brief 鑾峰彇鑴夊啿鏁版嵁 * - * @return 脉冲数据 + * @return 鑴夊啿鏁版嵁 */ #define TMR1_CAPGetData() R32_TMR1_FIFO /** - * @brief 获取当前已捕获数据个数 + * @brief 鑾峰彇褰撳墠宸叉崟鑾锋暟鎹釜鏁 * - * @return 当前已捕获数据个数 + * @return 褰撳墠宸叉崟鑾锋暟鎹釜鏁 */ #define TMR1_CAPDataCounter() R8_TMR1_FIFO_COUNT /** - * @brief 配置DMA功能 + * @brief 閰嶇疆DMA鍔熻兘 * - * @param s - 是否打开DMA功能 - * @param startAddr - DMA 起始地址 - * @param endAddr - DMA 结束地址 - * @param m - 配置DMA模式 + * @param s - 鏄惁鎵撳紑DMA鍔熻兘 + * @param startAddr - DMA 璧峰鍦板潃 + * @param endAddr - DMA 缁撴潫鍦板潃 + * @param m - 閰嶇疆DMA妯″紡 */ void TMR1_DMACfg(uint8_t s, uint16_t startAddr, uint16_t endAddr, DMAModeTypeDef m); /** - * @brief 关闭 TMR1 PWM输出 + * @brief 鍏抽棴 TMR1 PWM杈撳嚭 */ #define TMR1_PWMDisable() (R8_TMR1_CTRL_MOD &= ~RB_TMR_OUT_EN) /** - * @brief 开启 TMR1 PWM输出 + * @brief 寮鍚 TMR1 PWM杈撳嚭 */ #define TMR1_PWMEnable() (R8_TMR1_CTRL_MOD |= RB_TMR_OUT_EN) /** - * @brief 关闭 TMR1 + * @brief 鍏抽棴 TMR1 */ #define TMR1_Disable() (R8_TMR1_CTRL_MOD &= ~RB_TMR_COUNT_EN) /** - * @brief 开启 TMR1 + * @brief 寮鍚 TMR1 */ #define TMR1_Enable() (R8_TMR1_CTRL_MOD |= RB_TMR_COUNT_EN) /** - * @brief 中断配置 + * @brief 涓柇閰嶇疆 * - * @param s - 使能/关闭 + * @param s - 浣胯兘/鍏抽棴 * @param f - refer to TMR interrupt bit define */ #define TMR1_ITCfg(s, f) ((s) ? (R8_TMR1_INTER_EN |= f) : (R8_TMR1_INTER_EN &= ~f)) /** - * @brief 清除中断标志 + * @brief 娓呴櫎涓柇鏍囧織 * * @param f - refer to TMR interrupt bit define */ #define TMR1_ClearITFlag(f) (R8_TMR1_INT_FLAG = f) /** - * @brief 查询中断标志状态 + * @brief 鏌ヨ涓柇鏍囧織鐘舵 * * @param f - refer to TMR interrupt bit define */ #define TMR1_GetITFlag(f) (R8_TMR1_INT_FLAG & f) /** - * @brief 定时功能初始化 + * @brief 瀹氭椂鍔熻兘鍒濆鍖 * - * @param t - 定时时间,基于当前系统时钟Tsys, 最长定时周期 67108864 + * @param t - 瀹氭椂鏃堕棿锛屽熀浜庡綋鍓嶇郴缁熸椂閽烼sys, 鏈闀垮畾鏃跺懆鏈 67108864 */ void TMR2_TimerInit(uint32_t t); /** - * @brief 获取当前定时器值,最大67108864 + * @brief 鑾峰彇褰撳墠瀹氭椂鍣ㄥ硷紝鏈澶67108864 * - * @return 当前定时器值 + * @return 褰撳墠瀹氭椂鍣ㄥ */ #define TMR2_GetCurrentTimer() R32_TMR2_COUNT /** - * @brief 边沿计数功能初始化 + * @brief 杈规部璁℃暟鍔熻兘鍒濆鍖 * - * @param cap - 采集计数类型 + * @param cap - 閲囬泦璁℃暟绫诲瀷 */ void TMR2_EXTSingleCounterInit(CapModeTypeDef cap); /** - * @brief 设置计数统计溢出大小,最大67108862 + * @brief 璁剧疆璁℃暟缁熻婧㈠嚭澶у皬锛屾渶澶67108862 * - * @param cyc - 计数统计溢出大小 + * @param cyc - 璁℃暟缁熻婧㈠嚭澶у皬 */ #define TMR2_CountOverflowCfg(cyc) (R32_TMR2_CNT_END = (cyc + 2)) /** - * @brief 获取当前计数值,最大67108862 + * @brief 鑾峰彇褰撳墠璁℃暟鍊硷紝鏈澶67108862 * - * @return 当前计数值 + * @return 褰撳墠璁℃暟鍊 */ #define TMR2_GetCurrentCount() R32_TMR2_COUNT /** - * @brief PWM2 通道输出波形周期配置, 最大67108864 + * @brief PWM2 閫氶亾杈撳嚭娉㈠舰鍛ㄦ湡閰嶇疆, 鏈澶67108864 * - * @param cyc - 输出波形周期 + * @param cyc - 杈撳嚭娉㈠舰鍛ㄦ湡 */ #define TMR2_PWMCycleCfg(cyc) (R32_TMR2_CNT_END = cyc) /** - * @brief PWM 输出初始化 + * @brief PWM 杈撳嚭鍒濆鍖 * * @param pr - select wave polar, refer to PWMX_PolarTypeDef * @param ts - set pwm repeat times, refer to PWM_RepeatTsTypeDef @@ -375,136 +375,136 @@ void TMR2_EXTSingleCounterInit(CapModeTypeDef cap); void TMR2_PWMInit(PWMX_PolarTypeDef pr, PWM_RepeatTsTypeDef ts); /** - * @brief PWM2 有效数据脉宽, 最大67108864 + * @brief PWM2 鏈夋晥鏁版嵁鑴夊, 鏈澶67108864 * - * @param d - 有效数据脉宽 + * @param d - 鏈夋晥鏁版嵁鑴夊 */ #define TMR2_PWMActDataWidth(d) (R32_TMR2_FIFO = d) /** - * @brief CAP2 捕捉电平超时配置, 最大33554432 + * @brief CAP2 鎹曟崏鐢靛钩瓒呮椂閰嶇疆, 鏈澶33554432 * - * @param cyc - 捕捉电平超时 + * @param cyc - 鎹曟崏鐢靛钩瓒呮椂 */ #define TMR2_CAPTimeoutCfg(cyc) (R32_TMR2_CNT_END = cyc) /** - * @brief 外部信号捕捉功能初始化 + * @brief 澶栭儴淇″彿鎹曟崏鍔熻兘鍒濆鍖 * * @param cap - select capture mode, refer to CapModeTypeDef */ void TMR2_CapInit(CapModeTypeDef cap); /** - * @brief 获取脉冲数据 + * @brief 鑾峰彇鑴夊啿鏁版嵁 * - * @return 脉冲数据 + * @return 鑴夊啿鏁版嵁 */ #define TMR2_CAPGetData() R32_TMR2_FIFO /** - * @brief 获取当前已捕获数据个数 + * @brief 鑾峰彇褰撳墠宸叉崟鑾锋暟鎹釜鏁 * - * @return 当前已捕获数据个数 + * @return 褰撳墠宸叉崟鑾锋暟鎹釜鏁 */ #define TMR2_CAPDataCounter() R8_TMR2_FIFO_COUNT /** - * @brief 配置DMA功能 + * @brief 閰嶇疆DMA鍔熻兘 * - * @param s - 是否打开DMA功能 - * @param startAddr - DMA 起始地址 - * @param endAddr - DMA 结束地址 - * @param m - 配置DMA模式 + * @param s - 鏄惁鎵撳紑DMA鍔熻兘 + * @param startAddr - DMA 璧峰鍦板潃 + * @param endAddr - DMA 缁撴潫鍦板潃 + * @param m - 閰嶇疆DMA妯″紡 */ void TMR2_DMACfg(uint8_t s, uint32_t startAddr, uint32_t endAddr, DMAModeTypeDef m); /** - * @brief 关闭 TMR2 PWM输出 + * @brief 鍏抽棴 TMR2 PWM杈撳嚭 */ #define TMR2_PWMDisable() (R8_TMR2_CTRL_MOD &= ~RB_TMR_OUT_EN) /** - * @brief 开启 TMR2 PWM输出 + * @brief 寮鍚 TMR2 PWM杈撳嚭 */ #define TMR2_PWMEnable() (R8_TMR2_CTRL_MOD |= RB_TMR_OUT_EN) /** - * @brief 关闭 TMR2 + * @brief 鍏抽棴 TMR2 */ #define TMR2_Disable() (R8_TMR2_CTRL_MOD &= ~RB_TMR_COUNT_EN) /** - * @brief 开启 TMR2 + * @brief 寮鍚 TMR2 */ #define TMR2_Enable() (R8_TMR2_CTRL_MOD |= RB_TMR_COUNT_EN) /** - * @brief 中断配置 + * @brief 涓柇閰嶇疆 * - * @param s - 使能/关闭 + * @param s - 浣胯兘/鍏抽棴 * @param f - refer to TMR interrupt bit define */ #define TMR2_ITCfg(s, f) ((s) ? (R8_TMR2_INTER_EN |= f) : (R8_TMR2_INTER_EN &= ~f)) /** - * @brief 清除中断标志 + * @brief 娓呴櫎涓柇鏍囧織 * * @param f - refer to TMR interrupt bit define */ #define TMR2_ClearITFlag(f) (R8_TMR2_INT_FLAG = f) /** - * @brief 查询中断标志状态 + * @brief 鏌ヨ涓柇鏍囧織鐘舵 * * @param f - refer to TMR interrupt bit define */ #define TMR2_GetITFlag(f) (R8_TMR2_INT_FLAG & f) /** - * @brief 定时功能初始化 + * @brief 瀹氭椂鍔熻兘鍒濆鍖 * - * @param t - 定时时间,基于当前系统时钟Tsys, 最长定时周期 67108864 + * @param t - 瀹氭椂鏃堕棿锛屽熀浜庡綋鍓嶇郴缁熸椂閽烼sys, 鏈闀垮畾鏃跺懆鏈 67108864 */ void TMR3_TimerInit(uint32_t t); /** - * @brief 获取当前定时器值,最大67108864 + * @brief 鑾峰彇褰撳墠瀹氭椂鍣ㄥ硷紝鏈澶67108864 * - * @return 当前定时器值 + * @return 褰撳墠瀹氭椂鍣ㄥ */ #define TMR3_GetCurrentTimer() R32_TMR3_COUNT /** - * @brief 边沿计数功能初始化 + * @brief 杈规部璁℃暟鍔熻兘鍒濆鍖 * - * @param cap - 采集计数类型 + * @param cap - 閲囬泦璁℃暟绫诲瀷 */ void TMR3_EXTSingleCounterInit(CapModeTypeDef cap); /** - * @brief 设置计数统计溢出大小,最大67108862 + * @brief 璁剧疆璁℃暟缁熻婧㈠嚭澶у皬锛屾渶澶67108862 * - * @param cyc - 计数统计溢出大小 + * @param cyc - 璁℃暟缁熻婧㈠嚭澶у皬 */ #define TMR3_CountOverflowCfg(cyc) (R32_TMR3_CNT_END = (cyc + 2)) /** - * @brief 获取当前计数值,最大67108862 + * @brief 鑾峰彇褰撳墠璁℃暟鍊硷紝鏈澶67108862 * - * @return 当前计数值 + * @return 褰撳墠璁℃暟鍊 */ #define TMR3_GetCurrentCount() R32_TMR3_COUNT /** - * @brief PWM3 通道输出波形周期配置, 最大67108864 + * @brief PWM3 閫氶亾杈撳嚭娉㈠舰鍛ㄦ湡閰嶇疆, 鏈澶67108864 * - * @param cyc - 输出波形周期 + * @param cyc - 杈撳嚭娉㈠舰鍛ㄦ湡 */ #define TMR3_PWMCycleCfg(cyc) (R32_TMR3_CNT_END = cyc) /** - * @brief PWM 输出初始化 + * @brief PWM 杈撳嚭鍒濆鍖 * * @param pr - select wave polar, refer to PWMX_PolarTypeDef * @param ts - set pwm repeat times, refer to PWM_RepeatTsTypeDef @@ -512,77 +512,77 @@ void TMR3_EXTSingleCounterInit(CapModeTypeDef cap); void TMR3_PWMInit(PWMX_PolarTypeDef pr, PWM_RepeatTsTypeDef ts); /** - * @brief PWM3 有效数据脉宽, 最大67108864 + * @brief PWM3 鏈夋晥鏁版嵁鑴夊, 鏈澶67108864 * - * @param d - 有效数据脉宽 + * @param d - 鏈夋晥鏁版嵁鑴夊 */ #define TMR3_PWMActDataWidth(d) (R32_TMR3_FIFO = d) /** - * @brief CAP3 捕捉电平超时配置, 最大33554432 + * @brief CAP3 鎹曟崏鐢靛钩瓒呮椂閰嶇疆, 鏈澶33554432 * - * @param cyc - 捕捉电平超时 + * @param cyc - 鎹曟崏鐢靛钩瓒呮椂 */ #define TMR3_CAPTimeoutCfg(cyc) (R32_TMR3_CNT_END = cyc) /** - * @brief 外部信号捕捉功能初始化 + * @brief 澶栭儴淇″彿鎹曟崏鍔熻兘鍒濆鍖 * * @param cap - select capture mode, refer to CapModeTypeDef */ void TMR3_CapInit(CapModeTypeDef cap); /** - * @brief 获取脉冲数据 + * @brief 鑾峰彇鑴夊啿鏁版嵁 * - * @return 脉冲数据 + * @return 鑴夊啿鏁版嵁 */ #define TMR3_CAPGetData() R32_TMR3_FIFO /** - * @brief 获取当前已捕获数据个数 + * @brief 鑾峰彇褰撳墠宸叉崟鑾锋暟鎹釜鏁 * - * @return 当前已捕获数据个数 + * @return 褰撳墠宸叉崟鑾锋暟鎹釜鏁 */ #define TMR3_CAPDataCounter() R8_TMR3_FIFO_COUNT /** - * @brief 关闭 TMR3 PWM输出 + * @brief 鍏抽棴 TMR3 PWM杈撳嚭 */ #define TMR3_PWMDisable() (R8_TMR3_CTRL_MOD &= ~RB_TMR_OUT_EN) /** - * @brief 开启 TMR3 PWM输出 + * @brief 寮鍚 TMR3 PWM杈撳嚭 */ #define TMR3_PWMEnable() (R8_TMR3_CTRL_MOD |= RB_TMR_OUT_EN) /** - * @brief 关闭 TMR3 + * @brief 鍏抽棴 TMR3 */ #define TMR3_Disable() (R8_TMR3_CTRL_MOD &= ~RB_TMR_COUNT_EN) /** - * @brief 开启 TMR3 + * @brief 寮鍚 TMR3 */ #define TMR3_Enable() (R8_TMR3_CTRL_MOD |= RB_TMR_COUNT_EN) /** - * @brief 中断配置 + * @brief 涓柇閰嶇疆 * - * @param s - 使能/关闭 + * @param s - 浣胯兘/鍏抽棴 * @param f - refer to TMR interrupt bit define */ #define TMR3_ITCfg(s, f) ((s) ? (R8_TMR3_INTER_EN |= f) : (R8_TMR3_INTER_EN &= ~f)) /** - * @brief 清除中断标志 + * @brief 娓呴櫎涓柇鏍囧織 * * @param f - refer to TMR interrupt bit define */ #define TMR3_ClearITFlag(f) (R8_TMR3_INT_FLAG = f) /** - * @brief 查询中断标志状态 + * @brief 鏌ヨ涓柇鏍囧織鐘舵 * * @param f - refer to TMR interrupt bit define */ diff --git a/SRC/StdPeriphDriver/inc/CH59x_uart.h b/SRC/StdPeriphDriver/inc/CH59x_uart.h index 0375cc4..b07e951 100644 --- a/SRC/StdPeriphDriver/inc/CH59x_uart.h +++ b/SRC/StdPeriphDriver/inc/CH59x_uart.h @@ -20,388 +20,388 @@ extern "C" { /** * @brief LINE error and status define */ -#define STA_ERR_BREAK RB_LSR_BREAK_ERR // 数据间隔错误 -#define STA_ERR_FRAME RB_LSR_FRAME_ERR // 数据帧错误 -#define STA_ERR_PAR RB_LSR_PAR_ERR // 奇偶校验位出错 -#define STA_ERR_FIFOOV RB_LSR_OVER_ERR // 接收数据溢出 +#define STA_ERR_BREAK RB_LSR_BREAK_ERR // 鏁版嵁闂撮殧閿欒 +#define STA_ERR_FRAME RB_LSR_FRAME_ERR // 鏁版嵁甯ч敊璇 +#define STA_ERR_PAR RB_LSR_PAR_ERR // 濂囧伓鏍¢獙浣嶅嚭閿 +#define STA_ERR_FIFOOV RB_LSR_OVER_ERR // 鎺ユ敹鏁版嵁婧㈠嚭 -#define STA_TXFIFO_EMP RB_LSR_TX_FIFO_EMP // 当前发送FIFO空,可以继续填充发送数据 -#define STA_TXALL_EMP RB_LSR_TX_ALL_EMP // 当前所有发送数据都发送完成 -#define STA_RECV_DATA RB_LSR_DATA_RDY // 当前有接收到数据 +#define STA_TXFIFO_EMP RB_LSR_TX_FIFO_EMP // 褰撳墠鍙戦丗IFO绌猴紝鍙互缁х画濉厖鍙戦佹暟鎹 +#define STA_TXALL_EMP RB_LSR_TX_ALL_EMP // 褰撳墠鎵鏈夊彂閫佹暟鎹兘鍙戦佸畬鎴 +#define STA_RECV_DATA RB_LSR_DATA_RDY // 褰撳墠鏈夋帴鏀跺埌鏁版嵁 /** * @brief Configuration UART TrigByte num */ typedef enum { - UART_1BYTE_TRIG = 0, // 1字节触发 - UART_2BYTE_TRIG, // 2字节触发 - UART_4BYTE_TRIG, // 4字节触发 - UART_7BYTE_TRIG, // 7字节触发 + UART_1BYTE_TRIG = 0, // 1瀛楄妭瑙﹀彂 + UART_2BYTE_TRIG, // 2瀛楄妭瑙﹀彂 + UART_4BYTE_TRIG, // 4瀛楄妭瑙﹀彂 + UART_7BYTE_TRIG, // 7瀛楄妭瑙﹀彂 } UARTByteTRIGTypeDef; /** - * @brief 串口默认初始化配置 + * @brief 涓插彛榛樿鍒濆鍖栭厤缃 */ void UART0_DefInit(void); /** - * @brief 串口波特率配置 + * @brief 涓插彛娉㈢壒鐜囬厤缃 * - * @param baudrate - 波特率 + * @param baudrate - 娉㈢壒鐜 */ void UART0_BaudRateCfg(uint32_t baudrate); /** - * @brief 串口字节触发中断配置 + * @brief 涓插彛瀛楄妭瑙﹀彂涓柇閰嶇疆 * - * @param b - 触发字节数 refer to UARTByteTRIGTypeDef + * @param b - 瑙﹀彂瀛楄妭鏁 refer to UARTByteTRIGTypeDef */ void UART0_ByteTrigCfg(UARTByteTRIGTypeDef b); /** - * @brief 串口中断配置 + * @brief 涓插彛涓柇閰嶇疆 * - * @param s - 中断控制状态,是否使能相应中断 - * @param i - 中断类型 - * RB_IER_MODEM_CHG - 调制解调器输入状态变化中断使能位(仅 UART0 支持) - * RB_IER_LINE_STAT - 接收线路状态中断 - * RB_IER_THR_EMPTY - 发送保持寄存器空中断 - * RB_IER_RECV_RDY - 接收数据中断 + * @param s - 涓柇鎺у埗鐘舵侊紝鏄惁浣胯兘鐩稿簲涓柇 + * @param i - 涓柇绫诲瀷 + * RB_IER_MODEM_CHG - 璋冨埗瑙h皟鍣ㄨ緭鍏ョ姸鎬佸彉鍖栦腑鏂娇鑳戒綅锛堜粎 UART0 鏀寔锛 + * RB_IER_LINE_STAT - 鎺ユ敹绾胯矾鐘舵佷腑鏂 + * RB_IER_THR_EMPTY - 鍙戦佷繚鎸佸瘎瀛樺櫒绌轰腑鏂 + * RB_IER_RECV_RDY - 鎺ユ敹鏁版嵁涓柇 */ void UART0_INTCfg(FunctionalState s, uint8_t i); /** - * @brief 串口软件复位 + * @brief 涓插彛杞欢澶嶄綅 */ void UART0_Reset(void); /** - * @brief 清除当前接收FIFO + * @brief 娓呴櫎褰撳墠鎺ユ敹FIFO */ #define UART0_CLR_RXFIFO() (R8_UART0_FCR |= RB_FCR_RX_FIFO_CLR) /** - * @brief 清除当前发送FIFO + * @brief 娓呴櫎褰撳墠鍙戦丗IFO */ #define UART0_CLR_TXFIFO() (R8_UART0_FCR |= RB_FCR_TX_FIFO_CLR) /** - * @brief 获取当前中断标志 + * @brief 鑾峰彇褰撳墠涓柇鏍囧織 * - * @return 当前中断标志 + * @return 褰撳墠涓柇鏍囧織 */ #define UART0_GetITFlag() (R8_UART0_IIR & RB_IIR_INT_MASK) /** - * @brief 获取当前通讯状态 + * @brief 鑾峰彇褰撳墠閫氳鐘舵 * * @return refer to LINE error and status define */ #define UART0_GetLinSTA() (R8_UART0_LSR) /** - * @brief 串口单字节发送 + * @brief 涓插彛鍗曞瓧鑺傚彂閫 * - * @param b 待发送的字节 + * @param b 寰呭彂閫佺殑瀛楄妭 */ #define UART0_SendByte(b) (R8_UART0_THR = b) /** - * @brief 串口多字节发送 + * @brief 涓插彛澶氬瓧鑺傚彂閫 * - * @param buf - 待发送的数据内容首地址 - * @param l - 待发送的数据长度 + * @param buf - 寰呭彂閫佺殑鏁版嵁鍐呭棣栧湴鍧 + * @param l - 寰呭彂閫佺殑鏁版嵁闀垮害 */ void UART0_SendString(uint8_t *buf, uint16_t l); /** - * @brief 串口读取单字节 + * @brief 涓插彛璇诲彇鍗曞瓧鑺 * - * @return 读取到的单字节 + * @return 璇诲彇鍒扮殑鍗曞瓧鑺 */ #define UART0_RecvByte() (R8_UART0_RBR) /** - * @brief 串口读取多字节 + * @brief 涓插彛璇诲彇澶氬瓧鑺 * - * @param buf - 读取数据存放缓存区首地址 + * @param buf - 璇诲彇鏁版嵁瀛樻斁缂撳瓨鍖洪鍦板潃 * - * @return 读取数据长度 + * @return 璇诲彇鏁版嵁闀垮害 */ uint16_t UART0_RecvString(uint8_t *buf); /** - * @brief 串口默认初始化配置 + * @brief 涓插彛榛樿鍒濆鍖栭厤缃 */ void UART1_DefInit(void); /** - * @brief 串口波特率配置 + * @brief 涓插彛娉㈢壒鐜囬厤缃 * - * @param baudrate - 波特率 + * @param baudrate - 娉㈢壒鐜 */ void UART1_BaudRateCfg(uint32_t baudrate); /** - * @brief 串口字节触发中断配置 + * @brief 涓插彛瀛楄妭瑙﹀彂涓柇閰嶇疆 * - * @param b - 触发字节数 refer to UARTByteTRIGTypeDef + * @param b - 瑙﹀彂瀛楄妭鏁 refer to UARTByteTRIGTypeDef */ void UART1_ByteTrigCfg(UARTByteTRIGTypeDef b); /** - * @brief 串口中断配置 + * @brief 涓插彛涓柇閰嶇疆 * - * @param s - 中断控制状态,是否使能相应中断 - * @param i - 中断类型 - * RB_IER_MODEM_CHG - 调制解调器输入状态变化中断使能位(仅 UART0 支持) - * RB_IER_LINE_STAT - 接收线路状态中断 - * RB_IER_THR_EMPTY - 发送保持寄存器空中断 - * RB_IER_RECV_RDY - 接收数据中断 + * @param s - 涓柇鎺у埗鐘舵侊紝鏄惁浣胯兘鐩稿簲涓柇 + * @param i - 涓柇绫诲瀷 + * RB_IER_MODEM_CHG - 璋冨埗瑙h皟鍣ㄨ緭鍏ョ姸鎬佸彉鍖栦腑鏂娇鑳戒綅锛堜粎 UART0 鏀寔锛 + * RB_IER_LINE_STAT - 鎺ユ敹绾胯矾鐘舵佷腑鏂 + * RB_IER_THR_EMPTY - 鍙戦佷繚鎸佸瘎瀛樺櫒绌轰腑鏂 + * RB_IER_RECV_RDY - 鎺ユ敹鏁版嵁涓柇 */ void UART1_INTCfg(FunctionalState s, uint8_t i); /** - * @brief 串口软件复位 + * @brief 涓插彛杞欢澶嶄綅 */ void UART1_Reset(void); /** - * @brief 清除当前接收FIFO + * @brief 娓呴櫎褰撳墠鎺ユ敹FIFO */ #define UART1_CLR_RXFIFO() (R8_UART1_FCR |= RB_FCR_RX_FIFO_CLR) /** - * @brief 清除当前发送FIFO + * @brief 娓呴櫎褰撳墠鍙戦丗IFO */ #define UART1_CLR_TXFIFO() (R8_UART1_FCR |= RB_FCR_TX_FIFO_CLR) /** - * @brief 获取当前中断标志 + * @brief 鑾峰彇褰撳墠涓柇鏍囧織 * - * @return 当前中断标志 + * @return 褰撳墠涓柇鏍囧織 */ #define UART1_GetITFlag() (R8_UART1_IIR & RB_IIR_INT_MASK) /** - * @brief 获取当前通讯状态 + * @brief 鑾峰彇褰撳墠閫氳鐘舵 * * @return refer to LINE error and status define */ #define UART1_GetLinSTA() (R8_UART1_LSR) /** - * @brief 串口单字节发送 + * @brief 涓插彛鍗曞瓧鑺傚彂閫 * - * @param b 待发送的字节 + * @param b 寰呭彂閫佺殑瀛楄妭 */ #define UART1_SendByte(b) (R8_UART1_THR = b) /** - * @brief 串口多字节发送 + * @brief 涓插彛澶氬瓧鑺傚彂閫 * - * @param buf - 待发送的数据内容首地址 - * @param l - 待发送的数据长度 + * @param buf - 寰呭彂閫佺殑鏁版嵁鍐呭棣栧湴鍧 + * @param l - 寰呭彂閫佺殑鏁版嵁闀垮害 */ void UART1_SendString(uint8_t *buf, uint16_t l); /** - * @brief 串口读取单字节 + * @brief 涓插彛璇诲彇鍗曞瓧鑺 * - * @return 读取到的单字节 + * @return 璇诲彇鍒扮殑鍗曞瓧鑺 */ #define UART1_RecvByte() (R8_UART1_RBR) /** - * @brief 串口读取多字节 + * @brief 涓插彛璇诲彇澶氬瓧鑺 * - * @param buf - 读取数据存放缓存区首地址 + * @param buf - 璇诲彇鏁版嵁瀛樻斁缂撳瓨鍖洪鍦板潃 * - * @return 读取数据长度 + * @return 璇诲彇鏁版嵁闀垮害 */ uint16_t UART1_RecvString(uint8_t *buf); /** - * @brief 串口默认初始化配置 + * @brief 涓插彛榛樿鍒濆鍖栭厤缃 */ void UART2_DefInit(void); /** - * @brief 串口波特率配置 + * @brief 涓插彛娉㈢壒鐜囬厤缃 * - * @param baudrate - 波特率 + * @param baudrate - 娉㈢壒鐜 */ void UART2_BaudRateCfg(uint32_t baudrate); /** - * @brief 串口字节触发中断配置 + * @brief 涓插彛瀛楄妭瑙﹀彂涓柇閰嶇疆 * - * @param b - 触发字节数 refer to UARTByteTRIGTypeDef + * @param b - 瑙﹀彂瀛楄妭鏁 refer to UARTByteTRIGTypeDef */ void UART2_ByteTrigCfg(UARTByteTRIGTypeDef b); /** - * @brief 串口中断配置 + * @brief 涓插彛涓柇閰嶇疆 * - * @param s - 中断控制状态,是否使能相应中断 - * @param i - 中断类型 - * RB_IER_MODEM_CHG - 调制解调器输入状态变化中断使能位(仅 UART0 支持) - * RB_IER_LINE_STAT - 接收线路状态中断 - * RB_IER_THR_EMPTY - 发送保持寄存器空中断 - * RB_IER_RECV_RDY - 接收数据中断 + * @param s - 涓柇鎺у埗鐘舵侊紝鏄惁浣胯兘鐩稿簲涓柇 + * @param i - 涓柇绫诲瀷 + * RB_IER_MODEM_CHG - 璋冨埗瑙h皟鍣ㄨ緭鍏ョ姸鎬佸彉鍖栦腑鏂娇鑳戒綅锛堜粎 UART0 鏀寔锛 + * RB_IER_LINE_STAT - 鎺ユ敹绾胯矾鐘舵佷腑鏂 + * RB_IER_THR_EMPTY - 鍙戦佷繚鎸佸瘎瀛樺櫒绌轰腑鏂 + * RB_IER_RECV_RDY - 鎺ユ敹鏁版嵁涓柇 */ void UART2_INTCfg(FunctionalState s, uint8_t i); /** - * @brief 串口软件复位 + * @brief 涓插彛杞欢澶嶄綅 */ void UART2_Reset(void); /** - * @brief 清除当前接收FIFO + * @brief 娓呴櫎褰撳墠鎺ユ敹FIFO */ #define UART2_CLR_RXFIFO() (R8_UART2_FCR |= RB_FCR_RX_FIFO_CLR) /** - * @brief 清除当前发送FIFO + * @brief 娓呴櫎褰撳墠鍙戦丗IFO */ #define UART2_CLR_TXFIFO() (R8_UART2_FCR |= RB_FCR_TX_FIFO_CLR) /** - * @brief 获取当前中断标志 + * @brief 鑾峰彇褰撳墠涓柇鏍囧織 * - * @return 当前中断标志 + * @return 褰撳墠涓柇鏍囧織 */ #define UART2_GetITFlag() (R8_UART2_IIR & RB_IIR_INT_MASK) /** - * @brief 获取当前通讯状态 + * @brief 鑾峰彇褰撳墠閫氳鐘舵 * * @return refer to LINE error and status define */ #define UART2_GetLinSTA() (R8_UART2_LSR) /** - * @brief 串口单字节发送 + * @brief 涓插彛鍗曞瓧鑺傚彂閫 * - * @param b 待发送的字节 + * @param b 寰呭彂閫佺殑瀛楄妭 */ #define UART2_SendByte(b) (R8_UART2_THR = b) /** - * @brief 串口多字节发送 + * @brief 涓插彛澶氬瓧鑺傚彂閫 * - * @param buf - 待发送的数据内容首地址 - * @param l - 待发送的数据长度 + * @param buf - 寰呭彂閫佺殑鏁版嵁鍐呭棣栧湴鍧 + * @param l - 寰呭彂閫佺殑鏁版嵁闀垮害 */ void UART2_SendString(uint8_t *buf, uint16_t l); /** - * @brief 串口读取单字节 + * @brief 涓插彛璇诲彇鍗曞瓧鑺 * - * @return 读取到的单字节 + * @return 璇诲彇鍒扮殑鍗曞瓧鑺 */ #define UART2_RecvByte() (R8_UART2_RBR) /** - * @brief 串口读取多字节 + * @brief 涓插彛璇诲彇澶氬瓧鑺 * - * @param buf - 读取数据存放缓存区首地址 + * @param buf - 璇诲彇鏁版嵁瀛樻斁缂撳瓨鍖洪鍦板潃 * - * @return 读取数据长度 + * @return 璇诲彇鏁版嵁闀垮害 */ uint16_t UART2_RecvString(uint8_t *buf); /** - * @brief 串口默认初始化配置 + * @brief 涓插彛榛樿鍒濆鍖栭厤缃 */ void UART3_DefInit(void); /** - * @brief 串口波特率配置 + * @brief 涓插彛娉㈢壒鐜囬厤缃 * - * @param baudrate - 波特率 + * @param baudrate - 娉㈢壒鐜 */ void UART3_BaudRateCfg(uint32_t baudrate); /** - * @brief 串口字节触发中断配置 + * @brief 涓插彛瀛楄妭瑙﹀彂涓柇閰嶇疆 * - * @param b - 触发字节数 refer to UARTByteTRIGTypeDef + * @param b - 瑙﹀彂瀛楄妭鏁 refer to UARTByteTRIGTypeDef */ void UART3_ByteTrigCfg(UARTByteTRIGTypeDef b); /** - * @brief 串口中断配置 + * @brief 涓插彛涓柇閰嶇疆 * - * @param s - 中断控制状态,是否使能相应中断 - * @param i - 中断类型 - * RB_IER_MODEM_CHG - 调制解调器输入状态变化中断使能位(仅 UART0 支持) - * RB_IER_LINE_STAT - 接收线路状态中断 - * RB_IER_THR_EMPTY - 发送保持寄存器空中断 - * RB_IER_RECV_RDY - 接收数据中断 + * @param s - 涓柇鎺у埗鐘舵侊紝鏄惁浣胯兘鐩稿簲涓柇 + * @param i - 涓柇绫诲瀷 + * RB_IER_MODEM_CHG - 璋冨埗瑙h皟鍣ㄨ緭鍏ョ姸鎬佸彉鍖栦腑鏂娇鑳戒綅锛堜粎 UART0 鏀寔锛 + * RB_IER_LINE_STAT - 鎺ユ敹绾胯矾鐘舵佷腑鏂 + * RB_IER_THR_EMPTY - 鍙戦佷繚鎸佸瘎瀛樺櫒绌轰腑鏂 + * RB_IER_RECV_RDY - 鎺ユ敹鏁版嵁涓柇 */ void UART3_INTCfg(FunctionalState s, uint8_t i); /** - * @brief 串口软件复位 + * @brief 涓插彛杞欢澶嶄綅 */ void UART3_Reset(void); /** - * @brief 清除当前接收FIFO + * @brief 娓呴櫎褰撳墠鎺ユ敹FIFO */ #define UART3_CLR_RXFIFO() (R8_UART3_FCR |= RB_FCR_RX_FIFO_CLR) /** - * @brief 清除当前发送FIFO + * @brief 娓呴櫎褰撳墠鍙戦丗IFO */ #define UART3_CLR_TXFIFO() (R8_UART3_FCR |= RB_FCR_TX_FIFO_CLR) /** - * @brief 获取当前中断标志 + * @brief 鑾峰彇褰撳墠涓柇鏍囧織 * - * @return 当前中断标志 + * @return 褰撳墠涓柇鏍囧織 */ #define UART3_GetITFlag() (R8_UART3_IIR & RB_IIR_INT_MASK) /** - * @brief 获取当前通讯状态 + * @brief 鑾峰彇褰撳墠閫氳鐘舵 * * @return refer to LINE error and status define */ #define UART3_GetLinSTA() (R8_UART3_LSR) /** - * @brief 串口单字节发送 + * @brief 涓插彛鍗曞瓧鑺傚彂閫 * - * @param b 待发送的字节 + * @param b 寰呭彂閫佺殑瀛楄妭 */ #define UART3_SendByte(b) (R8_UART3_THR = b) /** - * @brief 串口多字节发送 + * @brief 涓插彛澶氬瓧鑺傚彂閫 * - * @param buf - 待发送的数据内容首地址 - * @param l - 待发送的数据长度 + * @param buf - 寰呭彂閫佺殑鏁版嵁鍐呭棣栧湴鍧 + * @param l - 寰呭彂閫佺殑鏁版嵁闀垮害 */ void UART3_SendString(uint8_t *buf, uint16_t l); /** - * @brief 串口读取单字节 + * @brief 涓插彛璇诲彇鍗曞瓧鑺 * - * @return 读取到的单字节 + * @return 璇诲彇鍒扮殑鍗曞瓧鑺 */ #define UART3_RecvByte() (R8_UART3_RBR) /** - * @brief 串口读取多字节 + * @brief 涓插彛璇诲彇澶氬瓧鑺 * - * @param buf - 读取数据存放缓存区首地址 + * @param buf - 璇诲彇鏁版嵁瀛樻斁缂撳瓨鍖洪鍦板潃 * - * @return 读取数据长度 + * @return 璇诲彇鏁版嵁闀垮害 */ uint16_t UART3_RecvString(uint8_t *buf); diff --git a/SRC/StdPeriphDriver/inc/CH59x_usbdev.h b/SRC/StdPeriphDriver/inc/CH59x_usbdev.h index 47a49a3..5c19d59 100644 --- a/SRC/StdPeriphDriver/inc/CH59x_usbdev.h +++ b/SRC/StdPeriphDriver/inc/CH59x_usbdev.h @@ -17,14 +17,14 @@ extern "C" { #endif -/* HID类请求 */ +/* HID绫昏姹 */ #define DEF_USB_GET_IDLE 0x02 /* get idle for key or mouse */ #define DEF_USB_GET_PROTOCOL 0x03 /* get protocol for bios type */ #define DEF_USB_SET_REPORT 0x09 /* set report for key */ #define DEF_USB_SET_IDLE 0x0A /* set idle for key or mouse */ #define DEF_USB_SET_PROTOCOL 0x0B /* set protocol for bios type */ -/* 以下缓存区是USB模块收发使用的数据缓冲区,总共9个通道(9块缓存),用户可根据实际使用的通道数定义相应缓存区 */ +/* 浠ヤ笅缂撳瓨鍖烘槸USB妯″潡鏀跺彂浣跨敤鐨勬暟鎹紦鍐插尯锛屾诲叡9涓氶亾锛9鍧楃紦瀛橈級锛岀敤鎴峰彲鏍规嵁瀹為檯浣跨敤鐨勯氶亾鏁板畾涔夌浉搴旂紦瀛樺尯 */ extern uint8_t *pEP0_RAM_Addr; //ep0(64)+ep4_out(64)+ep4_in(64) extern uint8_t *pEP1_RAM_Addr; //ep1_out(64)+ep1_in(64) extern uint8_t *pEP2_RAM_Addr; //ep2_out(64)+ep2_in(64) @@ -42,106 +42,106 @@ extern uint8_t *pEP3_RAM_Addr; //ep3_out(64)+ep3_in(64) #define pEP4_IN_DataBuf (pEP0_RAM_Addr + 128) /** - * @brief USB设备功能初始化,4个端点,8个通道。 + * @brief USB璁惧鍔熻兘鍒濆鍖栵紝4涓鐐癸紝8涓氶亾銆 */ void USB_DeviceInit(void); /** - * @brief USB设备应答传输处理 + * @brief USB璁惧搴旂瓟浼犺緭澶勭悊 */ void USB_DevTransProcess(void); /** - * @brief 端点1下传数据处理 + * @brief 绔偣1涓嬩紶鏁版嵁澶勭悊 * - * @param l - 待处理数据长度(<64B) + * @param l - 寰呭鐞嗘暟鎹暱搴(<64B) */ void DevEP1_OUT_Deal(uint8_t l); /** - * @brief 端点2下传数据处理 + * @brief 绔偣2涓嬩紶鏁版嵁澶勭悊 * - * @param l - 待处理数据长度(<64B) + * @param l - 寰呭鐞嗘暟鎹暱搴(<64B) */ void DevEP2_OUT_Deal(uint8_t l); /** - * @brief 端点3下传数据处理 + * @brief 绔偣3涓嬩紶鏁版嵁澶勭悊 * - * @param l - 待处理数据长度(<64B) + * @param l - 寰呭鐞嗘暟鎹暱搴(<64B) */ void DevEP3_OUT_Deal(uint8_t l); /** - * @brief 端点4下传数据处理 + * @brief 绔偣4涓嬩紶鏁版嵁澶勭悊 * - * @param l - 待处理数据长度(<64B) + * @param l - 寰呭鐞嗘暟鎹暱搴(<64B) */ void DevEP4_OUT_Deal(uint8_t l); /** - * @brief 端点1数据上传 + * @brief 绔偣1鏁版嵁涓婁紶 * - * @param l - 上传数据长度(<64B) + * @param l - 涓婁紶鏁版嵁闀垮害(<64B) */ void DevEP1_IN_Deal(uint8_t l); /** - * @brief 端点2数据上传 + * @brief 绔偣2鏁版嵁涓婁紶 * - * @param l - 上传数据长度(<64B) + * @param l - 涓婁紶鏁版嵁闀垮害(<64B) */ void DevEP2_IN_Deal(uint8_t l); /** - * @brief 端点3数据上传 + * @brief 绔偣3鏁版嵁涓婁紶 * - * @param l - 上传数据长度(<64B) + * @param l - 涓婁紶鏁版嵁闀垮害(<64B) */ void DevEP3_IN_Deal(uint8_t l); /** - * @brief 端点4数据上传 + * @brief 绔偣4鏁版嵁涓婁紶 * - * @param l - 上传数据长度(<64B) + * @param l - 涓婁紶鏁版嵁闀垮害(<64B) */ void DevEP4_IN_Deal(uint8_t l); /** - * @brief 查询端点1是否上传完成 + * @brief 鏌ヨ绔偣1鏄惁涓婁紶瀹屾垚 * - * @return 0-未完成 (!0)-已完成 + * @return 0-鏈畬鎴 (!0)-宸插畬鎴 */ #define EP1_GetINSta() (R8_UEP1_CTRL & UEP_T_RES_NAK) /** - * @brief 查询端点2是否上传完成 + * @brief 鏌ヨ绔偣2鏄惁涓婁紶瀹屾垚 * - * @return 0-未完成 (!0)-已完成 + * @return 0-鏈畬鎴 (!0)-宸插畬鎴 */ #define EP2_GetINSta() (R8_UEP2_CTRL & UEP_T_RES_NAK) /** - * @brief 查询端点3是否上传完成 + * @brief 鏌ヨ绔偣3鏄惁涓婁紶瀹屾垚 * - * @return 0-未完成 (!0)-已完成 + * @return 0-鏈畬鎴 (!0)-宸插畬鎴 */ #define EP3_GetINSta() (R8_UEP3_CTRL & UEP_T_RES_NAK) /** - * @brief 查询端点4是否上传完成 + * @brief 鏌ヨ绔偣4鏄惁涓婁紶瀹屾垚 * - * @return 0-未完成 (!0)-已完成 + * @return 0-鏈畬鎴 (!0)-宸插畬鎴 */ #define EP4_GetINSta() (R8_UEP4_CTRL & UEP_T_RES_NAK) /** - * @brief 关闭USB上拉电阻 + * @brief 鍏抽棴USB涓婃媺鐢甸樆 */ #define USB_DisablePin() (R16_PIN_ANALOG_IE &= ~(RB_PIN_USB_IE | RB_PIN_USB_DP_PU)) /** - * @brief 关闭USB + * @brief 鍏抽棴USB */ #define USB_Disable() (R32_USB_CONTROL = 0) diff --git a/SRC/StdPeriphDriver/inc/CH59x_usbhost.h b/SRC/StdPeriphDriver/inc/CH59x_usbhost.h index 5dc1bd3..2d2795f 100644 --- a/SRC/StdPeriphDriver/inc/CH59x_usbhost.h +++ b/SRC/StdPeriphDriver/inc/CH59x_usbhost.h @@ -19,25 +19,25 @@ extern "C" { #if DISK_LIB_ENABLE #if DISK_WITHOUT_USB_HUB - /* 不使用U盘文件系统库或者U盘挂载USBhub下面,需要关闭下面定义 */ + /* 涓嶄娇鐢║鐩樻枃浠剁郴缁熷簱鎴栬匲鐩樻寕杞経SBhub涓嬮潰锛岄渶瑕佸叧闂笅闈㈠畾涔 */ #define FOR_ROOT_UDISK_ONLY #endif - /* 使用U盘文件系统库,需要开启下面定义, 不使用请关闭 */ - #define DISK_BASE_BUF_LEN 512 /* 默认的磁盘数据缓冲区大小为512字节,建议选择为2048甚至4096以支持某些大扇区的U盘,为0则禁止在.H文件中定义缓冲区并由应用程序在pDISK_BASE_BUF中指定 */ + /* 浣跨敤U鐩樻枃浠剁郴缁熷簱锛岄渶瑕佸紑鍚笅闈㈠畾涔, 涓嶄娇鐢ㄨ鍏抽棴 */ + #define DISK_BASE_BUF_LEN 512 /* 榛樿鐨勭鐩樻暟鎹紦鍐插尯澶у皬涓512瀛楄妭,寤鸿閫夋嫨涓2048鐢氳嚦4096浠ユ敮鎸佹煇浜涘ぇ鎵囧尯鐨刄鐩,涓0鍒欑姝㈠湪.H鏂囦欢涓畾涔夌紦鍐插尯骞剁敱搴旂敤绋嬪簭鍦╬DISK_BASE_BUF涓寚瀹 */ #endif -// 各子程序返回状态码 -#define ERR_SUCCESS 0x00 // 操作成功 -#define ERR_USB_CONNECT 0x15 /* 检测到USB设备连接事件,已经连接 */ -#define ERR_USB_DISCON 0x16 /* 检测到USB设备断开事件,已经断开 */ -#define ERR_USB_BUF_OVER 0x17 /* USB传输的数据有误或者数据太多缓冲区溢出 */ -#define ERR_USB_DISK_ERR 0x1F /* USB存储器操作失败,在初始化时可能是USB存储器不支持,在读写操作中可能是磁盘损坏或者已经断开 */ -#define ERR_USB_TRANSFER 0x20 /* NAK/STALL等更多错误码在0x20~0x2F */ -#define ERR_USB_UNSUPPORT 0xFB /* 不支持的USB设备*/ -#define ERR_USB_UNKNOWN 0xFE /* 设备操作出错*/ -#define ERR_AOA_PROTOCOL 0x41 /* 协议版本出错 */ +// 鍚勫瓙绋嬪簭杩斿洖鐘舵佺爜 +#define ERR_SUCCESS 0x00 // 鎿嶄綔鎴愬姛 +#define ERR_USB_CONNECT 0x15 /* 妫娴嬪埌USB璁惧杩炴帴浜嬩欢,宸茬粡杩炴帴 */ +#define ERR_USB_DISCON 0x16 /* 妫娴嬪埌USB璁惧鏂紑浜嬩欢,宸茬粡鏂紑 */ +#define ERR_USB_BUF_OVER 0x17 /* USB浼犺緭鐨勬暟鎹湁璇垨鑰呮暟鎹お澶氱紦鍐插尯婧㈠嚭 */ +#define ERR_USB_DISK_ERR 0x1F /* USB瀛樺偍鍣ㄦ搷浣滃け璐,鍦ㄥ垵濮嬪寲鏃跺彲鑳芥槸USB瀛樺偍鍣ㄤ笉鏀寔,鍦ㄨ鍐欐搷浣滀腑鍙兘鏄鐩樻崯鍧忔垨鑰呭凡缁忔柇寮 */ +#define ERR_USB_TRANSFER 0x20 /* NAK/STALL绛夋洿澶氶敊璇爜鍦0x20~0x2F */ +#define ERR_USB_UNSUPPORT 0xFB /* 涓嶆敮鎸佺殑USB璁惧*/ +#define ERR_USB_UNKNOWN 0xFE /* 璁惧鎿嶄綔鍑洪敊*/ +#define ERR_AOA_PROTOCOL 0x41 /* 鍗忚鐗堟湰鍑洪敊 */ -/*USB设备相关信息表,最多支持1个设备*/ +/*USB璁惧鐩稿叧淇℃伅琛,鏈澶氭敮鎸1涓澶*/ #define ROOT_DEV_DISCONNECT 0 #define ROOT_DEV_CONNECTED 1 #define ROOT_DEV_FAILED 2 @@ -48,48 +48,48 @@ extern "C" { #define DEV_TYPE_UNKNOW 0xFF /* -约定: USB设备地址分配规则(参考USB_DEVICE_ADDR) -地址值 设备位置 -0x02 内置Root-HUB下的USB设备或外部HUB -0x1x 内置Root-HUB下的外部HUB的端口x下的USB设备,x为1~n +绾﹀畾: USB璁惧鍦板潃鍒嗛厤瑙勫垯(鍙傝僓SB_DEVICE_ADDR) +鍦板潃鍊 璁惧浣嶇疆 +0x02 鍐呯疆Root-HUB涓嬬殑USB璁惧鎴栧閮℉UB +0x1x 鍐呯疆Root-HUB涓嬬殑澶栭儴HUB鐨勭鍙涓嬬殑USB璁惧,x涓1~n */ #define HUB_MAX_PORTS 4 -#define WAIT_USB_TOUT_200US 800 // 等待USB中断超时时间 +#define WAIT_USB_TOUT_200US 800 // 绛夊緟USB涓柇瓒呮椂鏃堕棿 typedef struct { - uint8_t DeviceStatus; // 设备状态,0-无设备,1-有设备但尚未初始化,2-有设备但初始化枚举失败,3-有设备且初始化枚举成功 - uint8_t DeviceAddress; // 设备被分配的USB地址 - uint8_t DeviceSpeed; // 0为低速,非0为全速 - uint8_t DeviceType; // 设备类型 + uint8_t DeviceStatus; // 璁惧鐘舵,0-鏃犺澶,1-鏈夎澶囦絾灏氭湭鍒濆鍖,2-鏈夎澶囦絾鍒濆鍖栨灇涓惧け璐,3-鏈夎澶囦笖鍒濆鍖栨灇涓炬垚鍔 + uint8_t DeviceAddress; // 璁惧琚垎閰嶇殑USB鍦板潃 + uint8_t DeviceSpeed; // 0涓轰綆閫,闈0涓哄叏閫 + uint8_t DeviceType; // 璁惧绫诲瀷 uint16_t DeviceVID; uint16_t DevicePID; - uint8_t GpVar[4]; // 通用变量,存放端点 - uint8_t GpHUBPortNum; // 通用变量,如果是HUB,表示HUB端口数 + uint8_t GpVar[4]; // 閫氱敤鍙橀噺锛屽瓨鏀剧鐐 + uint8_t GpHUBPortNum; // 閫氱敤鍙橀噺,濡傛灉鏄疕UB锛岃〃绀篐UB绔彛鏁 } _RootHubDev; typedef struct { - UINT8 DeviceStatus; // 设备状态,0-无设备,1-有设备但尚未初始化,2-有设备但初始化枚举失败,3-有设备且初始化枚举成功 - UINT8 DeviceAddress; // 设备被分配的USB地址 - UINT8 DeviceSpeed; // 0为低速,非0为全速 - UINT8 DeviceType; // 设备类型 + UINT8 DeviceStatus; // 璁惧鐘舵,0-鏃犺澶,1-鏈夎澶囦絾灏氭湭鍒濆鍖,2-鏈夎澶囦絾鍒濆鍖栨灇涓惧け璐,3-鏈夎澶囦笖鍒濆鍖栨灇涓炬垚鍔 + UINT8 DeviceAddress; // 璁惧琚垎閰嶇殑USB鍦板潃 + UINT8 DeviceSpeed; // 0涓轰綆閫,闈0涓哄叏閫 + UINT8 DeviceType; // 璁惧绫诲瀷 UINT16 DeviceVID; UINT16 DevicePID; - UINT8 GpVar[4]; // 通用变量 -} _DevOnHubPort; // 假定:不超过1个外部HUB,每个外部HUB不超过HUB_MAX_PORTS个端口(多了不管) + UINT8 GpVar[4]; // 閫氱敤鍙橀噺 +} _DevOnHubPort; // 鍋囧畾:涓嶈秴杩1涓閮℉UB,姣忎釜澶栭儴HUB涓嶈秴杩嘓UB_MAX_PORTS涓鍙(澶氫簡涓嶇) extern _RootHubDev ThisUsbDev; -extern _DevOnHubPort DevOnHubPort[HUB_MAX_PORTS]; // 假定:不超过1个外部HUB,每个外部HUB不超过HUB_MAX_PORTS个端口(多了不管) -extern uint8_t UsbDevEndp0Size; // USB设备的端点0的最大包尺寸 */ +extern _DevOnHubPort DevOnHubPort[HUB_MAX_PORTS]; // 鍋囧畾:涓嶈秴杩1涓閮℉UB,姣忎釜澶栭儴HUB涓嶈秴杩嘓UB_MAX_PORTS涓鍙(澶氫簡涓嶇) +extern uint8_t UsbDevEndp0Size; // USB璁惧鐨勭鐐0鐨勬渶澶у寘灏哄 */ extern uint8_t FoundNewDev; extern uint8_t *pHOST_RX_RAM_Addr; extern uint8_t *pHOST_TX_RAM_Addr; extern _RootHubDev ThisUsb2Dev; -extern _DevOnHubPort DevOnU2HubPort[HUB_MAX_PORTS]; // 假定:不超过1个外部HUB,每个外部HUB不超过HUB_MAX_PORTS个端口(多了不管) -extern uint8_t Usb2DevEndp0Size; // USB设备的端点0的最大包尺寸 */ +extern _DevOnHubPort DevOnU2HubPort[HUB_MAX_PORTS]; // 鍋囧畾:涓嶈秴杩1涓閮℉UB,姣忎釜澶栭儴HUB涓嶈秴杩嘓UB_MAX_PORTS涓鍙(澶氫簡涓嶇) +extern uint8_t Usb2DevEndp0Size; // USB璁惧鐨勭鐐0鐨勬渶澶у寘灏哄 */ extern uint8_t FoundNewU2Dev; extern uint8_t *pU2HOST_RX_RAM_Addr; @@ -100,210 +100,210 @@ extern uint8_t *pU2HOST_TX_RAM_Addr; extern uint8_t Com_Buffer[]; extern uint8_t U2Com_Buffer[]; -/* 以下为USB主机请求包 */ -extern const uint8_t SetupGetDevDescr[]; // 获取设备描述符*/ -extern const uint8_t SetupGetCfgDescr[]; // 获取配置描述符*/ -extern const uint8_t SetupSetUsbAddr[]; // 设置USB地址*/ -extern const uint8_t SetupSetUsbConfig[]; // 设置USB配置*/ -extern const uint8_t SetupSetUsbInterface[]; // 设置USB接口配置*/ -extern const uint8_t SetupClrEndpStall[]; // 清除端点STALL*/ +/* 浠ヤ笅涓篣SB涓绘満璇锋眰鍖 */ +extern const uint8_t SetupGetDevDescr[]; // 鑾峰彇璁惧鎻忚堪绗*/ +extern const uint8_t SetupGetCfgDescr[]; // 鑾峰彇閰嶇疆鎻忚堪绗*/ +extern const uint8_t SetupSetUsbAddr[]; // 璁剧疆USB鍦板潃*/ +extern const uint8_t SetupSetUsbConfig[]; // 璁剧疆USB閰嶇疆*/ +extern const uint8_t SetupSetUsbInterface[]; // 璁剧疆USB鎺ュ彛閰嶇疆*/ +extern const uint8_t SetupClrEndpStall[]; // 娓呴櫎绔偣STALL*/ -extern const uint8_t SetupGetU2DevDescr[]; // 获取设备描述符*/ -extern const uint8_t SetupGetU2CfgDescr[]; // 获取配置描述符*/ -extern const uint8_t SetupSetUsb2Addr[]; // 设置USB地址*/ -extern const uint8_t SetupSetUsb2Config[]; // 设置USB配置*/ -extern const uint8_t SetupSetUsb2Interface[]; // 设置USB接口配置*/ -extern const uint8_t SetupClrU2EndpStall[]; // 清除端点STALL*/ +extern const uint8_t SetupGetU2DevDescr[]; // 鑾峰彇璁惧鎻忚堪绗*/ +extern const uint8_t SetupGetU2CfgDescr[]; // 鑾峰彇閰嶇疆鎻忚堪绗*/ +extern const uint8_t SetupSetUsb2Addr[]; // 璁剧疆USB鍦板潃*/ +extern const uint8_t SetupSetUsb2Config[]; // 璁剧疆USB閰嶇疆*/ +extern const uint8_t SetupSetUsb2Interface[]; // 璁剧疆USB鎺ュ彛閰嶇疆*/ +extern const uint8_t SetupClrU2EndpStall[]; // 娓呴櫎绔偣STALL*/ /** - * @brief 关闭ROOT-HUB端口,实际上硬件已经自动关闭,此处只是清除一些结构状态 + * @brief 鍏抽棴ROOT-HUB绔彛,瀹為檯涓婄‖浠跺凡缁忚嚜鍔ㄥ叧闂,姝ゅ鍙槸娓呴櫎涓浜涚粨鏋勭姸鎬 */ void DisableRootHubPort(void); /** - * @brief 分析ROOT-HUB状态,处理ROOT-HUB端口的设备插拔事件 - * 如果设备拔出,函数中调用DisableRootHubPort()函数,将端口关闭,插入事件,置相应端口的状态位 + * @brief 鍒嗘瀽ROOT-HUB鐘舵,澶勭悊ROOT-HUB绔彛鐨勮澶囨彃鎷斾簨浠 + * 濡傛灉璁惧鎷斿嚭,鍑芥暟涓皟鐢―isableRootHubPort()鍑芥暟,灏嗙鍙e叧闂,鎻掑叆浜嬩欢,缃浉搴旂鍙g殑鐘舵佷綅 * - * @return 返回ERR_SUCCESS为没有情况,返回ERR_USB_CONNECT为检测到新连接,返回ERR_USB_DISCON为检测到断开 + * @return 杩斿洖ERR_SUCCESS涓烘病鏈夋儏鍐,杩斿洖ERR_USB_CONNECT涓烘娴嬪埌鏂拌繛鎺,杩斿洖ERR_USB_DISCON涓烘娴嬪埌鏂紑 */ uint8_t AnalyzeRootHub(void); /** - * @brief 设置USB主机当前操作的USB设备地址 + * @brief 璁剧疆USB涓绘満褰撳墠鎿嶄綔鐨刄SB璁惧鍦板潃 * - * @param addr - USB设备地址 + * @param addr - USB璁惧鍦板潃 */ void SetHostUsbAddr(uint8_t addr); /** - * @brief 设置当前USB速度 + * @brief 璁剧疆褰撳墠USB閫熷害 * - * @param FullSpeed - USB速度 + * @param FullSpeed - USB閫熷害 */ void SetUsbSpeed(uint8_t FullSpeed); /** - * @brief 检测到设备后,复位总线,为枚举设备准备,设置为默认为全速 + * @brief 妫娴嬪埌璁惧鍚,澶嶄綅鎬荤嚎,涓烘灇涓捐澶囧噯澶,璁剧疆涓洪粯璁や负鍏ㄩ */ void ResetRootHubPort(void); /** - * @brief 使能ROOT-HUB端口,相应的bUH_PORT_EN置1开启端口,设备断开可能导致返回失败 + * @brief 浣胯兘ROOT-HUB绔彛,鐩稿簲鐨刡UH_PORT_EN缃1寮鍚鍙,璁惧鏂紑鍙兘瀵艰嚧杩斿洖澶辫触 * - * @return 返回ERR_SUCCESS为检测到新连接,返回ERR_USB_DISCON为无连接 + * @return 杩斿洖ERR_SUCCESS涓烘娴嬪埌鏂拌繛鎺,杩斿洖ERR_USB_DISCON涓烘棤杩炴帴 */ uint8_t EnableRootHubPort(void); /** - * @brief 等待USB中断 + * @brief 绛夊緟USB涓柇 * - * @return 返回ERR_SUCCESS 数据接收或者发送成功,返回ERR_USB_UNKNOWN 数据接收或者发送失败 + * @return 杩斿洖ERR_SUCCESS 鏁版嵁鎺ユ敹鎴栬呭彂閫佹垚鍔,杩斿洖ERR_USB_UNKNOWN 鏁版嵁鎺ユ敹鎴栬呭彂閫佸け璐 */ uint8_t WaitUSB_Interrupt(void); /** - * @brief 传输事务,输入目的端点地址/PID令牌,同步标志,以20uS为单位的NAK重试总时间(0则不重试,0xFFFF无限重试),返回0成功,超时/出错重试 - * 本子程序着重于易理解,而在实际应用中,为了提供运行速度,应该对本子程序代码进行优化 + * @brief 浼犺緭浜嬪姟,杈撳叆鐩殑绔偣鍦板潃/PID浠ょ墝,鍚屾鏍囧織,浠20uS涓哄崟浣嶇殑NAK閲嶈瘯鎬绘椂闂(0鍒欎笉閲嶈瘯,0xFFFF鏃犻檺閲嶈瘯),杩斿洖0鎴愬姛,瓒呮椂/鍑洪敊閲嶈瘯 + * 鏈瓙绋嬪簭鐫閲嶄簬鏄撶悊瑙,鑰屽湪瀹為檯搴旂敤涓,涓轰簡鎻愪緵杩愯閫熷害,搴旇瀵规湰瀛愮▼搴忎唬鐮佽繘琛屼紭鍖 * - * @param endp_pid - 令牌和地址, 高4位是token_pid令牌, 低4位是端点地址 - * @param tog - 同步标志 - * @param timeout - 超时时间 + * @param endp_pid - 浠ょ墝鍜屽湴鍧, 楂4浣嶆槸token_pid浠ょ墝, 浣4浣嶆槸绔偣鍦板潃 + * @param tog - 鍚屾鏍囧織 + * @param timeout - 瓒呮椂鏃堕棿 * - * @return ERR_USB_UNKNOWN 超时,可能硬件异常 - * ERR_USB_DISCON 设备断开 - * ERR_USB_CONNECT 设备连接 - * ERR_SUCCESS 传输完成 + * @return ERR_USB_UNKNOWN 瓒呮椂锛屽彲鑳界‖浠跺紓甯 + * ERR_USB_DISCON 璁惧鏂紑 + * ERR_USB_CONNECT 璁惧杩炴帴 + * ERR_SUCCESS 浼犺緭瀹屾垚 */ uint8_t USBHostTransact(uint8_t endp_pid, uint8_t tog, uint32_t timeout); /** - * @brief 执行控制传输,8字节请求码在pSetupReq中,DataBuf为可选的收发缓冲区 + * @brief 鎵ц鎺у埗浼犺緭,8瀛楄妭璇锋眰鐮佸湪pSetupReq涓,DataBuf涓哄彲閫夌殑鏀跺彂缂撳啿鍖 * - * @param DataBuf - 如果需要接收和发送数据,那么DataBuf需指向有效缓冲区用于存放后续数据 - * @param RetLen - 实际成功收发的总长度保存在RetLen指向的字节变量中 + * @param DataBuf - 濡傛灉闇瑕佹帴鏀跺拰鍙戦佹暟鎹,閭d箞DataBuf闇鎸囧悜鏈夋晥缂撳啿鍖虹敤浜庡瓨鏀惧悗缁暟鎹 + * @param RetLen - 瀹為檯鎴愬姛鏀跺彂鐨勬婚暱搴︿繚瀛樺湪RetLen鎸囧悜鐨勫瓧鑺傚彉閲忎腑 * - * @return ERR_USB_BUF_OVER IN状态阶段出错 - * ERR_SUCCESS 数据交换成功 + * @return ERR_USB_BUF_OVER IN鐘舵侀樁娈靛嚭閿 + * ERR_SUCCESS 鏁版嵁浜ゆ崲鎴愬姛 */ uint8_t HostCtrlTransfer(uint8_t *DataBuf, uint8_t *RetLen); /** - * @brief 复制控制传输的请求包 + * @brief 澶嶅埗鎺у埗浼犺緭鐨勮姹傚寘 * - * @param pReqPkt - 控制请求包地址 + * @param pReqPkt - 鎺у埗璇锋眰鍖呭湴鍧 */ void CopySetupReqPkg(const uint8_t *pReqPkt); /** - * @brief 获取设备描述符,返回在 pHOST_TX_RAM_Addr 中 + * @brief 鑾峰彇璁惧鎻忚堪绗,杩斿洖鍦 pHOST_TX_RAM_Addr 涓 * - * @return ERR_USB_BUF_OVER 描述符长度错误 - * ERR_SUCCESS 成功 + * @return ERR_USB_BUF_OVER 鎻忚堪绗﹂暱搴﹂敊璇 + * ERR_SUCCESS 鎴愬姛 */ uint8_t CtrlGetDeviceDescr(void); /** - * @brief 获取配置描述符,返回在 pHOST_TX_RAM_Addr 中 + * @brief 鑾峰彇閰嶇疆鎻忚堪绗,杩斿洖鍦 pHOST_TX_RAM_Addr 涓 * - * @return ERR_USB_BUF_OVER 描述符长度错误 - * ERR_SUCCESS 成功 + * @return ERR_USB_BUF_OVER 鎻忚堪绗﹂暱搴﹂敊璇 + * ERR_SUCCESS 鎴愬姛 */ uint8_t CtrlGetConfigDescr(void); /** - * @brief 设置USB设备地址 + * @brief 璁剧疆USB璁惧鍦板潃 * - * @param addr - 设备地址 + * @param addr - 璁惧鍦板潃 * - * @return ERR_SUCCESS 成功 + * @return ERR_SUCCESS 鎴愬姛 */ uint8_t CtrlSetUsbAddress(uint8_t addr); /** - * @brief 设置USB设备配置 + * @brief 璁剧疆USB璁惧閰嶇疆 * - * @param cfg - 配置值 + * @param cfg - 閰嶇疆鍊 * - * @return ERR_SUCCESS 成功 + * @return ERR_SUCCESS 鎴愬姛 */ uint8_t CtrlSetUsbConfig(uint8_t cfg); /** - * @brief 清除端点STALL + * @brief 娓呴櫎绔偣STALL * - * @param endp - 端点地址 + * @param endp - 绔偣鍦板潃 * - * @return ERR_SUCCESS 成功 + * @return ERR_SUCCESS 鎴愬姛 */ uint8_t CtrlClearEndpStall(uint8_t endp); /** - * @brief 设置USB设备接口 + * @brief 璁剧疆USB璁惧鎺ュ彛 * - * @param cfg - 配置值 + * @param cfg - 閰嶇疆鍊 * - * @return ERR_SUCCESS 成功 + * @return ERR_SUCCESS 鎴愬姛 */ uint8_t CtrlSetUsbIntercace(uint8_t cfg); /** - * @brief USB主机功能初始化 + * @brief USB涓绘満鍔熻兘鍒濆鍖 */ void USB_HostInit(void); -uint8_t EnumAllHubPort(void);// 枚举所有ROOT-HUB端口下外部HUB后的二级USB设备 -void SelectHubPort(uint8_t HubPortIndex); // HubPortIndex=0选择操作指定的ROOT-HUB端口,否则选择操作指定的ROOT-HUB端口的外部HUB的指定端口 -uint16_t SearchTypeDevice(uint8_t type); // 在ROOT-HUB以及外部HUB各端口上搜索指定类型的设备所在的端口号,输出端口号为0xFFFF则未搜索到. -uint8_t SETorOFFNumLock(uint8_t *buf); // NumLock的点灯判断 +uint8_t EnumAllHubPort(void);// 鏋氫妇鎵鏈塕OOT-HUB绔彛涓嬪閮℉UB鍚庣殑浜岀骇USB璁惧 +void SelectHubPort(uint8_t HubPortIndex); // HubPortIndex=0閫夋嫨鎿嶄綔鎸囧畾鐨凴OOT-HUB绔彛,鍚﹀垯閫夋嫨鎿嶄綔鎸囧畾鐨凴OOT-HUB绔彛鐨勫閮℉UB鐨勬寚瀹氱鍙 +uint16_t SearchTypeDevice(uint8_t type); // 鍦≧OOT-HUB浠ュ強澶栭儴HUB鍚勭鍙d笂鎼滅储鎸囧畾绫诲瀷鐨勮澶囨墍鍦ㄧ殑绔彛鍙,杈撳嚭绔彛鍙蜂负0xFFFF鍒欐湭鎼滅储鍒. +uint8_t SETorOFFNumLock(uint8_t *buf); // NumLock鐨勭偣鐏垽鏂 /*************************************************************/ /** - * @brief 初始化指定ROOT-HUB端口的USB设备 + * @brief 鍒濆鍖栨寚瀹歊OOT-HUB绔彛鐨刄SB璁惧 * - * @return 错误码 + * @return 閿欒鐮 */ uint8_t InitRootDevice(void); /** - * @brief 获取HID设备报表描述符,返回在TxBuffer中 + * @brief 鑾峰彇HID璁惧鎶ヨ〃鎻忚堪绗,杩斿洖鍦═xBuffer涓 * - * @return 错误码 + * @return 閿欒鐮 */ uint8_t CtrlGetHIDDeviceReport(uint8_t infc); /** - * @brief 获取HUB描述符,返回在Com_Buffer中 + * @brief 鑾峰彇HUB鎻忚堪绗,杩斿洖鍦–om_Buffer涓 * - * @return 错误码 + * @return 閿欒鐮 */ uint8_t CtrlGetHubDescr(void); /** - * @brief 查询HUB端口状态,返回在Com_Buffer中 + * @brief 鏌ヨHUB绔彛鐘舵,杩斿洖鍦–om_Buffer涓 * - * @param HubPortIndex - 端口号 + * @param HubPortIndex - 绔彛鍙 * - * @return 错误码 + * @return 閿欒鐮 */ uint8_t HubGetPortStatus(uint8_t HubPortIndex); /** - * @brief 设置HUB端口特性 + * @brief 璁剧疆HUB绔彛鐗规 * - * @param HubPortIndex - 端口号 - * @param FeatureSelt - 端口特性 + * @param HubPortIndex - 绔彛鍙 + * @param FeatureSelt - 绔彛鐗规 * - * @return 错误码 + * @return 閿欒鐮 */ uint8_t HubSetPortFeature(uint8_t HubPortIndex, uint8_t FeatureSelt); /** - * @brief 清除HUB端口特性 + * @brief 娓呴櫎HUB绔彛鐗规 * - * @param HubPortIndex - 端口号 - * @param FeatureSelt - 端口特性 + * @param HubPortIndex - 绔彛鍙 + * @param FeatureSelt - 绔彛鐗规 * - * @return 错误码 + * @return 閿欒鐮 */ uint8_t HubClearPortFeature(uint8_t HubPortIndex, uint8_t FeatureSelt); diff --git a/SRC/StdPeriphDriver/inc/ISP592.h b/SRC/StdPeriphDriver/inc/ISP592.h index 2a81ca6..fadce09 100644 --- a/SRC/StdPeriphDriver/inc/ISP592.h +++ b/SRC/StdPeriphDriver/inc/ISP592.h @@ -4,8 +4,8 @@ /* Author: W.ch 2020.06 */ /* V1.0 FlashROM library for USER/BOOT */ /* for the target in USER code area on the chip divided into USER code area and BOOT area */ -/* 用于具有用户代码区和引导区的芯片、操作目标为用户代码区的情况, - 可以在用户代码中被调用(IAP,擦写自身),也可以在引导代码中被调用(更新用户代码) */ +/* 鐢ㄤ簬鍏锋湁鐢ㄦ埛浠g爜鍖哄拰寮曞鍖虹殑鑺墖銆佹搷浣滅洰鏍囦负鐢ㄦ埛浠g爜鍖虹殑鎯呭喌锛 + 鍙互鍦ㄧ敤鎴蜂唬鐮佷腑琚皟鐢紙IAP锛屾摝鍐欒嚜韬級锛屼篃鍙互鍦ㄥ紩瀵间唬鐮佷腑琚皟鐢紙鏇存柊鐢ㄦ埛浠g爜锛 */ /* Flash-ROM feature: for store program code, support block erasing, dword and page writing, dword verifying, unit for Length is byte,