OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 4399|回复: 5

GPIOF->ODR=((GPIOF->ODR & 0xff00)|cmd)这句寄存器操作如何改成库函数?

[复制链接]

2

主题

8

帖子

0

精华

新手上路

积分
40
金钱
40
注册时间
2017-2-12
在线时间
15 小时
发表于 2017-2-12 15:12:01 | 显示全部楼层 |阅读模式
1金钱
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位

最佳答案

查看完整内容[请看2#楼]

GPIO_ODR寄存器是端口输出数据寄存器,这个位可读可写,读用库函数是GPIO_ReadOutputData,写的库函数是GPIO_Write。这些都是对GPIO_ODR寄存器进行操作。 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的格 ...
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

1

主题

74

帖子

0

精华

初级会员

Rank: 2

积分
127
金钱
127
注册时间
2017-2-9
在线时间
19 小时
发表于 2017-2-12 15:12:02 | 显示全部楼层
GPIO_ODR寄存器是端口输出数据寄存器,这个位可读可写,读用库函数是GPIO_ReadOutputData,写的库函数是GPIO_Write。这些都是对GPIO_ODR寄存器进行操作。
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的中文参考手册和固件库手册。
回复

使用道具 举报

2

主题

8

帖子

0

精华

新手上路

积分
40
金钱
40
注册时间
2017-2-12
在线时间
15 小时
 楼主| 发表于 2017-2-12 15:27:05 | 显示全部楼层
GPIO_SetBits(GPIOF, cmd & 0xff);
GPIO_ResetBits(GPIOF, (~cmd & 0xff));

这样好像也可以
回复

使用道具 举报

2

主题

8

帖子

0

精华

新手上路

积分
40
金钱
40
注册时间
2017-2-12
在线时间
15 小时
 楼主| 发表于 2017-2-12 15:28:20 | 显示全部楼层
我的想法是,万一IO口不是连续的低八位,
比如
PA0-PA3
PB4-PB7,怎么改
回复

使用道具 举报

18

主题

57

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
405
金钱
405
注册时间
2017-1-18
在线时间
180 小时
发表于 2017-2-12 17:25:50 | 显示全部楼层
我认为这样写应该没什么问题,乱码可能是其他原因造成的
回复

使用道具 举报

2

主题

8

帖子

0

精华

新手上路

积分
40
金钱
40
注册时间
2017-2-12
在线时间
15 小时
 楼主| 发表于 2017-2-12 21:57:56 | 显示全部楼层
1253171658 发表于 2017-2-12 17:25
我认为这样写应该没什么问题,乱码可能是其他原因造成的

哈哈,可神奇了- -
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-8-24 07:42

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表