你好,最近项目中遇到一个问题:CH582M 蓝牙没有设备接入时(广播中)程序运行正常。只要有蓝牙设备接入后,有些全局BUF读出来的数值时异常的。这边有些疑问要请教下:
HIGH CODE代码时赋值到RAM执行的,那蓝牙设备接入后是否有HIGH CODE 代码?
CH582M RAM是32KB 我编译的时候是21K大概64%,那么编译完的21K是否有包括HIGH CODE代码?
CH582M HIGH CODE 代码大概有多少KB ?是否可以修改???
你好,最近项目中遇到一个问题:CH582M 蓝牙没有设备接入时(广播中)程序运行正常。只要有蓝牙设备接入后,有些全局BUF读出来的数值时异常的。这边有些疑问要请教下:
HIGH CODE代码时赋值到RAM执行的,那蓝牙设备接入后是否有HIGH CODE 代码?
CH582M RAM是32KB 我编译的时候是21K大概64%,那么编译完的21K是否有包括HIGH CODE代码?
CH582M HIGH CODE 代码大概有多少KB ?是否可以修改???
蓝牙是有代码工作在RAM中的,编译完成后还剩余64%,RAM是够用的,不需要针对RAM进行修改。
蓝牙的广播与连接理论上不会造成BUF的值异常,建议将BUF值异常情况贴出来我们进行查看。
同时需要注意,在蓝牙的工程目录下,需要通过TMOS系统管理所有的任务,否则可能出现各种各样的问题。
BUF值读出来都是2839~2841之间浮动(已转换成%d)。
就是使用官方给的示例(BackupUpgrade_OTA)做的修改。是用TMOS系统
HIGH CODE代码时赋值到RAM执行的,那蓝牙设备接入后是否有HIGH CODE 代码?
CH582M RAM是32KB 我编译的时候是21K大概64%,那么编译完的21K是否有包括HIGH CODE代码?
CH582M HIGH CODE 代码大概有多少KB ?是否可以修改???
这3个问题可以帮忙解答下吗?
1、蓝牙连接前与连接后都会有HIGHCODE代码,如开启睡眠后,睡眠函数就是HIGHCODE修改,代表了放在RAM中运行。RAM总共32K,包括了蓝牙库使用,变量使用和HIGHCODE使用到;
2、包括有HIGHCODE代码;
3、HIGHCODE代码可以修改,找到函数名上面带有HIGHCODE修饰的将它删除就可以了,但是不建议这样做,因为默认的例程带有HIGHCODE代表对运行速度有要求的,需要快速运行(蓝牙对运行速度有要求),同时也没必要删除,因为你的RAM完全够用(占用64%)。如果以后RAM不够用了,也是应该从应用层的角度出发去删减RAM代码的占用。
哦,谢谢解答!之前我还以为是RAM问题。那你可以帮忙分析下这个问题吗?为什么无蓝牙设备接入都正常,蓝牙设备接入后有些BUF值读出来都在2839~2841之间跳动(已转换成10进制)。
BUF是做了什么处理的,具体功能描述一下,BUF的变化也截图贴出来看看。
或者可以发送邮件至邮箱lpc@wch.cn,程序贴出来我们帮忙看看情况。
OK。已发送至你的邮箱!
BLE_BUFF_MAX_LEN的取值范围是27~251。我本来填的是251,会出现我说的异常现象;现在改成27程序就都运行正常了。这是什么原理???
主从机连接之后会进入交互MTU的回调打印exchange MTU的数值,检查一下是多少。
邮件已回复,请查看。