打印
[STM32F1]

真遇到不能解释的问题了,值莫名其妙高人解答一下。。。

[复制链接]
1180|8
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
xlsbz|  楼主 | 2014-11-9 14:30 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
ni, ST, EMI, ck, se
本帖最后由 xlsbz 于 2014-11-9 14:33 编辑

官方库V3.5.0 的SetSysClockTo72函数

我在所在文件定义了全局变量

static __IO u32   hahah = 10;

SetSysClockTo72
{

     hahah = 108;
}

然后运行到启动代码的
                IMPORT  __main
                IMPORT  SystemInit
                LDR     R0, =SystemInit
                BLX     R0               
                LDR     R0, =__main
                BX      R0  //运行到这个地方,那个hahah竟然又变成10了!!!帮忙解释。。。。。。
                ENDP


沙发
xlsbz|  楼主 | 2014-11-9 14:39 | 只看该作者
接楼上:我主要是想把 StartUpCounter这个值读出来。把StartUpCounter复制给全局变量,然后进了main以后再处理
static void SetSysClockTo72(void)
{
  __IO uint32_t StartUpCounter = 0, HSEStatus = 0;
  
  /* SYSCLK, HCLK, PCLK2 and PCLK1 configuration ---------------------------*/   
  /* Enable HSE */   
  RCC->CR |= ((uint32_t)RCC_CR_HSEON);

  /* Wait till HSE is ready and if Time out is reached exit */
  do
  {
    HSEStatus = RCC->CR & RCC_CR_HSERDY;
    StartUpCounter++;  
  } while((HSEStatus == 0) && (StartUpCounter != HSE_STARTUP_TIMEOUT));

使用特权

评论回复
板凳
airwill| | 2014-11-10 13:10 | 只看该作者
嗯,SetSysClockTo72,或者说 SystemInit 是个特殊的函数。特殊性就是它在初始化代码里被调用。
初始化代码还有内存初始化的部分,会完成 static __IO u32   hahah = 10; 的赋值工作。

从楼主遇到的情况看, 应该是 SystemInit  在内存初始化的部分之前先被执行了。

使用特权

评论回复
地板
想做大牛的小马| | 2014-11-10 13:38 | 只看该作者
SetSysClockTo72在哪儿被调用的?是不是太靠前了,后面又重新赋值了。。。

使用特权

评论回复
5
xlsbz|  楼主 | 2014-11-10 13:43 | 只看该作者
想做大牛的小马 发表于 2014-11-10 13:38
SetSysClockTo72在哪儿被调用的?是不是太靠前了,后面又重新赋值了。。。 ...

楼主位写的:官方库V3.5.0 的SetSysClockTo72函数:

就是启动代码里面

使用特权

评论回复
6
xlsbz|  楼主 | 2014-11-10 13:44 | 只看该作者
想做大牛的小马 发表于 2014-11-10 13:38
SetSysClockTo72在哪儿被调用的?是不是太靠前了,后面又重新赋值了。。。 ...

你头像不错 名字也不错。哪天给我也推荐一个头像

使用特权

评论回复
7
styleno1| | 2014-11-10 14:10 | 只看该作者
3楼正解,现在理解某版在另一帖中的回复了。

使用特权

评论回复
8
想做大牛的小马| | 2014-11-10 14:42 | 只看该作者
xlsbz 发表于 2014-11-10 13:44
你头像不错 名字也不错。哪天给我也推荐一个头像

洋葱头啊,有很多,挑个自己喜欢的~

使用特权

评论回复
9
xlsbz|  楼主 | 2014-11-10 15:36 | 只看该作者
airwill 发表于 2014-11-10 13:10
嗯,SetSysClockTo72,或者说 SystemInit 是个特殊的函数。特殊性就是它在初始化代码里被调用。
初始化代码 ...

对 不过内存初始化比较隐蔽啊

https://bbs.21ic.com/icview-173421-1-1.html

使用特权

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

本版积分规则

190

主题

1614

帖子

4

粉丝