大家好,因为做stm32f105系列的低功耗,进入停止莫时候,需要调用SystemInit恢复时钟,但发现调用SystemInit之后整个操作系统就不正常跑了,用的是ucosii,经测试发现,在正常情况下(未进入停止模式)只要启动操作系统后OSStart();,,,再次调用SystemInit这个函数,系统的滴答时钟就停止了,,,,但是用在stm32f103系列的片子上就不会出现该问题,同样的操作系统,调用SystemInit几遍都正常跑,,,,莫名其妙,找了有两天了,求大神指点方向。。。。。。 备注,在操作系统启动前,,,调用多少遍都么问题,,,,,,谢谢各位大神了,,没有思路帮忙顶下也感激不尽。 |
具体到启动文件里,最可能出问题的地方就是那个中断矢量的定义问题,你核对下。
嗯嗯,再调用系统时钟初始化函数之后,重新初始化了中断向量表,现在跑起来是正常的来,但不知道为啥就好了,问题出在哪也不知道。。还请帮忙分析。。
嗯嗯,重新初始化终端向量表就好了,,但没搞明白为啥,,
我说的F103的程序时从起始地址开始跑的,,,,,而我调试的105系列,不是从起始地址开始跑,重新初始化了中断向量表,就可以了,我还没找到,系统初始化会对中断向量表会产生什么影响
SCB->VTOR = FLASH_BASE | VECT_TAB_OFFSET; /* Vector Table Relocation in Internal FLASH. */
在,SystemInit 里确实有这么一个语句,,,太大意了,之前一直以为只是配置了时钟。。。多谢大神指点,太感谢了 ,