您尚未登录。

楼主 #1 2018-11-13 14:43:16

BugActiveDaughter
会员
注册时间: 2017-10-17
已发帖子: 118
积分: 117.5

f0 跑rtx加引导引起诡异事情,已解决,分享一下

f0启用rtx 只是用到简单的rtx的核心部分。不加引导,程序正常,加了引导,程序就一直报线程栈溢出,而且是空闲线程的溢出。确定引导是正常,问题肯定出在应用层的向量设置。查找了.s的启动文件,把里边设置栈等全部注释,如下:
IMPORT __main
IMPORT SystemInit

; LDR R0, =__initial_sp ; set stack pointer
; MSR MSP, R0

;;Check if boot space corresponds to test memory

; LDR R0,=0x00000004
; LDR R1, [R0]
; LSRS R1, R1, #24
; LDR R2,=0x1F
; CMP R1, R2

; BNE ApplicationStart

;; SYSCFG clock enable

; LDR R0,=0x40021018
; LDR R1,=0x00000001
; STR R1, [R0]

;; Set CFGR1 register with flash memory remap at address 0

; LDR R0,=0x40010000
; LDR R1,=0x00000000
; STR R1, [R0]
ApplicationStart
LDR R0, =SystemInit
BLX R0
LDR R0, =__main

之后本以为大功告成,但还是不行,真是活见鬼,想不通。
最后想想,要不把下边向量设置函数放system_stm32f0xx文件里边的SystemInit (void)函数内,居然可以了。
void Flash_OffSet(void)
{
uint8_t i;
uint32_t Data, Address;
//Set Flash offest

for (i = 0; i < 48; i++)
{
Data = (__IO u32 )(FLASHOFFSET + i * 4);

Address = 0x20000000 + (i * 4);
(__IO u32 )Address = (u32)Data;
}
RCC_APB2PeriphClockCmd(RCC_APB2Periph_SYSCFG, ENABLE);
SYSCFG_MemoryRemapConfig(SYSCFG_MemoryRemap_SRAM);
}
理论上,这个函数放main初始也可以呀,不加rtx 的工程我都是放main里边开头设置。

离线

#2 2018-11-13 15:36:49

晕哥
管理员
所在地: wechat: whycan_cn
注册时间: 2017-09-06
已发帖子: 9,473
积分: 9202

Re: f0 跑rtx加引导引起诡异事情,已解决,分享一下

感谢美女工程师分享!





离线

页脚

工信部备案:粤ICP备20025096号 Powered by FluxBB

感谢为中文互联网持续输出优质内容的各位老铁们。 QQ: 516333132, 微信(wechat): whycan_cn (哇酷网/挖坑网/填坑网) service@whycan.cn


东莞哇酷科技有限公司开发