野火电子论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 26902|回复: 3

关于407开发板第9章视频第二节的一些疑问

[复制链接]
发表于 2021-7-13 10:14:06 | 显示全部楼层 |阅读模式
先说一下我对于单片机的学习背景,我在大学期间上过单片机课程,用的AT89C51的板子,但是应该是没有系统的学习过C语言的,因为视频中说的指针这些完全没学过,但是大概意思能够懂。之前几章课程也算磕磕绊绊能听下来,但是到第九章第二节的时候我发现对一些函数定义之后是如何执行的完全没看懂原理,如图所示,我大概能理解这个红色下划线部分应该是定义一个置位函数,就好比我们用51时候的软件定时一个意思,之后只需要直接调用即可,然后黄色下划线就是C语言中的指针操作吧,个人理解是明确这个值是指向一个外设或者说器件的地址,而不是别的。然后蓝色框中就是我不太能理解的部分了,这个GPIO_pin 在我学习过51单片机之后感觉这是声明一个指定端口的意思,就好比P3.0=0xff这样,只不过既没有说他的值,也没有说他的具体端口是哪一个,那么这个GPIO_Pin到底是什么用呢?包括下面的GPIOx->BSRRL=GPIO_Pin,我没有很看得懂,特别是视频教程中火哥那个头文件定义错了之后,我更看不懂了,感觉不连贯了已经,请问有没有大佬能用简单一点的语言给我这只学过51的学渣再详细讲一下
1.png
回复

使用道具 举报

发表于 2021-7-13 14:04:58 | 显示全部楼层
楼主对GPIO_SetBits函数和GPIO_TypeDef基本上是对的,但GPIO_Pin是指 Pin引脚对应的寄存器位,比如Pin0 就对应着位0,值就是0x0000 0001
具体的:
GPIO_SetBits函数的作用是将(32位)寄存器的某个或多个位置1
GPIO_TypeDef * 类型是一个指向结构体的指针类型,这个结构体呢其实是定义GPIOx端口寄存器的结构,结构体中的每个成员都对应着一个寄存器
这方面可以参考结构体的内存分布和STM32的寄存器地址分布

图中 GPIOx->BSSRRL = GPIO_Pin; 的意思是:将GPIOx 端口的寄存器BSSRRL中的GPIO_Pin对应的位置1
GPIO 这个模块(或者说CPU外设)有没有 BSSRRL 这个寄存器,请查看STM32编程参考手册 GPIO章节
回复 支持 反对

使用道具 举报

发表于 2021-7-14 20:10:42 | 显示全部楼层
简单一点理解,函数里面的赋值语句就是类似于51的 P2=0x88一样,就是将P2_7和P2_3都置位,GPIO_PIN就是对应的管脚如果每组端口的0~7,只不过STM32是0~15。形参的结构体指针是因为,51的IO结构体简单,用一个寄存器就可以了,但是STM32的IO比较复杂,因此需要更多的寄存器来进行设置,寄存器都有不同的功能,要了解这个结构体,你需要查看STM32f4的参考手册,GPIO章节,看GPIO寄存器映像,然后和GPIO_TypeDef结构体的定义对比,你就能明白,GPIO_TypeDef结构体和GPIO的硬件寄存器结的构体是一样的,这里就相当于将GPIOx的值转换成了一个GPIO_TypeDef的结构体,GPIOx的地址就指向这个结构体的首地址(简单理解一下)。

个人建议,楼主需要补充一下指针和结构体方面的知识,这个在C语言里面是精髓所在。在以后的C编程里面可以说是无处不在。另外火哥的资料一般前面是寄存器方式,后面会有库方式,如果你的C语言水平够,可以直接从寄存器开始高,不够的情况下建议您报一本C语言,然后找到用库的项目,从main.c一步一步的搞清楚一些C语言上的问题会比较好。这其中能会设置arm架构的资料STM32数据手册,STM32参考手册等资料,火哥都有提供。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-7-16 09:02:28 | 显示全部楼层
Richar 发表于 2021-7-14 20:10
简单一点理解,函数里面的赋值语句就是类似于51的 P2=0x88一样,就是将P2_7和P2_3都置位,GPIO_PIN就是对应 ...

确实,我感觉我们虽然学过51,但是C语言方面可以说是缺失了很多基础知识的,已经在补习了,很多火哥用的指令在51中完全没见过,更不用说指针这种概念了
回复 支持 反对

使用道具 举报

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

本版积分规则

联系站长|手机版|野火电子官网|野火淘宝店铺|野火电子论坛 ( 粤ICP备14069197号 ) 大学生ARM嵌入式2群

GMT+8, 2024-9-21 17:42 , Processed in 0.056591 second(s), 27 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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