完善资料让更多小伙伴认识你,还能领取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楼回答的正确,一般都是这样处理的
|
|
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
649 浏览 0 评论
使用stm32l451片子,对ad7606进行3通道100k采样值跳动问题?
1330 浏览 1 评论
STM32进行DMA数据转运,为什么只有A组最后一位数据被转运到B组去?
1780 浏览 2 评论
2071 浏览 3 评论
1660 浏览 0 评论
浏览过的版块 |
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-9-1 07:38 , Processed in 0.672627 second(s), Total 79, Slave 63 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191