打印
[菜农助学交流]

分析UNLOCKREG

[复制链接]
4793|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
tao560532|  楼主 | 2011-12-1 16:10 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 tao560532 于 2011-12-1 16:12 编辑

2011年11月24日 0:00      
      看看了,刚刚搞清楚新建工程,大叔人好,宽限了一个月,这个月不管多么难也要学好M0,还是先从简单的开始入手吧!先从GPIO开始。有些步骤和知识还是要及时总结要不然过久了就忘记了,而且忘得很快。现在写帖子是不断更新中,,呵呵。。。
      现在心里很乱,也许以后我的博客就成了我的心情发表的地方了,有些事憋在心里还是挺难受的。朱老师的题目一拖再拖,真的没啥好说的,如果想学ARM那就先从简单的开始吧,不要太贪心和急于求成,那样只会带给自己很多烦恼。
     这些天还是先看看芯片手册再说吧,其他的都还是不清楚,看手册!!大叔用了2个月才搞定USB接口,看来要想搞定USB接口不是件容易的事情啊!
先看主函数:
第一句:
UNLOCKREG();//解锁定函数原型是下面的宏定义:
#define UNLOCKREG(x)        
*((__IO uint32_t *)(GCR_BASE + 0x100)) = 0x59;
*((__IO uint32_t *)(GCR_BASE + 0x100)) = 0x16;
*((__IO uint32_t *)(GCR_BASE + 0x100)) = 0x88
网上有篇帖子写到:
      寄存器锁定键地址寄存器(RegLockAddr) :有些系统控制寄存器需要被保护起来,以防止误操作而影响芯片运行, //这些寄存器在上电复位到用户解锁定之前是锁定的。用户可以连续依次写入“59h”, “16h” “88h”到0x5000_0100解锁定.
      做简单的事情好应付,难得事情就难了,哎、、、今天这个看来搞不定了,明天接着看了,还是接着看吧^_^,**就是胜利!
看了下函数库说明文档:
DrvSYS_UnlockProtectedReg//这个是函数名
Prototype 函数原型
int32_t DrvSYS_UnlockProtectedReg (void);
Description To unlock the protected registers.//关于这个寄存器的描述

Some of the system control registers need to be protected to avoid inadvertent write and disturb the chip operation. These system control registers are locked after the power on reset. If user needs to modify these registers, user must UNLOCK them. These protected registers are listed in Register „REGWRPROT‟ of System Manager Section of TRM in details.
这个是Google上的翻译:

系统控制寄存器的一些需要加以保护,以避免意外的写入和干扰芯片的操作。这些系统控制寄存器在上电复位后锁定。如果用户需要修改这些寄存器,用户必须解锁。这些受保护的寄存器列在注册“REGWRPROT”TRM的系统管理器中节。
大概意思就是说系统控制寄存器在上电复位后是锁定状态的,如果用户要想修改这些寄存器,比如我们要操作寄存器,那么就必须解锁,就使用这个DrvSYS_UnlockProtectedReg库函数了
Parameters

None
Include
Driver/DrvSYS.h
Return Value
  0 Succeed
<0 Failed
Example
int32_t i32ret; /* Unlock protected registers */
i32ret = DrvSYS_UnlockProtectedReg ( );
下面看看这个库函数是如何实现的:这个是直接从板级支持包里copy来的
/*---------------------------------------------------------------------------------------------------------*/
/* Function: DrvSYS_UnlockProtectedReg                                                                             */
/*                                                                                                         */
/* Parameters:                                                                                             */
/*               None                                                                                             */
/*                                                                                                                  */
/* Returns:                                                                                                */
/*               0         Success                                                                                  *//*              <0        Failed                                                                               */
/* Description:                                                                                            */
/*               Unlock protected registers                                                                   */
/*---------------------------------------------------------------------------------------------------------*/
int32_t DrvSYS_UnlockProtectedReg(void)
{   
       uint32_t lockbit;   

      SYS->REGLOCK = 0x59;   
      SYS->REGLOCK = 0x16;   
      SYS->REGLOCK = 0x88;   
      lockbit = SYS->REGLOCK & 0x01;   
      return (lockbit)? 0 : E_DRVSYS_ERR_UNLOCK_FAIL;
}   
file:///C:/Documents%20and%20Settings/Administrator/Local%20Settings/Temp/WindowsLiveWriter-429641856/supfiles150E1C2/_thumb8.png

相关帖子

沙发
hotpower| | 2011-12-1 18:08 | 只看该作者
继续,这个算入门,不太算笔记吧

使用特权

评论回复
板凳
tao560532|  楼主 | 2011-12-1 19:03 | 只看该作者
好的

使用特权

评论回复
地板
tao560532|  楼主 | 2011-12-1 19:03 | 只看该作者
谢谢大叔指点

使用特权

评论回复
5
Ryanhsiung| | 2011-12-2 09:21 | 只看该作者
。。。。虽然不怎么样,但是只要继续加油,就一定可以学成出山

使用特权

评论回复
6
tao560532|  楼主 | 2011-12-2 10:38 | 只看该作者
谢谢。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:技术源于积累,成功源于执着!

31

主题

366

帖子

1

粉丝