历史上的今天
返回首页

历史上的今天

今天是:2024年09月25日(星期三)

正在发生

2019年09月25日 | 从零开始一起学stm32(二)---库函数GPIO口

2019-09-25 来源:eefocus

1.回顾:

ARM---Cortex-M3---STM32


1.CPU的总线架构:

指令总线,数据总线,系统总线;


指令总线:ROM--FLASH ---512K


数据总线:SRAM---64K;


系统总线: 通过系统总线去访问APB1/APB2上的外设


2.时钟树:

两个内部时钟源和两个外部时钟源


SYSCLK/ APB1/APB2


3.GPIO口

分7组---A B C D E F G


每组16个:0~15


端口:GPIOA--A端口


管脚:PA0---A端口的第0个管脚


GPIO口作用:输入输出管脚---只能输入输出高低电平


普通的I/O口:我们需要在使用之前进行配置:


如果作为输出管脚,就要配置为输出模式;


如果作为输入管脚,就要配置为输入模式;


输入输出规定:相对于CPU来说的!


目的:点亮一个LED灯;


1.灯和CPU如何相连---看原理图;


原理图---使用哪些管脚,知道所用时钟;


分析原理图,得到管脚状态--模式


打开时钟、配置管脚信息

应用:亮灯、灭灯操作

时钟---PA5

管脚信息--模式:输出--寄存器:GPIOA_CRL

点灯灭灯操作---GPIOA_ODR  1--灭灯  0---亮灯

2.库函数操作GPIO口


为什么使用库函数?


库函数--对寄存器操作的封装,做成需要的功能函数


寄存器--寄存器是CPU的组成部分,操作寄存器就相当于直接操作CPU


1..初始化---驱动:


打开时钟:Main--conf.h--rcc.h--APB2;-总线架构

配置管脚信息:管脚信息--模式--速度

Main---conf.h--gpio.h---gpio_init();


2.应用


高低电平



作业:

1.流水灯


2.闪烁灯


3.灯全亮


4.灯全灭


5.蜂鸣器+延时


6.按键控制LED灯、控制蜂鸣器


    1.让2个按键控制1个灯和蜂鸣器


     2.让4个按键控制4个灯的亮灭 


结构体类型:定义结构体变量;


结构体变量:保存不同类型的数据---是这个变量的属性


可以把结构体变量看成一个学生---成员变量就是这个学生的信息


库函数操作GPIO口


库函数:STM32提供的


库函数 --就是对寄存器操作的一些功能进行封装,做成一个个容易理解的函数;


调用别人的函数:


需要知道:1.函数的功能;


                  2.函数的参数及参数的意义--几个参数,参数类型


                  3.返回值--是否有返回值--函数的类型


//点亮一个led灯步骤


1 查看原理图:


2 开启相应的外设时钟


    1.配置GPIO口


    2.写应用:点亮或者熄灭led灯!


第一步:


打开时钟---时钟使能


第二步:


查看原理图:


1.所用的管脚


2.是输入还是输出模式


操作配置寄存器--配置为输入还是输出模式;


对数据寄存器进行操作---高电平还是低电平!


位操作:


对某一位,或者某几位进行操作,而不影响其他位的操作


4.模块化编程:


函数三步骤:定义、声明、调用


在模块.c中定义,在模块.h中声明,在main.c中调用;


每个模块都要有一个.C文件和对应的.h文件;

.C里面写的是变量的定义和函数的定义;

.h文件里面保存的是函数的声明,结构体定义;

保存的.c文件必须从user/API里面把.c文件添加到你的工程

掌握extern 和static的用法;

extern --声明外部变量:

用法:


1.声明一个外部变量、外部函数


 --在main.c定义一个变量int num=10;


如果在led.c里面想要使用这个变量,extern int num;


2.声明一个外部函数;


在main.c里面定义一个Delay函数,在led.c里面想要使用这个函数,


只需要在led.c里面声明这个函数---extern void Delay();


Static--声明一个静态变量、静态函数


用法:


1.声明一个局部变量---变成静态变量


2.声明一个全局变量---这个变量只能在本.c使,其他.c不能使用;


3.声明一个静态函数---这个函数只能在本.c使用,其他.c不能使用;

推荐阅读

史海拾趣

Future Designs, Inc. (FDI)公司的发展小趣事

为了进一步提升公司的竞争力和市场份额,FDI实施了国际化战略。他们积极拓展海外市场,与多个国家和地区的客户建立了合作关系。通过参加国际展会、设立海外分支机构等方式,FDI不断提升品牌知名度和影响力。同时,他们还加强与当地供应商和合作伙伴的合作,共同开拓市场,实现互利共赢。这些努力使得FDI在全球电子行业中的地位日益稳固。

ACL staticide公司的发展小趣事

随着市场需求的不断变化,FDI不断投入研发,致力于技术创新。他们不仅优化了现有的GUI产品,还将其应用范围扩大到了更多领域,如医疗设备、工业自动化、汽车电子等。同时,FDI还拓展了产品线,推出了光电元件、射频/IF和RFID、编程器、开发系统以及集成电路(IC)等一系列产品。这些创新举措使得FDI在电子行业中的影响力不断扩大,市场份额逐步提升。

DALLAS公司的发展小趣事

Dallas公司一直将技术研发作为公司发展的核心驱动力。公司投入大量资源用于半导体领域的技术研发,不断探索新的技术方向和产品应用。这种持续的技术研发投入使得Dallas公司能够不断推出具有创新性和竞争力的产品,保持了在市场中的领先地位。

天钰(FITIPOWER)公司的发展小趣事

Dallas公司一直将技术研发作为公司发展的核心驱动力。公司投入大量资源用于半导体领域的技术研发,不断探索新的技术方向和产品应用。这种持续的技术研发投入使得Dallas公司能够不断推出具有创新性和竞争力的产品,保持了在市场中的领先地位。

台湾第一电阻(Firstohm)公司的发展小趣事
电冰箱不制冷可能由多种原因引起,包括电源问题、温度设置不当、制冷系统故障等。首先,检查电源插头是否牢固插入插座,并确保插座有电。其次,检查温度设置是否正确,冷藏室温度一般应设置在2-4摄氏度,冷冻室温度应设置在-18摄氏度左右。如果以上均正常,可能是制冷系统出现故障,如压缩机故障、制冷剂泄漏等,需要请专业人员进行检查和维修。
AUK Contractors Co Ltd公司的发展小趣事

AUK Contractors Co Ltd成立之初,电子市场正处于技术革新的热潮中。公司凭借对新技术敏锐的洞察力,成功研发出一款具有颠覆性的电路板设计,显著提高了电子设备的性能和稳定性。这一创新不仅赢得了客户的广泛认可,还为公司赢得了多个重要合同,从而奠定了在电子行业中的坚实地位。

问答坊 | AI 解惑

dsp的初始化问题

void InitSysCtrl(void) { Uint16 i; EALLOW;// 该指令设置状态寄存器ST1中的EALLOW为,作用为对访问仿真空间和其他保护积存器使能。 // On TMX samples, to get the best performance of on chip RAM blocks M0/M1/L0/L1/H0 interna ...…

查看全部问答>

微控制器破解秘籍

本文介绍了众多的破解微控制器(MCU:Micro Control Unit)和智能卡(Smartcard)的方法: 包括已知的非侵入式攻击(Non-invasive attacks),如功耗分析(Power analysis)和噪声干扰 (Glitching);以及侵入式攻击(Invasive attacks),如反向工程(Reverse ...…

查看全部问答>

Doulos ASIC Design and FPGA Design VHDL源代码

replyreload += \',\' + 280037;Timson,如果您要查看本帖隐藏内容请回复…

查看全部问答>

电子测量知识汇总

  1.广义的电子测量是指利用电子技术进行的测量。非电量的测量属于广义电子测量的内容,可以通过传感器将非电量变换为电量后进行测量。   2.狭义的电子测量是指对电子技术中各种电参量所进行的测量。   狭义电子测量的内容主要包括:    ...…

查看全部问答>

今天是三八节,大家都是怎么为女同事庆祝的

一年就这么一个三八节,也就是只有这么一天属于女人。另外的364天都属于男人,在这一天,大家是不是应该对女同事们好一点呢。尤其是不能放假、和男生一样坚守在工作岗位的女同事。 EEWORLD女生放假半天,男生照常上班,有男生想要一起放假,被无情 ...…

查看全部问答>

如何区分电平的高低?

以3.3V的工作电压为例,电压在什么范围内,我们认为它是输出低电平?什么范围内输出是高电平?请高手指点,谢谢!…

查看全部问答>

请问如何使用snmp给一个表添加、修改记录?

现设计一个表test,有字段 aindex(int类型,索引列,只读不可写),b,c,evl(status类型,可读写),现在通过snmpset命令进行添加记录(可有其它命令代替?),按照我的理解,先给evl(按列顺序的第aindex+1个记录)设置一个int值5,然后再用snmpset ...…

查看全部问答>

请教高手写注册表问题

在驱动模式下需要向HKEY_CURRENT_USER里的健写值。 有没有具体的一些代码。谢谢各位高手。小弟刚接触DDK。…

查看全部问答>

ST推的STM32F100超值系列和STM8是什么关系

                                 如果100系列价格够低,是否不用考虑使用STM8了…

查看全部问答>

【MSP430共享】直流屏电源监控与绝缘检测系统设计

基于直流屏的电源监控系统的各模块功能划分与采样通道多等特点, 设计了以MS P 4 3 0单片机为控制核心, C P L D扩展端口的控制系统。比较分析了几种直流系统常用的绝缘检测方法, 采用乒乓式变电桥测量法,实现了接地电阻的准确在线测量。现场运行 ...…

查看全部问答>