WCH CH58X SWD debug坑和 SDK记录

CH58X SWD坑,反人类设计:

1、购买的CH58X 必须先PB22和地短接,解锁才能让ISP 工具发现设备,然后手动使能SW仿真

2、MRS可以下载,不能调试,不知怎么回事缺省选择忽略全部断点,导致GDB报错说联系不上设备,去掉设置,一切调试正常,速度也可以,没有网上说的很慢。

3、另外USB连线,必须是低电阻高级连接线,而且不能里面内嵌芯片,否则系统找不到WCH-LINK仿真器。

 WCH CH58X SDK

推拉模式输出,5mA驱动能力 GPIOA_ModeCfg(GPIO_Pin_X, GPIO_ModeOut_PP_5mA);

拉高引脚PAX电平 GPIOA_SetBits(GPIO_Pin_X);

拉低引脚PBX电平PBX GPIOB_ResetBits(GPIO_Pin_X);
反转引脚PBX电平 GPIOB_InverseBits(GPIO_X);

读GPIOA port   GPIOA_ReadPort();

GPIOA_ReadPortPin的返回值并不是bool值,而是对应的port&pin的值
GPIOA_ReadPortPin(GPIO_X) );

SWD:  PB14 PB15 对应的是ARM-SWD调试口

通过TMOS管理(RAM保持,rtc运行 休眠时候CH577/578/579=2uA,CH573/571=6uA,CH581/582/583=3uA,唤醒后芯片继续运行,可以做到蓝牙不断连 )由于CH57x/58x只有一个RTC且只有一个触发值中断可以设置,而用BLE等做休眠时候,协议栈会用到这个值去自行控制睡眠唤醒,这时候我们通常不能直接调用睡眠函数. CH57x/58x的BLE是通过其“TMOS”操作系统实现,需要休眠时候,每次协议栈需要睡多久TMOS都是知道的,比如下个event是什么时候(蓝牙事件也是tmos的event)然后把要睡多久传递给休眠函数,休眠函数去设置一个RTC的触发中断,然后就进行休眠了(RTC在跑,RAM保持),直到RTC或者其他中断唤醒MCU

全局宏里面加上HAL_SLEEP=TRUE

关机模式(唤醒会导致复位, 电流<1uA,rtc唤醒可选,开rtc要加上rtc的功耗,按键可唤醒,唤醒后重启)

这种方式,通常适用那些产品需要长时间保持极低的功耗, 比如几十分钟,甚至几天只工作几分钟,
直接调用下面函数,就会关掉ram 电源并休眠

flash和eeprom的读写

LASH_ROM_ERASE(StartAddr,Length)

FLASH_ROM_WRITE(StartAddr,Buffer,Length)

EEPROM_READ(StartAddr,Buffer,Length)

EEPROM_ERASE(StartAddr,Length)

EEPROM_WRITE(StartAddr,Buffer,Length)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值