fox0815
fox0815
This guy hasn't written anything yet

注册于 6 months ago

回答
0
文章
0
关注者
0

fox0815 发表了评论

1 month ago

rt_thread_int函数Task变量无法设置为cpp的类函数

我给类留了个c函数指针接口,把这个指针传给rt_thread_init。再把类里的线程执行函数做成public的,然后找了个c源文件写了个c函数把类函数封进去,再把c函数的地址传给init函数勉强实现

fox0815 采纳了的最佳答案

6 months ago

线程中对double赋值会引起 UNALIGNED ?

fox0815 发表了评论

6 months ago

线程中对double赋值会引起 UNALIGNED ?

@aozima 这是反编译后的指令。这是强制地址转换的。这是使用rt_memcpy后的

fox0815 发表了评论

6 months ago

线程中对double赋值会引起 UNALIGNED ?

@aozima 但是很奇怪,如果我每次只做一次 MB1.MB.MesVw.polyA1 = (double )regLoad 这种赋值,就能过。赋值成功,rtos也没有卡死报错。如果在第一次赋值之后紧

fox0815 发表了评论

6 months ago

线程中对double赋值会引起 UNALIGNED ?

@Jone 试了一下改语法不行。float、uint16、uint8均无此问题,应该是aozima所说double使用LDM STM指令的问题。

fox0815 发表了评论

6 months ago

线程中对double赋值会引起 UNALIGNED ?

可以呀,但是我不太清楚怎样看内存地址,我还是个小白(大佬能不能指点一下怎样看,谢谢啦!

fox0815 发表了评论

6 months ago

线程中对double赋值会引起 UNALIGNED ?

At32f415,M4的内核。

fox0815 发表了评论

6 months ago

线程中对double赋值会引起 UNALIGNED ?

Regload类型是uint8_t *,我想着不用考虑对齐问题,直接赋值。因为上位机那边就是直接把数据复制过去了。上位机把double复制过去,这边直接强制转换赋值,不知道为什么不行。

回到
顶部

发布
问题

投诉
建议