完善资料让更多小伙伴认识你,还能领取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楼回答的正确,一般都是这样处理的
|
|
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
1441 浏览 1 评论
AD7686芯片不传输数据给STM32,但是手按住就会有数据。
1373 浏览 3 评论
3018 浏览 0 评论
如何解决MPU-9250与STM32通讯时,出现HAL_ERROR = 0x01U
1519 浏览 1 评论
hal库中i2c卡死在HAL_I2C_Master_Transmit
1949 浏览 1 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-4 01:02 , Processed in 0.614168 second(s), Total 80, Slave 63 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号