木桩上的跛脚人 发表于 2017-5-11 16:32:52

STM32低功耗 UCOSII系统下调用SystemInit问题


         大家好,因为做stm32f105系列的低功耗,进入停止莫时候,需要调用SystemInit恢复时钟,但发现调用SystemInit之后整个操作系统就不正常跑了,用的是ucosii,经测试发现,在正常情况下(未进入停止模式)只要启动操作系统后OSStart();,,,再次调用SystemInit这个函数,系统的滴答时钟就停止了,,,,但是用在stm32f103系列的片子上就不会出现该问题,同样的操作系统,调用SystemInit几遍都正常跑,,,,莫名其妙,找了有两天了,求大神指点方向。。。。。。
          备注,在操作系统启动前,,,调用多少遍都么问题,,,,,,谢谢各位大神了,,没有思路帮忙顶下也感激不尽。https://www.stmcu.org.cn/module/forum/static/image/smiley/default/handshake.gifhttps://www.stmcu.org.cn/module/forum/static/image/smiley/default/handshake.gifhttps://www.stmcu.org.cn/module/forum/static/image/smiley/default/handshake.gif


xmshao 发表于 2017-5-11 17:49:29

从程序运行角度讲,STM32F103与stm32f107的差别主要体现在启动文件的差异,
具体到启动文件里,最可能出问题的地方就是那个中断矢量的定义问题,你核对下。

MrJiu 发表于 2017-5-12 09:32:05

你这个问题很明确。。。。你先看一下SystemInit里面有木有系统滴答时钟的设置,然后自己查看一下从停止模式恢复的时候,系统滴答模式的相关寄存器的数值,不就可以啦!!!!虽然,你仅仅需要的是去看一下系统滴答时钟寄存器的介绍!!!!

木桩上的跛脚人 发表于 2017-5-12 15:32:23

xmshao 发表于 2017-5-11 17:49
从程序运行角度讲,STM32F103与stm32f107的差别主要体现在启动文件的差异,
具体到启动文件里,最可能出问 ...

嗯嗯,再调用系统时钟初始化函数之后,重新初始化了中断向量表,现在跑起来是正常的来,但不知道为啥就好了,问题出在哪也不知道。。还请帮忙分析。。

木桩上的跛脚人 发表于 2017-5-12 15:32:53

MrJiu 发表于 2017-5-12 09:32
你这个问题很明确。。。。你先看一下SystemInit里面有木有系统滴答时钟的设置,然后自己查看一下从停止模式 ...

嗯嗯,重新初始化终端向量表就好了,,但没搞明白为啥,,

木桩上的跛脚人 发表于 2017-5-12 15:38:20

木桩上的跛脚人 发表于 2017-5-12 15:32
嗯嗯,再调用系统时钟初始化函数之后,重新初始化了中断向量表,现在跑起来是正常的来,但不知道为啥就好 ...

我说的F103的程序时从起始地址开始跑的,,,,,而我调试的105系列,不是从起始地址开始跑,重新初始化了中断向量表,就可以了,我还没找到,系统初始化会对中断向量表会产生什么影响

木桩上的跛脚人 发表于 2017-5-12 15:49:06

木桩上的跛脚人 发表于 2017-5-12 15:38
我说的F103的程序时从起始地址开始跑的,,,,,而我调试的105系列,不是从起始地址开始跑,重新初始化 ...

SCB->VTOR = FLASH_BASE | VECT_TAB_OFFSET; /* Vector Table Relocation in Internal FLASH. */

在,SystemInit 里确实有这么一个语句,,,太大意了,之前一直以为只是配置了时钟。。。多谢大神指点,太感谢了 ,

发表于 2017-5-12 16:07:43

从待机模式唤醒后的代码执行等同于复位后的执行(采样启动模式引脚、读取复位向量等)。从这里看到的,应该是需要处理的。
页: [1]
查看完整版本: STM32低功耗 UCOSII系统下调用SystemInit问题