初试stm32及keil要知道的一些事

//新建工程

1.组 USER 下面存放的主要是用户代码。 system_stm32f10x.c 里面主要是系统时钟初始化函数 SystemInit 相关的定义,一般情况下文件用户不需要修改。 stm32f10x_it.c 里面存放的是部分中断服务函数。 main.c函数主要存放的是主函数。

2.组 HARDWARE 下面存放的是每个实验的外设驱动代码,他的实现是通过调用 FWLib下面的固件库文件实现的,比如 led.c 里面调用stm32f10x_gpio.c 里面的函数对 led 进行初始化,这里面的函数是讲解的重点。后面的实验中可以看到会引入多个源文件。

3.组 SYSTEM 是 ALIENTEK 提供的共用代码, 包含 Systick 延时函数, IO 口位带操作以及串口相关函数。

4.组 CORE 下面存放的是固件库必须的核心文件和启动文件。这里面的文件用户不需要修改。

5.组 FWLib 下面存放的是 ST 官方提供的外设驱动固件库文件,这些文件大家可以根据工程需要来添加和删除。每个 stm32f10x_ppp.c 源文件对应一个 stm32f10x_ppp.h 头文件。

//有关GPIO

GPIO是什么?

GPIO(general porpose intput output):通用输入输出端口的简称。可以通过软件控制其输出和输入。stm32芯片的GPIO引脚与外部设备连接起来,从而实现与外部通信,控制以及数据采集的功能。

GPIO的工作模式

通过 GPIO 内部的结构关系,决定了 GPIO 可以配置成以下几种模式。

1、输入模式(模拟、上拉、下拉、浮空)

在输入模式时,施密特触发器打开,输出被禁止。

可通过输入数据寄存器GPIOx_IDR 读取 I/O 状态。

输入模式可以配置为模拟、上拉、下拉以及浮空模式。上拉和下拉输入很好理解,默认的电平由上拉或者下拉决定。

浮空输入的电平是不确定的,完全由外部的输入决定,一般接按键的时候可以使用这个模式。

模拟输入则用于 ADC 采集。

2、输出模式(推挽/ / 开漏)

在输出模式中,推挽模式时双 MOS 管以推挽方式工作,输出数据寄存器GPIOx_ODR 可控制 I/O 输出高低电平。

开漏模式时,只有 N-MOS 管工作,输出数据寄存器可控制 I/O 输出高阻态或低电平。

输出速度可配置,有2MHz\25MHz\50MHz 的选项。此处的输出速度即 I/O 支持的高低电平状态最高切换频率,支持的频率越高,功耗越大,如果功耗要求不严格,把速度设置成最大即可。

在输出模式时,施密特触发器是打开的,即输入可用,通过输入数据寄存器 GPIOx_IDR 可读取 I/O 的实际状态。

3、复用功能(推挽/ / 开漏)

复用功能模式中,输出使能,输出速度可配置,可工作在开漏及推挽模式,但是输出信号源于其它外设,输出数据寄存器 GPIOx_ODR 无效;输入可用,通过输入数据寄存器可获取 I/O 实际状态,但一般直接用外设的寄存器来获取该数据信号。

4、模拟输入输出(上下拉无影响)

模拟输入输出模式中,双 MOS 管结构被关闭,施密特触发器停用,上/下拉也被禁止。其它外设通过模拟通道进行输入输出。通过对 GPIO 寄存器写入不同的参数,就可以改变 GPIO 的应用模式,再强调一下,要了解具体寄存器时一定要查阅《STM32F1xx 参考手册》中对应外设的寄存器说明。在 GPIO 外设中,通过设置“端口配置寄存器 GPIOx_CRL 和 GPIOx_CRH”可配置 GPIO 的工作模式和输出速度。CRH 控制端口的高八位,CRL 控制端口的低八位。

补充内容

//GPIO就是芯片的引脚(芯片上的引脚有些不是GPIO,只有一部分是),作为GPIO的这类引脚,他的功能和特点是可以被编程控制它的工作模式,也可以编程控制他的电压高低等。

通过之前的分析我们知道,我们设计电路时就把LED接在了一个GPIO上,这样我们就可以通过编程控制GPIO的模式和输入输出值来操控LED亮还是灭;如果你当时设计电路时把LED接在非GPIO上那就不可能了。

//LED点亮的要求是:正极和负极之间有正向电压差。

//在开发板上如何为LED制造这个电压差让它点亮呢?

因为正极已经定了(3.3V),而负极接在MCU引脚上,可以通过MCU中编程来控制负极的电压值,因此我们可以通过程序控制负极输出低电平(0V),这样在正负极上就有了压差,LED即可点亮。

//RCC:它是控制时钟的,STM32在使用时必须先配置时钟,也就是给单片机一个节拍,让单片机按照这个节拍规律来工作,是非常重要的外设。

//时钟

时钟系统是STM32中一个重要的组成部分,他就是CPU的脉搏,就像人的心跳一样。STM32单片机的时钟不像51单片机只有一个系统时钟,STM32有多个时钟源。STM32为什么要有多个时钟源呢?STM32本身比较复杂,外设非常多,但是并不是所有的外设都需要系统时钟这么高的频率,如看门狗以及RTC只需要十几k的时钟电路即可。同一个电路,时钟越快功耗越大,同时抗电磁干扰能力也会越弱,所有对于较为复杂的MCU一般都是采用多时钟源的方法来解决这些问题。

时钟:单片机的心脏,所有的外设的运作都需要时钟供能。

时钟周期:又称为振荡周期,可以简单理解为传输一个0或1所需要的时间

指令周期:执行一条指令(如 MOV A, #34H)所需要的时间。对于不同类型的指令,指令周期长度可能不同。

机器周期:执行一个动作的时间周期。如:执行一个指令需要”取指令并译码“、”执行操作数“两个动作

//MCU

微 控 制 器 (Micro-Controller Unit , MCU) , 俗 称 单 片 机 。 之 所 以 称 之 为 单 片 机 (Single ChipMicrocomputer), 是因为不同于其它处理器,它将CPU、 RAM(随机存储器)、 ROM(只读存储器)、 I/O、中断系统、定时器等各种功能外设资源集中到一个芯片上。 这个芯片就是一个完整的微型计算机,只需要供电或加上极少的外围电路即可工作。

常见的MCU有80C51系列单片机、 Atmel公司的AVR系列单片机、 Microchip公司的PIC系列单片机、 TI公司的MSP430系列单片机、 ST公司的STM32系列单片机、 NXP公司的LPC1700系列单片机。早期的MCU主要是8位,后面发展出16位,再到现在主流的已经是32位。此外,主频不断提高、 ROM不断增大、外设不断增多,单片机的应用领域和场合越来越大

//用多少功能就使能多少功能,对每个外设的时钟都设置了开关,让用户可以精确地控制,关闭不需要的设备,达到节省供电的目的。如果不用的就完全关闭,尽可能降低芯片功耗,所以就出现了这么多的时钟和IO配置。说白了,时钟的功能就好像是一个小开关,你要用什么寄存器就先对应的打开开关,即:使能对应的时钟。

//什么是GPIO,为什么要使能GPIO

Gpio,通用输入输出端口,只有配置了GPIO口才能使用这个io口

//什么是时钟,为什么要使能时钟

时钟:单片机的心脏,所有的外设的运作都需要时钟供能,RCC:它是控制时钟的,STM32在使用时必须先配置时钟,也就是给单片机一个节拍,让单片机按照这个节拍规律来工作,是非常重要的外设。

//外设

在早期就是cpu以外的外部设备,但是后面led控制器之类的都移到了和cpu同一个芯片上,所以现在就分为了内部外设和外部外设。

   //存储器

存储单元的集合,用来存储程序和各种数据信息的记忆部件

//寄存器

中央处理器的重要组成成分,寄存器是有限存贮容量的高速存贮部件,它们可用来暂存指令、数据和地址。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值