ZHCAFV0 June   2026 CC2340R5 , CC2745R10-Q1

 

  1.   1
  2.   摘要
  3. 1 软硬件设计参考链接
    1. 1.1 数据手册和用户手册
    2. 1.2 环境搭建必要软件以及推荐软件
    3. 1.3 SDK 示例
    4. 1.4 硬件设计参考文档
    5. 1.5 功耗计算表
    6. 1.6 产品 QDID认证链接
    7. 1.7 HSM (CC2745) 认证信息
  4. 2基于 CCS 20.0 的Debug 方法
    1. 2.1 如何将工程文件映射为客户自己的板子
    2. 2.2 结合 map 文件和ROV 评估RAM 消耗和检查 Stack Overflow
    3. 2.3 如何将你在 CCS 12.x 的工程移植到 CCS 20.x 中调试
    4. 2.4 对 CC2745 进行chip erase
    5. 2.5 如何在不导入工程代码的情况下在CCS 20.x 直接 debug 一个 项目工程(.out)
    6. 2.6 如何观察芯片的射频是否正常工作
  5. 3CC2340 & CC2745 开发过程中的常见问题
    1. 3.1  UniFlash 或 CCS 都烧写程序成功,但无法正常运行
    2. 3.2  蓝牙设备的 Tx Power 更改
    3. 3.3  为什么我的程序会进入 iCall_abort
    4. 3.4  如何 Debug 带有 MCUBoot 的工程
    5. 3.5  在 OAD 应用中调整 APP 所在 flash 位置和尺寸
    6. 3.6  在 .cmd 中自定义 SECTION 并在代码中使用
    7. 3.7  如何使用非初始化变量区
    8. 3.8  如何同时发出 Public 地址和 RPA 地址的两路ADV
    9. 3.9  CC2745R10 芯片 E0 和 E1 的区别
    10. 3.10 如何使更多的 DMA channel 来支持我的驱动需求

如何使用非初始化变量区

非初始化变量区是指在系统上电或软复位(如 OTA 升级)时不会被清零或重新赋值的内存区域,常用于在程序重启后仍需保留的数据。

要使用初始化变量区定义以及使用变量,需要三步操作:

  1. 在上述的.cmd文件中,在RAM的SECTIONS中,声明下方的空间,如图所示。
    .TI.noinit : > SRAM, type = NOINIT
  2. 为了将数据放置在非初始化变量区域中,应用程序必须使用编译器属性声明并将其放置在 .TI.noinit 部分中。

    __attribute__((noinit)) int noinit_global;
    __attribute__((noinit,location(0x100))) int noinit_location_global;
    
  3. 在您的代码里面使用该变量,编译您的程序,会在 Memory Allocation 中看到对应的定义。

以上图的代码为例。每5秒钟,就会软复位,noinit_global 会一直增加,并不会初始化为 0。

请注意:硬件复位(掉电重启 /reset 引脚复位)会使该变量重置。如果需要掉电保持,请使用 NV。