位域加指针
在上一篇中谈了位域实现的位操作,但是不够灵活,在批量IO修改的时候才有明显的优势,但是如果在不能位操作的单片机中,要单独操作一两个IO口,那么上一篇的位域则显得很鸡肋。我本人能力又不足,但想到了指针配合这个方向,留着给我们思考。刚好,最近正好用到了一款IO口不能位操作的单片机,又正好看到了论坛上一位网友写的关于位域与指针配合实现位操作的文章。看来上帝还是眷念着我^_^
如图,定义了一个位域结构体类型,然后取GPIOA的ODR寄存器地址作为这个结构体的指针,取名叫GPIOA_add,然后操作这个指针就好了~
没来得及严格地测试,只是大概试了一下,可以~就先写下来了,后续再实验验证。这里我就提出了一个观点,这个方式仔细想想不就是和STM32里面的寄存器封装方法一样吗?我们看了这么多,写了这么多,为什么就没有想到这样做?这是个值得思考的问题,我认为,是我们没有理解C语言的本质,就也是我们只是背熟了那几个语句和关键字,却没有看透这门语言的本质原理。