GPIOF->ODR=((GPIOF->ODR & 0xff00)|cmd);
//GPIOF的ODR寄存器 逻辑与(相乘) 0XFF00,结果 逻辑或(相加) cmd
//此处,只有直接操作寄存器才能达到,只改变 输出数据寄存器ODR 的低8位,
//其它位不变的目的。因为,只有低8位是数据引脚,
//其它位可能是控制引脚,不能改变。
就是上面这句话,实际用挺好用,我改成下面这样全是乱码了,求助大神
PFout(0)=cmd & 0x01;//第1位
PFout(1)=cmd & 0x02;//第2位
PFout(2)=cmd & 0x04;//第3位
PFout(3)=cmd & 0x08;//第4位
PFout(4)=cmd & 0x10;//第5位
PFout(5)=cmd & 0x20;//第6位
PFout(6)=cmd & 0x40;//第7位
PFout(7)=cmd & 0x80;//第8位
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
void GPIO_Write(GPIO_TypeDef* GPIOx, uint16_t PortVal)
{
/* Check the parameters */
assert_param(IS_GPIO_ALL_PERIPH(GPIOx));
GPIOx->ODR = PortVal;
}
初始化端口数据位0x0000 0000,楼主可直接调用GPIO_Write(GPIOF,cmd);来进行操作。那cmd的格式楼主就要自己定义了,详情楼主可以看STM32的中文参考手册和固件库手册。
GPIO_ResetBits(GPIOF, (~cmd & 0xff));
这样好像也可以
哈哈,可神奇了- -
一周热门 更多>