TI中文支持网
TI专业的中文技术问题搜集分享网站

cc2650 noinit parameter

Hi All

環境:cc2650, Zigbee, OTA

編譯器:IAR7.6

用途:用來判斷電池是否被拔掉(no hw pin)

添加code:main.c

__no_init uint8_t keep_pam;

但執行到的watchdog reset後似乎會清掉ram中需keep住的參數,

請問有辦法在watchdog reset情況下不清掉noinit的參數嗎??

Viki Shi:

复位不初始化即可,参考下面两个链接:
blog.csdn.net/…/79520095
blog.csdn.net/…/52610506

Kuo Austin:

回复 Viki Shi:

Hi Viki

謝謝您的回覆

但這似乎不是IAR,我在IAR中找不到類似的設定

Viki Shi:

IAR中定义__no_init也可以实现复位不初始化,__no_init 是一个SEGMENT,给LINKER用的,定义到不初始化的块中

Kuo Austin:

回复 Viki Shi:

謝謝您的回覆 ,
但如內文所述,我定義了__no_init uint8_t keep_pam;
但經過watchdog reset後參數無法keep住,
因此懷疑是否什麼地方沒設定,__no_init才無法動作?

還是watchdog reset有function清掉了ram參數?

gaoyang9992006:

回复 Kuo Austin:

单片机本身不会清除RAM中的数据。
但C编译器在初始化程序中有执行清除RAM的指令,要通过特殊方法关闭。

Viki Shi:

回复 Kuo Austin:

还要在keep_pam后面加上@ram内的某个固定地址值

Kuo Austin:

回复 Viki Shi:

Hi Viki

測試noinit參數值仍然會被清掉欸,以下定義有錯誤嗎??

IAR 7.60.1

我定義如下:

<myapp.c>

__no_init uint8 ClearCount @(0x20004200)

ram addr是參考.map裡RAM_BASE_ADDR – RAM_END的中間值

Kuo Austin:

回复 Viki Shi:

Hi Viki

google到可從.icf file判斷ram addr,目前用try and error方式找到0x20002000可用,

0x20000000,0x20001000都會是其它值,請問要如何找可用的起始值??

赞(0)
未经允许不得转载:TI中文支持网 » cc2650 noinit parameter
分享到: 更多 (0)