1 引言
1.1 动机
- 小白help小白
- 交朋友
- 系统回顾一遍
1.2 是什么
1.2.1 stm32名字由来
- “STM32” 的名字由两部分组成:“ST” 和 “M32”。
- “ST” 代表意大利SGS微电子和法国汤姆森半导体公司于1987年合并而成的意法半导体公司(STMicroelectronics)。该公司是设计和生产STM32微控制器的公司。
- “M32” 指的是该微控制器的32位体系结构,M是Microelectronics的缩写,表示微电子学,这种处理器可以处理比8位或16位处理器更大的数据块。
- stm32就是一块可以编程的芯片,可以做逻辑判断、可以输出信号、接收信号的芯片
1.2.2 淘宝最小系统板与开发板
-
最小系统板
-
开发板
-
芯片
-
片上外设
- STM32是一款内置了多种外设的微控制器,包括但不限于以下外设:(简单谈谈)
- 通用输入/输出(GPIO):用于控制外部设备,如LED和按钮等。
- 通用同步/异步收发器(USART):用于串行通信,如UART、SPI和I2C等。
- 时钟管理单元(RCC):用于控制内部时钟。
- 外部中断/事件控制器(EXTI):用于检测外部事件并触发中断。
- 定时器(TIM):用于计时和生成PWM信号等。
- 脉冲编码调制器(PWM):用于产生模拟信号,如声音和LED调光等。
- 12位模数转换器(ADC):用于将模拟信号转换为数字信号。
- 数字模拟转换器(DAC):用于将数字信号转换为模拟信号。
- DMA控制器:用于高效地管理数据传输
- 外设的作用(stm32看成一个四肢健全,但是没有心跳没吃饭的普通人)
- stm32的cpu类似于大脑,进行逻辑处理与判断
- 外设的功能类似于我们的鼻子、耳朵、四肢等,负责与外界进行交互。
- STM32是一款内置了多种外设的微控制器,包括但不限于以下外设:(简单谈谈)
-
作用
- 传感器类:如温度、湿度、气压、陀螺仪、加速度计、磁力计等。
- 显示类:如LCD、OLED、LED等。
- 声音类:如扬声器、麦克风等。
- 时钟类:如RTC、外部晶振等。
- 电源管理类:如电池管理芯片、电源开关等。
- 无线通信类:如蓝牙、WiFi、射频、红外线等。
- 驱动器类:如步进电机驱动、直流电机驱动、舵机驱动等。
- 其他类:如按键、触摸屏、人体红外传感器、二维码扫描器等。
1.3 为什么
- 学习的原因
1.4 怎么做
-
会一点点C语言
-
开发方式的选择(对片上外设的控制)
-
外设的控制
- 我们要使用上面这台洗衣机,需要在操作面板输入洗衣时长,可能还可以设置洗衣温度等参数。类似的我们控制外设时,也需要用参数告诉外设,它需要工作的特点。在控制洗衣机时,我们把参数输入控制面板,在控制外设时,我们把参数写到寄存器中(一个可以写参数的地方)。需要注意的是可能一个外设的参数很多,比如洗衣机的温度、入水量、洗衣粉的数量、衣服的质量等等;外设数量也很多,类似于有洗衣机、空调、电视机等等。因此我们需要注意的有以下3点:
- 不同外设需要配置什么参数
- 不同参数的含义
- 参数应该写在哪个位置
- 我们要使用上面这台洗衣机,需要在操作面板输入洗衣时长,可能还可以设置洗衣温度等参数。类似的我们控制外设时,也需要用参数告诉外设,它需要工作的特点。在控制洗衣机时,我们把参数输入控制面板,在控制外设时,我们把参数写到寄存器中(一个可以写参数的地方)。需要注意的是可能一个外设的参数很多,比如洗衣机的温度、入水量、洗衣粉的数量、衣服的质量等等;外设数量也很多,类似于有洗衣机、空调、电视机等等。因此我们需要注意的有以下3点:
-
寄存器
- STM32寄存器编程是指在STM32微控制器中直接使用寄存器进行硬件控制和设备驱动的编程方式,相比于其他编程方式(如使用库函数、操作系统等),它有以下几个特点:
- 直接控制STM32硬件:STM32寄存器编程允许开发人员直接控制STM32芯片内部的硬件,而不需要通过操作系统、库函数等中间层,可以更精细地控制STM32硬件,提高系统的实时性和可靠性。
- 更高的执行效率:由于直接控制STM32硬件,STM32寄存器编程的执行速度通常比使用库函数等方式更快。提高了stm32的运行效率,而不是开发者的效率。
- 系统资源占用少:使用STM32寄存器编程可以避免使用过多的库函数和操作系统,从而减少系统资源的占用。
- 可移植性差:STM32寄存器编程通常会直接访问STM32硬件的寄存器,这使得程序的可移植性较差。当需要在不同的STM32芯片上运行程序时,需要对寄存器的地址、位域等进行修改。
- 代码难度大:由于STM32寄存器编程需要直接访问STM32硬件寄存器,需要对硬件细节有较深入的了解,因此对开发人员的要求较高。
- STM32寄存器编程是指在STM32微控制器中直接使用寄存器进行硬件控制和设备驱动的编程方式,相比于其他编程方式(如使用库函数、操作系统等),它有以下几个特点:
-
标准库
-
使用标准库编程是指使用操作系统或者编程语言提供的标准库函数来实现程序逻辑,相比于直接进行寄存器编程,它有以下几个特点:
- 可移植性好:标准库函数一般是跨平台的,可以在不同的操作系统或者编程语言中使用,从而提高了程序的可移植性。
- 简化编程:标准库函数提供了一些常用的功能模块,开发人员可以直接调用这些函数来实现程序的逻辑,从而简化了编程过程。
- 代码可读性好:标准库函数通常是经过优化的,代码逻辑清晰,可读性强。
- 系统资源占用多:使用标准库函数往往需要调用操作系统或者编程语言提供的库函数,从而占用了一定的系统资源,这可能会影响程序的性能。
- 执行效率相对较低:使用标准库函数的执行效率通常比直接进行寄存器编程要低一些,因为标准库函数需要调用库函数,而库函数的执行效率相对较低。
总之,使用标准库编程可以提高程序的可移植性和代码可读性,但可能会占用较多的系统资源,并且执行效率相对较低。在开发过程中,需要根据实际情况选择合适的编程方式。
-
-
HAL库
-
使用HAL(Hardware Abstraction Layer,硬件抽象层)库是指使用STM32官方提供的HAL库函数来实现STM32微控制器的硬件控制和设备驱动,相比于使用标准库或者直接进行寄存器编程,它有以下几个特点:
- 简化编程:HAL库函数提供了一些常用的功能模块,开发人员可以直接调用这些函数来实现程序的逻辑,从而简化了编程过程。
- 提高可移植性:HAL库函数为不同的STM32芯片提供了统一的接口,因此可以提高程序的可移植性。
- 代码可读性好:HAL库函数通常是经过优化的,代码逻辑清晰,可读性强。
- 减少硬件细节:使用HAL库函数可以屏蔽硬件的细节,让开发人员更加专注于程序的逻辑实现。
- 执行效率相对较高:HAL库函数尽量采用寄存器编程的方式,从而执行效率相对较高。
总之,使用HAL库编程可以简化编程过程,提高程序的可移植性和代码可读性,并且减少硬件细节的干扰。在保证程序执行效率的前提下,使用HAL库编程是一种非常有效的STM32微控制器开发方式。
-
-
-
配套软件的使用
- keil(需要的话在评论区发一下,大家不知道怎么安装,就教一下;也可以直接搜索)
- cubemx
-
配套硬件
- 最小系统板或者开发板
- [st_link](需要装驱动)(https://blog.csdn.net/m0_53293285/article/details/123162083)
- 串口下载(不建议使用串口下载,使用串口下载hex文件时,不好进行调试)