初级会员

- 积分
- 160
- 金钱
- 160
- 注册时间
- 2018-6-29
- 在线时间
- 33 小时
|

楼主 |
发表于 2020-6-1 13:57:13
|
显示全部楼层
终于解决了问题,这款芯片要操作flash原来有3个要注意的点
1.指令寄存器PCCOBx是大端控制,比如用户手册里边PCCOB0,PCCOB1,PCCOB2,PCCOB3在keil的头文件中对应的是PCCOB[3],PCCOB[2],PCCOB[1],PCCOB[0]。
2.在开始操作之前要用__disable_irq();关掉所有中断,操作完之后用__enable_irq();使能中断。
3.这个是真的是查了挺多资料才知道的,用户手册上没看到要这样做,也不知道是我看漏了还是真没写,还是大家都知道的常识只是我不知道,反正涨姿势了,启动执行指令的代码要放到RAM中执行,就像这样:
void launchCommand(void) __attribute__((section (".code_ram"))); //放在ram中执行
void launchCommand(void)
{
/* Clear CCIF to launch command */
FTFC->FSTAT = 0x80;
while((FTFC-> FSTAT & FTFC_FSTAT_CCIF_MASK)== 0);
}
总之最后终于算是完成可擦写flash了 |
|