打印
[AT32F415]

gpio_bits_set 位操作会影响旁边的位?

[复制链接]
888|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
一片小舟|  楼主 | 2022-3-17 12:03 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
#define COL1_ENABLE()                 gpio_bits_set(GPIOC,GPIO_PINS_9);     
#define COL1_DISENABLE()         gpio_bits_reset(GPIOC,GPIO_PINS_9);     

#define COL2_ENABLE()                 gpio_bits_set(GPIOC,GPIO_PINS_8);     
#define COL2_DISENABLE()         gpio_bits_reset(GPIOC,GPIO_PINS_8);   

#define COL3_ENABLE()                 gpio_bits_set(GPIOC,GPIO_PINS_7);     
#define COL3_DISENABLE()         gpio_bits_reset(GPIOC,GPIO_PINS_7);     

#define COL4_ENABLE()                 gpio_bits_set(GPIOC,GPIO_PINS_6);     
#define COL4_DISENABLE()         gpio_bits_reset(GPIOC,GPIO_PINS_6);


    COL1_ENABLE();
    COL2_ENABLE();
    COL3_ENABLE();
    COL4_ENABLE();

操作到第4步前面3位都为低了

使用特权

评论回复
沙发
hoop| | 2022-3-17 20:14 | 只看该作者
不会影响的,gpio_bits_set这个函数只会对你写的那个pin脚生效

使用特权

评论回复
板凳
一片小舟|  楼主 | 2022-3-18 09:42 | 只看该作者
hoop 发表于 2022-3-17 20:14
不会影响的,gpio_bits_set这个函数只会对你写的那个pin脚生效

我测试是相互影响的!
#define COL1_ENABLE()                 GPIOC->scr = GPIO_PINS_9;
#define COL1_DISENABLE()         GPIOC->clr = GPIO_PINS_9;

#define COL2_ENABLE()                 GPIOC->scr = GPIO_PINS_8;   
#define COL2_DISENABLE()         GPIOC->clr = GPIO_PINS_8;   

#define COL3_ENABLE()                 GPIOC->scr = GPIO_PINS_7;   
#define COL3_DISENABLE()         GPIOC->clr = GPIO_PINS_7;     

#define COL4_ENABLE()                 GPIOC->scr = GPIO_PINS_6;   
#define COL4_DISENABLE()         GPIOC->clr = GPIO_PINS_6;
但是这样就不相互影响

使用特权

评论回复
地板
hoop| | 2022-3-18 13:01 | 只看该作者
有按完全照你问题代码实测,不会相互影响。
且可以去看驱动里面gpio_bits_set(GPIOC,GPIO_PINS_9);   这个函数的原型,就是一句GPIOC->scr = GPIO_PINS_9;命令。
建议你重点排查其他代码部分内容,或者外部电路原因。

使用特权

评论回复
5
一片小舟|  楼主 | 2022-3-18 19:43 | 只看该作者
所有很奇怪外部电路原因 换一个方法就好了

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

2

主题

5

帖子

0

粉丝