From d78f166ceb2eddb113c6acad343ee5f4ea94eaee Mon Sep 17 00:00:00 2001 From: stark1898y <1658608470@qq.com> Date: Wed, 4 Jun 2025 13:57:07 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9A=82=E5=AD=98=EF=BC=8Cdec=5Fto=5Fbcd?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .mrs/launch.json | 6 +++--- bsp/src/bsp_ml307.c | 20 +++++++++----------- 2 files changed, 12 insertions(+), 14 deletions(-) diff --git a/.mrs/launch.json b/.mrs/launch.json index e17263f..0ad7452 100644 --- a/.mrs/launch.json +++ b/.mrs/launch.json @@ -5,7 +5,7 @@ "type": "mrs-debugger", "request": "launch", "name": "ble_bjq_ch303rct6_ml307", - "cwd": "d:\\SXDT\\Project\\CH32\\ble_bjq_ch303rct6_ml307", + "cwd": "c:\\Users\\16586\\Desktop\\ble_-tyq_-bjq_-ch32-v303", "openOCDCfg": { "useLocalOpenOCD": true, "executable": "c:/MounRiver/MounRiver_Studio2/resources/app/resources/win32/components/WCH/OpenOCD/OpenOCD/bin/openocd.exe", @@ -39,8 +39,8 @@ "additionalCommands": [] }, "loadedFiles": { - "executableFile": "d:\\SXDT\\Project\\CH32\\ble_bjq_ch303rct6_ml307\\obj\\ble_bjq_ch303rct6_ml307.elf", - "symbolFile": "d:\\SXDT\\Project\\CH32\\ble_bjq_ch303rct6_ml307\\obj\\ble_bjq_ch303rct6_ml307.elf", + "executableFile": "c:\\Users\\16586\\Desktop\\ble_-tyq_-bjq_-ch32-v303\\obj\\ble_bjq_ch303rct6_ml307.elf", + "symbolFile": "c:\\Users\\16586\\Desktop\\ble_-tyq_-bjq_-ch32-v303\\obj\\ble_bjq_ch303rct6_ml307.elf", "executableFileOffset": 0, "symbolFileOffset": 0 }, diff --git a/bsp/src/bsp_ml307.c b/bsp/src/bsp_ml307.c index 2a8a53b..56a3a0b 100644 --- a/bsp/src/bsp_ml307.c +++ b/bsp/src/bsp_ml307.c @@ -302,18 +302,18 @@ int BSP_Ml307_Init (struct Ml307_Ops *ops, rt_uint8_t version) return RT_EOK; } -uint8_t bcd_to_decimal(uint8_t bcd) +#include + +// 将十进制转换为BCD格式(例如:33 -> 0x33) +uint8_t dec_to_bcd(uint8_t dec) { - uint8_t high = (bcd >> 4) * 10; - uint8_t low = bcd & 0x0F; - return high + low; + return ((dec / 10) << 4) | (dec % 10); } -uint8_t decimal_to_bcd(uint8_t decimal) +// 将BCD格式转换为十进制(可选) +uint8_t bcd_to_dec(uint8_t bcd) { - uint8_t high = (decimal / 10) & 0x0F; - uint8_t low = (decimal % 10) & 0x0F; - return (high << 4) | low; + return ((bcd >> 4) * 10) + (bcd & 0x0F); } int test(uint8_t a) @@ -321,9 +321,7 @@ int test(uint8_t a) uint8_t b; LOG_D("in = 0x%02X, %d", a, a); b = a; - b = bcd_to_decimal(b); - LOG_D("in = 0x%02X, %d", b, b); - b = decimal_to_bcd(b); + b = dec_to_bcd(b); LOG_D("in = 0x%02X, %d", b, b); return b; }