本文例子参考《STM32单片机开发实例——基于Proteus虚拟仿真与HAL/LL库》源代码:https://github.com/LanLinnet/STM32F103R6项目要求掌握SPI总线通信规则,使用单片机每隔1s读取一次温度传感器TC72的温度值,并通过串口将读取的温度值发送出去。串口通信参数:波特率为19200bits/s,无校验。硬件设计在第一节的基础上,在Proteus中添加电路如下图所示。其中我们添加了一个串行温度传感器TC72。此外,我们还添加了两个虚拟仪表:一个虚拟终端VIRTUALTERMINAL和一个SPI总线调试工具SPIDEBUGGER。虚拟终端VIRTUALT
本文例子参考《STM32单片机开发实例——基于Proteus虚拟仿真与HAL/LL库》源代码:https://github.com/LanLinnet/STM32F103R6项目要求掌握\(I^2C\)的通讯方法和时序,通过串口发送数据,单片机接收并存入AT24C02首地址中。按下按键BTN,单片机将存放在AT24C02首地址中的数据取出并通过串口发送。串口通信参数:波特率为19200bits/s;无校验。硬件设计在第一节的基础上,在Proteus中添加电路如下图所示。其中我们添加了一个I2C通信的外设:EEPROM芯片AT24C02(在Proteus中为FM24C02)。此外,还添加了\(I
本文例子参考《STM32单片机开发实例——基于Proteus虚拟仿真与HAL/LL库》源代码:https://github.com/LanLinnet/STM32F103R6项目要求掌握SPI总线通信规则,使用单片机每隔1s读取一次温度传感器TC72的温度值,并通过串口将读取的温度值发送出去。串口通信参数:波特率为19200bits/s,无校验。硬件设计在第一节的基础上,在Proteus中添加电路如下图所示。其中我们添加了一个串行温度传感器TC72。此外,我们还添加了两个虚拟仪表:一个虚拟终端VIRTUALTERMINAL和一个SPI总线调试工具SPIDEBUGGER。虚拟终端VIRTUALT
本文例子参考《STM32单片机开发实例——基于Proteus虚拟仿真与HAL/LL库》源代码:https://github.com/LanLinnet/STM32F103R6项目要求掌握\(I^2C\)的通讯方法和时序,通过串口发送数据,单片机接收并存入AT24C02首地址中。按下按键BTN,单片机将存放在AT24C02首地址中的数据取出并通过串口发送。串口通信参数:波特率为19200bits/s;无校验。硬件设计在第一节的基础上,在Proteus中添加电路如下图所示。其中我们添加了一个I2C通信的外设:EEPROM芯片AT24C02(在Proteus中为FM24C02)。此外,还添加了\(I
本文例子参考《STM32单片机开发实例——基于Proteus虚拟仿真与HAL/LL库》源代码:https://github.com/LanLinnet/STM32F103R6项目要求通过定时器中断的方式,实现流水灯的效果。硬件设计在第一节的基础上,在Proteus中添加电路如下图所示。在上一节定时器阻塞延时的基础上,我们在本项目中同样使用TIM3进行中断。时钟频率采用默认的8MHz,我们不妨设置PSC为3999,ARR为999,那么此时可以计算出TIM3的计数脉冲周期为\(T_{CNT}\)为0.5ms,一次中断的溢出时间\(T_{OUT}\)为0.5s。打开CubeMX,建立工程。我们首先将
本文例子参考《STM32单片机开发实例——基于Proteus虚拟仿真与HAL/LL库》源代码:https://github.com/LanLinnet/STM32F103R6项目要求通过定时器延时(阻塞)的方式,实现LED灯以1秒为周期闪烁。硬件设计在第一节的基础上,在Proteus中添加电路如下图所示。要对芯片进行设置,我们首先要了解定时器的工作机制。(1)定时器概述STM32F103系列单片机最多支持8个定时器,其中STM32F103R6单片机内部仅保留TIM1、TIM2和TIM3这3个定时器,其中TIM1是高级定时器,TIM2和TIM3是普通定时器。普通定时器除具备基本的定时功能外,还可
本文例子参考《STM32单片机开发实例——基于Proteus虚拟仿真与HAL/LL库》源代码:https://github.com/LanLinnet/STM32F103R6项目要求通过定时器中断的方式,实现流水灯的效果。硬件设计在第一节的基础上,在Proteus中添加电路如下图所示。在上一节定时器阻塞延时的基础上,我们在本项目中同样使用TIM3进行中断。时钟频率采用默认的8MHz,我们不妨设置PSC为3999,ARR为999,那么此时可以计算出TIM3的计数脉冲周期为\(T_{CNT}\)为0.5ms,一次中断的溢出时间\(T_{OUT}\)为0.5s。打开CubeMX,建立工程。我们首先将
本文例子参考《STM32单片机开发实例——基于Proteus虚拟仿真与HAL/LL库》源代码:https://github.com/LanLinnet/STM32F103R6项目要求通过定时器延时(阻塞)的方式,实现LED灯以1秒为周期闪烁。硬件设计在第一节的基础上,在Proteus中添加电路如下图所示。要对芯片进行设置,我们首先要了解定时器的工作机制。(1)定时器概述STM32F103系列单片机最多支持8个定时器,其中STM32F103R6单片机内部仅保留TIM1、TIM2和TIM3这3个定时器,其中TIM1是高级定时器,TIM2和TIM3是普通定时器。普通定时器除具备基本的定时功能外,还可
本文例子参考《STM32单片机开发实例——基于Proteus虚拟仿真与HAL/LL库》源代码:https://github.com/LanLinnet/STM32F103R6项目要求实现矩阵键盘扫描,当按下任意一个按钮时,数码管立即显示当前按下按钮对应键值。硬件设计在第一节的基础上,在Proteus中添加电路如下图所示,其中我们添加了一个排阻RX8、一个1位共阳极数码管7SEG-MPX1-CA、一组由按钮BUTTON构成的矩阵键盘。判断究竟是那个按键被按下了,有很多方法:逐行扫描、逐列扫描和行列反转扫描等。我们在此处使用行扫描法。根据电路图,我们将4X4矩阵式键盘行连接至PB0-PB3,列连接
本文例子参考《STM32单片机开发实例——基于Proteus虚拟仿真与HAL/LL库》源代码:https://github.com/LanLinnet/STM32F103R6项目要求实现数码管动态显示数字1~8。硬件设计在第一节的基础上,在Proteus中添加电路如下图所示,其中我们添加了一个排阻RX8、一个8位共阳极七段数码管显示器7SEG-MPX8-CA-BLUE、一个非门电路74HC04。由于共阳极数码管是低电平驱动的,根据电路图我们可以知道,当STM32单片机输出低电平时,数码管发光。注意:由于电路中用到的反相器74HC04仅有6个通道,为了避免芯片浪费,我们也可以使用8位数码管可以使