GPIOx->BSRR = (((uint32_t)0x01) << pinpos);
GPIOx->BSRR=(((uint32_t)0x01)<<pinpos)里的(((uint32_t)0x01)是什么意思?...
GPIOx->BSRR = (((uint32_t)0x01) << pinpos)里的(((uint32_t)0x01) 是什么意思?
展开
3个回答
展开全部
0x01是8位的 二进制是00000001 这里要转成32位的 即0x0001,这句话的意思是将这个1转换成32位之后左移pinpos这个变量值的这么多位!串口编程啊,孩子,这个GPIO口的BSRR寄存器置位操作!
更多追问追答
追问
(((uint32_t)0x01) << pinpos)为什么就可以把0x01转换成unsigned int类型的呢 有什么固定的转换的格式吗?
uint32_t后面的_t是什意思呢
追答
我X!uint32_t这个是整个的一个数据类型,系统使用typedef 定义的,按照字面上来说这个是个unsigned int 型的数据! typedef uint32_t unsigned int。。。哪那么多为什么,uint32_t是个整体,就是一个类型名罢了! 我之前说了!BSRR是个32位的寄存器!你的数据时8位的,你要对32位进行操作只有进行扩充才行!这。。。。。我感觉你还是去看看书在说,假如你连这个都看不懂,我觉得你的C语言学得相当有问题,并且你不适合对底层硬件接口的编程!你的知识差得太多了!
展开全部
(((uint32_t)0x01) 他的意思是将 0x01也就是1这个值转换成unsigned int型类型
更多追问追答
追问
为什么要将 0x01也就是1这个值转换成unsigned int型类型的呢?
追答
这个问题可能是因为GPIOx->BSRR 这个类型是unsigned int 的原因
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
((uint32_t)0x01) 在C语言中属于强制类型转换 uint32_t是用typedef自定义的数据类型,你该好好学一下C语言了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询