[STM32F1] 16位单片机的函数如何移植到32位单片机上?

[复制链接]
940|14
 楼主| wenfen 发表于 2020-8-16 17:27 | 显示全部楼层 |阅读模式
16位单片机的函数如何移植到32位单片机上?
houcs 发表于 2020-8-16 17:35 | 显示全部楼层
楼主详细说说怎么回事啊,这么说太笼统了
 楼主| wenfen 发表于 2020-8-16 17:35 | 显示全部楼层
我现在用的是STM32,想把之前飞思卡尔上单片机(16位)的一个函数移植到STM32上但是移植之后函数的处理得到数据不同,问了一下说可能是函数惊醒位操作原因导致结果不同。我想问该如何移植这种?需要注意什么?
liuzaiy 发表于 2020-8-16 17:43 | 显示全部楼层
一个个子函数,慢慢移植;
houcs 发表于 2020-8-16 17:43 | 显示全部楼层

都是C语言,差不多的;
位操作的话,用宏定义,写个替换的
tian111 发表于 2020-8-16 17:59 | 显示全部楼层
直接移植就行了。32的机器支持16位的数据
yinxiangh 发表于 2020-8-16 18:02 | 显示全部楼层
函数整个复制过去就行了。
juventus9554 发表于 2020-8-16 18:06 | 显示全部楼层
注意:大小端是否一致,主要是指针指向的地址需检查
pangb 发表于 2020-8-16 18:21 | 显示全部楼层
16位单片机int类型是2字节,32位该类型是4字节,检查下所有用到数据类型int的地方。
chenjunt 发表于 2020-8-16 18:21 | 显示全部楼层
估计你是完全不懂这些玩意,否则不是什么大事啊!
 楼主| wenfen 发表于 2020-8-16 18:25 | 显示全部楼层
我16位单片机是大端 STM32是小端 。这个怎么转换或在哪里转换
 楼主| wenfen 发表于 2020-8-16 18:28 | 显示全部楼层
嗯 我是真不懂这东西。这个是哈希算法,看了好久没有看懂,就想着干脆直接移植了。。。
 楼主| wenfen 发表于 2020-8-16 18:32 | 显示全部楼层
我查了一下就是位操作那里出了问题
void R0(uint32_t *v, uint32_t *w, uint32_t *x, uint32_t *y, uint32_t *z, uint8_t i)
{
    (*z)+=(((*w)&((*x)^(*y)))^(*y))+blk0(i)+0x5A827999+rol(*v,5);
    (*w)=rol(*w,30);
   
}
示例,如果用宏定义的话该如何定义?这个函数用的哈希算法看不懂,就只能照搬
zyf部长 发表于 2020-8-16 18:44 | 显示全部楼层
看不懂
 楼主| wenfen 发表于 2020-8-16 18:48 | 显示全部楼层
的确是大小端导致的问题最后解决了。麻烦大家了
您需要登录后才可以回帖 登录 | 注册

本版积分规则

737

主题

8940

帖子

8

粉丝
快速回复 在线客服 返回列表 返回顶部