OpenEdv-开源电子网

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

当宏命令遇到GPIO口寄存器设置不同,该怎么做?

[复制链接]

11

主题

32

帖子

0

精华

初级会员

Rank: 2

积分
101
金钱
101
注册时间
2015-1-27
在线时间
0 小时
发表于 2015-3-24 22:35:39 | 显示全部楼层 |阅读模式
5金钱
当宏命令遇到GPIO口寄存器设置不同,该怎么做?

比如说,探索者的板子,我想让LED和BEEP同时工作,也就是PF8/9/10三个口的PUPDR,8设置下拉,9、10设置上拉。那么问题来了,当采用宏命令时:
 void TEST_Init(void)
{
    RCC->AHB1ENR|=1<<5;
    GPIO_Set(GPIOF,PIN9|PIN10,
         GPIO_MODE_OUT,
         GPIO_OTYPE_PP,
         GPIO_SPEED_100M,
         GPIO_PUPD_PU
        );
    GPIO_Set(GPIOF,PIN8,
         GPIO_MODE_OUT,
         GPIO_OTYPE_PP,
         GPIO_SPEED_100M,
         GPIO_PUPD_PD
        );
LED0=1;
LED1=1;
BEEP=0;


这样就可以完成8下拉,9、10上拉的设置,但是其他寄存器却进行了一大堆重复设置。有没有办法一次设置完成呢?

位操作GPIOF_PUPDR当然可以,我这里问的是,如果咱们就用宏命令,有没有技巧也能完成这件事呢?

最佳答案

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

没有 实在想优化,直接操作寄存器吧,可以一次操作很多,但是可读性就比较差了。
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165371
金钱
165371
注册时间
2010-12-1
在线时间
2110 小时
发表于 2015-3-24 22:35:40 | 显示全部楼层
没有
实在想优化,直接操作寄存器吧,可以一次操作很多,但是可读性就比较差了。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

11

主题

32

帖子

0

精华

初级会员

Rank: 2

积分
101
金钱
101
注册时间
2015-1-27
在线时间
0 小时
 楼主| 发表于 2015-3-25 09:48:05 | 显示全部楼层
回复【2楼】正点原子:
---------------------------------
收到~~
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-2-24 09:56

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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