数码之家

 找回密码
 立即注册
搜索
查看: 2603|回复: 5

帮助入手stm32f1,GPIO寄存器位带区宏定义以及GPIO初始化的宏定义

[复制链接]
发表于 2019-6-14 03:51:49 | 显示全部楼层 |阅读模式

爱科技、爱创意、爱折腾、爱极致,我们都是技术控

您需要 登录 才可以下载或查看,没有账号?立即注册

x
刚刚开始入手STM32,觉得GPIO库函数操作着实凌乱。
闲来无事(划重点),我把GPIO用到的寄存器位带别名地址都定义了下来,以简洁代码搭建。
(字数限制,复制不下来......)
文件完整上传第一部分其实没什么,就是1000行的位带别名区地址宏定义
第二部分,是用一个符号设置单个GPIO的宏定义,占了差不多1600行。
例:

                               
登录/注册后可看大图

它们的定义(包括了IO口的所有配置方式)

                               
登录/注册后可看大图

一个定义实际使用四个赋值语句,相对于库函数,占用空间少(可能是吧)而且代码简洁易读。
代码调试是没问题的
但因为我是刚刚入手stm32,如有考虑不周,请不吝指正。


GPIO_F1.zip

16.05 KB, 下载次数: 3, 下载积分: 家元 -55

打赏

参与人数 1家元 +20 收起 理由
q562379863 + 20 優秀文章

查看全部打赏

发表于 2019-6-15 18:04:17 | 显示全部楼层
楼主搞复杂了

其实只要2个宏定义就够了

#define bitbang(addr,num)  *((volatile unsigned long *)((addr&0xf0000000)+0x2000000+((addr&0xfffff)<<5)+(num<<2)))                                 
#define gpi(a,b)                bitbang(GPIO##a##_BASE+0X08,b)
#define gpo(a,b)        bitbang(GPIO##a##_BASE+0X0c,b)

在使用的时候
#define xxx                        gpi(C,6)
#define yyy                        gpo(C,6)

然后就和c51一样直接操作了

打赏

参与人数 1家元 +20 收起 理由
q562379863 + 20 精彩回帖

查看全部打赏

回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-6-15 19:52:42 | 显示全部楼层
decai 发表于 2019-6-15 18:04
楼主搞复杂了

其实只要2个宏定义就够了

这个头文件主要是为了方便初学STM32而出现的,我不想用位带的算法函数。
后面还有一部分是GPIO初始化的宏定义,也是直接操作位带的。
主要目的是使得代码都是直接源于寄存器。
但是学习一段时间以后,你所说的方法就可以使用了,而且会是比较方便的。(上面的话就当做没听见就行)
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-6-17 20:46:41 | 显示全部楼层
下面是更新以后的,我以后是打算搞定所有STM32的寄存器

RES_F1.zip

37.04 KB, 下载次数: 3, 下载积分: 家元 -55

回复 支持 反对

使用道具 举报

发表于 2019-6-17 21:10:19 | 显示全部楼层
本帖最后由 netbeetle 于 2019-6-17 21:12 编辑

用这个头文件就可以了,很方便。然后只要PAout(3)=1就是PA3高电平了。

GPIOLIKE51.rar

674 Bytes, 下载次数: 2, 下载积分: 家元 -55

回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-6-18 01:03:24 | 显示全部楼层
netbeetle 发表于 2019-6-17 21:10
用这个头文件就可以了,很方便。然后只要PAout(3)=1就是PA3高电平了。

知道这些方式都是最简单的办法,不过我计划是做一个宏函数与定义头文件。(尚未完成)
它包括了STM32所有寄存器的配置语句,目标就是可以代替官方的库函数头文件,可以使代码容易阅读而且不失速度与简洁。
现在我就是在研究官方头文件,将可能用到的库函数都简化并全部宏定义了。而且这个头文件里面是加了注释的。
为了让这个头文件内容体现方面简单粗暴,让初学者容易阅读,就不适合用这些代码了...(你也知道官方头文件虽然简单,但是里面定义都是跳来跳去的,还是英文。我着实不想用那种风格。)
回复 支持 反对

使用道具 举报

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

本版积分规则

APP|手机版|小黑屋|关于我们|联系我们|法律条款|技术知识分享平台

闽公网安备35020502000485号

闽ICP备2021002735号-2

GMT+8, 2024-4-26 23:39 , Processed in 0.265200 second(s), 14 queries , Redis On.

Powered by Discuz!

© 2006-2023 smzj.net

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