找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 8752|回复: 23
打印 上一主题 下一主题
收起左侧

stm32每次都必须要一个一个地配置IO口?纯新人问一道问题

  [复制链接]
跳转到指定楼层
楼主
ID:289777 发表于 2018-11-26 08:22 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
30黑币
举个最简单的例子,点亮LED灯,LED与IO口 B pin5 引脚相连
我想让LED亮
不能在主函数里单独写一个
GPIO_ResetBits(GPIOB,GPIO_Pin_5);
直接拉低引脚5,让灯亮

而是必须在之前写一堆函数比如:
GPIO_InitTypeDef  GPIO_InitStructure;
         
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB|RCC_APB2Periph_GPIOE, ENABLE);         //使能PB,PE端口时钟
        
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5;                                 //LED0-->PB.5 端口配置
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;                  //推挽输出
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;                 //IO口速度为50MHz
GPIO_Init(GPIOB, &GPIO_InitStructure);                                         //根据设定参数初始化GPIOB.5
GPIO_SetBits(GPIOB,GPIO_Pin_5);                                                 //PB.5 输出高


上面这么多函数每次写新程序都要写是吗?
不能直接在主函数里写GPIO_ResetBits 或GPIO_setBits来直接决定引脚电平吗?
就像51单片机直接给1或0直接决定高低电平

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

来自 2#
ID:388197 发表于 2019-7-16 01:41 | 只看该作者
这个过程免不了的,不过也就是多复制一两次的事而已,也可以把这些全丢到一个函数里去,直接调用这个函数即可.每次用就修改下函数里的代码..就相当于51你开头SBIT XXX = P1^0....对于库函数的调用,最好写下注释或者DEFINE一下.比如
#define Led_Mie GPIO_SetBits(GPIOA,GPIO_Pin_0)
#define Led_Liang  GPIO_ResetBits(GPIOA,GPIO_Pin_0)

后面写代码直接用Led_Mie   Led_Liang 就行了.写代码尽量每个函数尽量简短,函数数量可以多,命名时注意可读性,不要学老谭的书上什么fun1 fun2之类的.多数刚从51转过来学32的人都觉得32配置起来很啰嗦和麻烦,这是正常的,因为这样的好处还没感觉到而已,时间长习惯就好了.

32的库可读性很强也很规范,平时阅读一下,对自己的代码水平也是很有帮助的.
回复

使用道具 举报

板凳
ID:94031 发表于 2018-11-26 09:18 | 只看该作者
stm32确实每次都必须配置IO口,这样做可带来的好处是,一个IO口可以根据需要有多种用途,不用的不送电节能。虽然麻烦,好处多多。
回复

使用道具 举报

地板
ID:104472 发表于 2018-11-26 09:20 | 只看该作者
可以做个。c和。h文件专门配置这个
回复

使用道具 举报

5#
ID:433223 发表于 2018-11-26 09:45 来自手机 | 只看该作者
不能啊,必须先使能时钟
回复

使用道具 举报

6#
ID:300414 发表于 2018-11-26 10:46 | 只看该作者
STM32的IO口功能比51多很多,根据不同需要可以复用配置成不同的功能,在使用前,单片机需要知道你将该IO口配置成什么功能,因此在每次对该IO进行操作前,必须要对IO进行配置后才能进行操作。
回复

使用道具 举报

7#
ID:289777 发表于 2018-11-26 13:22 | 只看该作者
xuyaqi 发表于 2018-11-26 09:18
stm32确实每次都必须配置IO口,这样做可带来的好处是,一个IO口可以根据需要有多种用途,不用的不送电节能 ...

能简单说说stm32 的四个输入和4个输出的模式的区别吗,网上的好啰嗦啊,能通俗易懂的说一下吗,哪几个常用?
回复

使用道具 举报

8#
ID:289777 发表于 2018-11-26 13:22 | 只看该作者
sclzgl 发表于 2018-11-26 10:46
STM32的IO口功能比51多很多,根据不同需要可以复用配置成不同的功能,在使用前,单片机需要知道你将该IO口 ...

能简单说说stm32 的四个输入和4个输出的模式的区别吗,网上的好啰嗦啊,能通俗易懂的说一下吗,哪几个常用?
回复

使用道具 举报

9#
ID:429166 发表于 2018-11-26 13:41 | 只看该作者
是的,必须这么做
回复

使用道具 举报

10#
ID:433533 发表于 2018-11-26 16:27 | 只看该作者
你可以不用库函数写,直接写入寄存器就行
回复

使用道具 举报

11#
ID:433680 发表于 2018-11-26 19:39 | 只看该作者
是的这是必需的,stm32 必需先规规划 RCC (CLOCK), 接着定义 GPIO 的应用式, 建义参考 ST STM32 的库函数及文件,
回复

使用道具 举报

12#
ID:433680 发表于 2018-11-26 19:40 | 只看该作者
是的这是必需的,stm32 必需先规规划 RCC (CLOCK), 接着定义 GPIO 的应用式,
建义参考 ST STM32 的库函数及文件,
回复

使用道具 举报

13#
ID:261175 发表于 2018-11-26 20:15 | 只看该作者
不能,stm32为了耗能低,还有一些外设没有必要用到那么高的频率,不像51很多东西都是固定的,因为你要是用这个引脚当然要初始化,给它一个指令配置它,不然它怎么知道你的需求是什么,只要一次初始化以后后面的程序使用就不需要初始化了,可以直接用那些引脚拉低拉高函数,刚开始学总是会有很多疑问,先坚持教程看完就会对它有个整体的理解,也就会接受这个机制
回复

使用道具 举报

14#
ID:429899 发表于 2018-11-26 21:07 | 只看该作者
是的,每次都需要的
回复

使用道具 举报

15#
ID:19680 发表于 2018-11-26 21:27 | 只看该作者
如果使用库函数的方式开发如同你写的方式,是要一个一个配置io的,如果用寄存器的方式写程序,只需要对相关io相关寄存器写入数值就行了,几行代码就搞定了,但是如果是初学者我觉得还是一个一个配置吧,用寄存器方式开发就是为了节省rom,一般情况下stm32的rom还是相当够用的
回复

使用道具 举报

16#
ID:433764 发表于 2018-11-26 21:57 | 只看该作者
st官方工具 stm32cubeMX 了解一下,从此基本不用手动配置了,配套使用hal库,写完程序后找到对效率影响大的地方换成LL库,可以同时保证开发效率和运行效率。
回复

使用道具 举报

17#
ID:434171 发表于 2018-11-27 14:15 | 只看该作者
看你自己想要做什么,可以自己写个函数,以后直接调用,送参数进去就可以了
回复

使用道具 举报

18#
ID:100415 发表于 2018-11-27 17:04 | 只看该作者
每次都必须要配置的,但是我们可以做一些常用的配置文件,封装成一个.C与.h文件,模块化的调用就可以了,也很方便的
回复

使用道具 举报

19#
ID:100415 发表于 2018-11-27 17:05 | 只看该作者
需要配置的,一些常用的写成配置文件,封装起来,模块化的方式,以后直接调用了
回复

使用道具 举报

20#
ID:246251 发表于 2018-12-1 10:15 | 只看该作者
寄存器操作没这么多事
回复

使用道具 举报

21#
ID:433935 发表于 2018-12-2 09:04 | 只看该作者
STM32不像51一样可以直接引用,不过如果你已经经定义了这个函数便可以了。如果你嫌麻烦  你可以复制呀。
回复

使用道具 举报

22#
ID:519876 发表于 2019-7-15 08:19 | 只看该作者
必须每次都要写,因为32单片机的IO大部分有很多其他功能,需要配置才能正常使用
回复

使用道具 举报

23#
ID:583948 发表于 2019-7-15 17:19 | 只看该作者
这就是stm32比51麻烦一点的地方,不过可以拷贝库文件里面的例程,这样只需修改对应的端口或者值就可以了。
回复

使用道具 举报

24#
ID:73666 发表于 2019-7-16 10:42 | 只看该作者
请使用STM32CubeMX软件图形化配置外设,软件可自动生成初始代码。推荐使用最新的HAL库。
回复

使用道具 举报

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

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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