完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
|
比如 :
uint32_t data1;, uint8_t data2; data2 = data1; 是不是就将最低的8位传送给了 data2?? 如果要传送次低的8位: data2 = data1>>8; 就可以了????? 求助 extern void GPIO_OUT(uint32_t Output) { uint16_t temp1,temp2; temp1=(uint16_t)Output; temp2=(uint16_t)Output; GPIOA->ODR = temp1;//保留低8位 GPIOB->ODR = temp2;//保留高8位 GPIOC->ODR = (uint16_t)(Output>>16);//保留高16位 } 运行一下只有PC的16个端口能正常输出 所有的GPIO都是推挽输出,初始化都没有问题,已经试验过了 拜托了 |
|
相关推荐
5个回答
|
|
|
本帖最后由 bj2008wyou 于 2014-4-8 15:33 编辑
应该这样写吧 低8位: data2 = (uint8_t)(data1 & 0xFFu); 次低8位:data2 = (uint8_t)((data1 >> 8u) & 0xFFu); 在你原来基础上是加个显示转换应该也是可以的吧data2 = (uint8_t)data1; data2 = (uint8_t)(data1 >> 8u); 总之,一般是不应该隐式转换的,而应该是显式转换。然后建议你去验证下你原来的做法,看是不是被截取了高8位的缘故?真这样的话有可能是依赖于编译器的大小端模式。 |
|
|
|
|
|
楼上说的很对 一般进行显式转换就行了
|
|
|
|
|
|
|
|
|
|
|
|
2楼回答的正确,一般都是这样处理的
|
|
|
|
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
1470 浏览 1 评论
1132 浏览 0 评论
996 浏览 0 评论
STM32F405驱动DS1302时钟模块,输出时间错乱该怎么排查?
5373 浏览 2 评论
stm32f405rgt6驱动DS1302ZN出现时间错乱问题
4163 浏览 1 评论
/9
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-12-14 18:38 , Processed in 0.728321 second(s), Total 82, Slave 65 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191

淘帖
6707