折腾了3天,终于能够用EFM32+Si446x接收到报文信息了。这个驱动库确实还不错,就是对于Si的RF芯片无任何经验的新手来说,稍显复杂了一些。

但是编译通过,运行正常,接收到报文,LED能够闪烁,心情还是挺开朗的。唯独看着消耗的RAM,心里比较烦躁,难道更年期到了??呵呵。

如下我是修改的地方,其实就是将变量第一成const型,用Flash换RAM空间,这样在一些RAM比较少的MCU上,会更实用一些。

请注意的是,以下的修改,是针对Si446x的接收端的修改。切记切记。

在radio.c里,将如下的几个全局变量用const修饰:

/******************************************************************************  Global Variables*****************************************************************************/
const uint8_t Radio_Configuration_Data_Array[] = RADIO_CONFIGURATION_DATA_ARRAY;
const tRadioConfiguration RadioConfiguration = RADIO_CONFIGURATION_DATA;
tRadioConfiguration const *pRadioConfiguration =  &RadioConfiguration;

在radio.h里,用const修饰Radio_ConfigurationArray:

/******************************************************************************  Global Typedefs & Enums*****************************************************************************/
typedef struct
{uint8_t const *Radio_ConfigurationArray;uint8_t   Radio_ChannelNumber;uint8_t   Radio_PacketLength;uint8_t   Radio_State_After_Power_Up;uint16_t  Radio_Delay_Cnt_After_Reset;uint8_t   Radio_CustomPayload[RADIO_MAX_PACKET_LENGTH];
} tRadioConfiguration;

在radio.h用const修饰变量*pRadioConfiguration和Radio_Configuration_Data_Array[]

/******************************************************************************  Global Variable Declarations*****************************************************************************/
extern tRadioConfiguration const *pRadioConfiguration;
extern uint8_t fixRadioPacket[RADIO_MAX_PACKET_LENGTH];/*! Si446x configuration array */
extern const uint8_t Radio_Configuration_Data_Array[];

在radio.c里,将该函数中传入的参数强行转换成(uint8_t *)

/* Load radio configuration */while (SI446X_SUCCESS != si446x_configuration_init((uint8_t *)pRadioConfiguration->Radio_ConfigurationArray)){Delay(2);/* Power Up the radio chip */vRadio_PowerUp();}

希望没有遗漏的地方。全部改成const之后,整个驱动库的RAM占用量,就取决于如下几个变量了:

uint8_t fixRadioPacket[RADIO_MAX_PACKET_LENGTH];   //radio.c
<pre name="code" class="cpp">union si446x_cmd_reply_union Si446xCmd;   //si446x_api_lib.c
uint8_t Pro2Cmd[16];                      //si446x_api_lib.c

改完之后,发现心里的确是是舒坦了好多。这下子,连低端的51应该也不会吃力了吧。。

对Si446x驱动库的一些修改相关推荐

  1. STM32 之十五 奇怪问题处理及驱动库 BUG 汇总(持续更新中)

      在使用 STM32 的 MCU 开发过程中,难免遇到各种各样的奇葩问题.或许是开发环境的问题,或许是 MCU 使用的问题,也或许是驱动库的 BUG 等等.这些问题可能不局限于某一种具体型号的 MC ...

  2. 外设驱动库开发笔记13:MLX90614红外温度传感器驱动

    红外温度传感器一般用于非接触式的温度检测.在我们的系统中经常会有这样的需求.所以我们将其设计为通用的驱动库以备复用.这一篇我们将讲述MLX90614红外温度传感器驱动的设计与实现. 1.功能概述 ML ...

  3. arduino步进电机程序库_Arduino入门教程15(步进电机驱动库的使用):Arduino Uno R3+ULN2003+步进电机 使用Stepper驱动库,控制步进电机转动角度...

    本篇介绍步进电机驱动库的使用,通过读取电位器输入,控制步进电机转动相应角度. Stepper库是官方提供的驱动库,我们启动Arduino IDE,点击「文件」-「示例」就能找到Stepper库,官方提 ...

  4. 15、RDA8910(4GCAT1)CSDK二次开发:通过OneWire驱动库获取DS18B20/DHT11的数据

    目录 点击这里查看所有博文   本系列博客所述资料均来自合宙官方,并不是本人原创(只有博客是自己写的),csdk只是得到了口头的允许公开授权.出于热心,本人将自己的所学笔记整理并推出相对应的使用教程, ...

  5. STM32 之三 标准外设版USB驱动库详解(架构+文件+函数+使用说明+示例程序)

    写在前面 目前,ST的USB驱动有两套,一套是早期的独立版USB驱动,官方培训文档中称为Legacy library:一套为针对其Cube 系列的驱动,根据芯片不同可能有区别,具体见对应芯片的Cube ...

  6. 从头开始写STM32F103C8T6驱动库(一)——STM32CubeMX创建并调整工程结构

    系列文章目录 Github开源地址 从头开始写STM32F103C8T6驱动库(一)--STM32CubeMX创建并调整工程结构 从头开始写STM32F103C8T6驱动库(二)--编写系统初始化程序 ...

  7. android 蓝牙 驱动,转个蓝牙修改帖--Android BCM4330 蓝牙BT驱动调试记录

    本帖最后由 旋律2014 于 2014-3-27 09:15 编辑 一.关于BT driver的移植: 1. Enablebluetootch in BoadConfig.mk BOARD_HAVE_ ...

  8. Arduino UNO基于Timer2的舵机驱动库(精度比官方的高)

    Arduino UNO基于Timer2的舵机驱动库(精度比官方的高) 原博客格式更友好:More accurate Arduino UNO timer2 servo driver library th ...

  9. 外设驱动库开发笔记54:外设库驱动设计改进的思考

      不知不觉中我们已经发布了五十多篇外设驱动的文章.前段时间有一位网友提出了一些非常中肯的建议,这也让我们开始考虑怎么优化驱动程序设计的问题.在这一篇中我们将来讨论这一问题. 1.问题分析   首先我 ...

  10. 【Android 逆向】Android 进程代码注入原理 ( 注入本质 | 静态注入和动态注入 | 静态注入两种方式 | 修改动态库重打包 | 修改 /data/app/xx/libs 动态库 )

    文章目录 一.注入本质 二.静态注入和动态注入 三.静态注入两种方式 ( 修改动态库重打包 | 修改 /data/app/packageName/libs/ 下的动态库 ) 一.注入本质 进程注入本质 ...

最新文章

  1. 计算机程序的思维逻辑 (63) - 实用序列化: JSON/XML/MessagePack
  2. 一篇关于java变量定义的文章
  3. 将来自另一个分支的所有更改合并为单个提交
  4. 多个线程同时运行,顺序打印问题
  5. oracle中rac是什么意思,Oracle中HA、RAC、Datagurad区别
  6. poj-2828 Buy Tickets ***
  7. 微软正在开发基于Rust的安全编程语言
  8. SP22343 NORMA2 - Norma(分治优化复杂度)
  9. (1.3)HarmonyOS鸿蒙启动程序运行流程
  10. 使用pt-query-digest时遇到报错can't locate Digest/MD5.pm in @INC (@INC contains: /usr/local/lib64/perl5
  11. 弹载计算机的上市公司,基于无线通信的弹载计算机系统BIT设计
  12. [转载] python数据类型转换
  13. 用c 语言创建web项目,使用Maven创建Web应用程序项目
  14. 运算放大器的偏置电流、失调电流
  15. Vim 配置详解_wuyang
  16. C++加速代码(DAY 39)
  17. websphere修改协议为TLS1.2
  18. 苍蓝誓约服务器维护什么时候结束,《苍蓝誓约》12月10日09:30停服维护公告
  19. 51单片机——人体红外感应报警
  20. Spark Transformation转换算子和Action行动算子

热门文章

  1. FILCO连接WIN10出现PIN问题
  2. 用Kali进行ARP断网攻击
  3. Windows 服务器使用FTP出现“当前的安全设置不允许从该位置下载文件 警告
  4. 日本日野汽车因尾气数据造假问题受到调查
  5. 浏览器输入baidu.com之后跳转到baidu.com/?tn=92363592_hao_pg在跳转回百度解决方案
  6. 阿里云如何设置content-type,微软的在线预览无法使用问题
  7. 洛谷 1571 眼红的Medusa
  8. 天意PE维护系统 V2021.7.16版
  9. 获取取本月一号、本月月末 日期
  10. 中国大数据论坛第八期教育成都沙龙成功