STM32F103RCT6学习笔记

一、环境搭建与基础操作

1.安装下载Kevil以及其他程序

2.步骤1:Keil软件标准化设置

编码格式:Chinese GB2312(Simplified)(防止乱码)

tab字符为2,展示行数

步骤2:新建存放工程的文件夹

步骤3:复制和新建文件夹

复制安装包的基准工程的文件分组配置到文件夹中,然后并列新建个project文件夹。

步骤4:新建一个工程

步骤5:选择对应的STM32型号

STM32F103RCT6

步骤6:关闭Manage Run-Time Environment

步骤7:删除原有分组并新建分组

步骤8:向分组添加文件

这一步骤和第11步必须记住,后面会用到,就是添加新功能需要用到

步骤9:勾选UseMicroLIB

使用printf需要勾选。

  1. 节省代码空间:MicroLIB是Keil提供的一种优化的C标准库替代方案。与默认的C标准库(如GNU C库或ARM C库)相比,MicroLIB采用了高度优化技术,可以显著减小编译生成的可执行文件的代码尺寸。这在嵌入式系统开发中尤为重要,因为嵌入式系统通常需要在有限的硬件资源上运行。
  2. 与深层嵌入式应用程序配合使用:MicroLIB旨在与需要装入到极少量内存中的深层嵌入式应用程序配合使用。这些应用程序通常不在操作系统中运行,因此需要尽可能减小代码大小以节省内存。
  3. 优化特定功能:虽然MicroLIB的功能比缺省C库少,并且可能不具备某些ISO C特性,但它经过了高度优化,以提供在嵌入式系统中常见的特定功能。因此,对于需要这些功能的嵌入式应用程序来说,MicroLIB是一个很好的选择。

步骤10:勾选Create HEX File

步骤11:添加宏定义和头文件路径

确保算选文件夹已经在同个文件夹中和project并列

步骤12:程序编译

步骤13:通过ST-Link下载程序

步骤14:安装CH340驱动

步骤15:通过mcuisp下载程序

步骤16:通过串口助手查看接收数据

步骤17:查看STM32核心板工作状态

二、认识STM32工程

1. STM32系列微控制器可以开发各种产品,比如智能小车、无人机、电子体温枪、电子血压计、血糖仪、胎心多普勒、监护仪、呼吸机、智能楼宇控制系统、汽车控制系统等。       

选用STM32微控制器作为载体,核心板上的主控芯片就是封装为LQFP64STM32F103RCT6芯片,最高主频可达72MHz

2. STM32核心板配件:              

①JTAG/SWD仿真-下载器            ②通信-下载模块            ③OLED显示屏

3.原理图

4.通过Keil生成的映像文件(.axf或.elf)或二进制/十六进制文件(.bin或.hex)可以使用不同的工具下载到STM32芯片上的Flash,上电后,系统会将Flash中的文件加载到片上SRAM,运行整个代码。使用Keil将.axf通过ST-Link下载到STM32芯片上的Flash。

5.

三、串口电子钟

 RunClock模块有6个API函数,分别是InitRunClock、RunClockPer2Ms、PauseClock、GetTimeVal、SetTimeVal和DispTime。

四、GPIO

  1. GPIO的工作模式

GPIO(通用输入输出)有多种工作模式,主要包括:

  • 上拉输入:IO口在无输入的情况下,保持高电平。
  • 下拉输入:IO口在无输入的情况下,保持低电平。
  • 浮空输入:IO的电平状态由外部输入决定,如果在该引脚悬空的情况下,读取该端口的电平是不确定的。
  • 模拟输入:输入信号不经施密特触发器直接接入,输入信号为模拟量而非数字量。
  • 推挽输出:可以输出高、低电平,连接数字器件。推挽结构通常指两个三极管分别受两个互补信号的控制,总是在一个三极管导通的时候另一个截止。
  • 开漏输出:输出端相当于三极管的集电极,要得到高电平状态需要上拉电阻才行。

此外,根据应用的不同,还可能存在其他的工作模式,如复用功能推挽输出、复用功能开漏输出等。

  1. GPIO的寄存器

GPIO有多个寄存器用于控制其功能和状态,其中CRL和CRH(或称为CRL、CRH、CRM等,具体名称可能因芯片型号而异)是端口配置寄存器,用于配置GPIO端口的模式和速度。这些寄存器中的每一位或每几位通常对应一个GPIO引脚,通过配置这些位可以设置引脚的模式(输入、输出、复用等)和速度(如10MHz、2MHz、50MHz等)。

  1. 计算GPIOE->BRR的绝对地址

GPIOE->BRR的绝对地址取决于具体的硬件平台和内存映射。通常,您需要查阅相关硬件的参考手册或数据手册来获取这些信息。

  1. GPIO_Init函数的作用

GPIO_Init函数用于初始化GPIO引脚,配置其工作模式和参数。它通过设置特定的寄存器值来实现对GPIO引脚的灵活控制,以适应不同的应用场景。

该函数通常会操作GPIO的端口模式寄存器(如GPIOx_MODER)、端口输出数据寄存器(如GPIOx_ODR)、端口置位/复位寄存器(如GPIOx_BSRR)等。

  1. 使能GPIOA端口时钟

要使能GPIOA端口时钟,同时保持其他模块时钟状态不变,您可以通过设置RCC(重置和时钟控制)寄存器中的相应位来实现。具体步骤可能因芯片型号而异,但通常您需要找到与GPIOA端口时钟相关的位,并将其设置为1以启用时钟。例如,在STM32中,您可能需要执行类似以下的操作:

c复制代码

RCC->APB2ENR |= (1 << 2); // 使能GPIOA的时钟
  1. 通过固件库函数使能GPIOD端口时钟

如果您使用的是STM32的HAL(硬件抽象层)或LL(低层)固件库,您可以使用库提供的函数来使能GPIOD端口时钟。这些函数通常封装了对RCC寄存器的底层操作,使得代码更加简洁和易于维护。具体函数名称和用法可能因库版本和芯片型号而异,但通常您可以在库的参考手册或示例代码中找到相关信息。例如,在STM32 HAL库中,您可能需要使用类似以下的函数:

c复制代码

HAL_RCC_GPIOD_CLK_ENABLE(); // 使能GPIOD端口时钟

五、LED灯的控制

六、独立按键的输入

    按键按下时产生前沿抖动,按键松开时产生后沿抖动,如下图所示。不同类型的按键其最长抖动时间也有差别,抖动时间的长短和按键的机械特性有关,一般为5~10ms,而一般人按下按键持续的时间大于100ms。

独立按键去抖原理图如下图所示,去抖实际上是每10ms检测一次连接到按键的引脚电平,连续检测到8次低电平,即低电平持续时间超过80ms,表示识别到按键按下。同理,按键按下后,如果连续检测到8次高电平,即高电平持续时间超过80ms,表示识别到按键松开。

相关推荐

最近更新

  1. TCP协议是安全的吗?

    2024-05-10 19:52:01       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-05-10 19:52:01       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-05-10 19:52:01       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-05-10 19:52:01       18 阅读

热门阅读

  1. nginx常用内置变量

    2024-05-10 19:52:01       10 阅读
  2. 在编程中,什么是类的继承?

    2024-05-10 19:52:01       9 阅读
  3. 获取最新的CVE信息

    2024-05-10 19:52:01       9 阅读
  4. 【Redis7】10大数据类型之Bitmap类型

    2024-05-10 19:52:01       8 阅读
  5. 【数据流图】用JointJs实现数据流图(二)

    2024-05-10 19:52:01       10 阅读
  6. 代码随想录 | 总结篇

    2024-05-10 19:52:01       8 阅读
  7. 头文件相互包含 前向声明

    2024-05-10 19:52:01       7 阅读
  8. 网络相关指令linux指令该怎么使用 - netstat

    2024-05-10 19:52:01       11 阅读
  9. python爬虫——selenium自动化测试工具

    2024-05-10 19:52:01       6 阅读
  10. python笔记(17)输入输出

    2024-05-10 19:52:01       8 阅读