草庐IT

19-CubeMx+Keil+Proteus仿真STM32 - 直流电动机

本文例子参考《STM32单片机开发实例——基于Proteus虚拟仿真与HAL/LL库》源代码:https://github.com/LanLinnet/STM32F103R6项目要求理解H桥电路的工作原理,结合前面几个项目学习过的PWM、EXTI、串口通讯等,要求通过5个按钮控制直流电动机的运行状态,包括:电动机正转、电动机反转、电动机停止、电动机加速和电动机减速,其中电动机加速/减速以10%的PWM信号宽度占空比为递增/递减量。硬件设计在第一节的基础上,在Proteus中添加电路如下图所示。其中我们添加了一个直流电动机H桥芯片L298,一个直流电动机MOTOR-DC。此外,我们还添加了一个虚

18-CubeMx+Keil+Proteus仿真STM32 - DAC

本文例子参考《STM32单片机开发实例——基于Proteus虚拟仿真与HAL/LL库》源代码:https://github.com/LanLinnet/STM32F103R6项目要求在SPI总线通信的基础上,使用单片机控制DAC芯片MCP4921以1秒为周期输出正弦波,正弦波的波动范围为0-3.3V。硬件设计在第一节的基础上,在Proteus中添加电路如下图所示。其中我们添加了一个DAC芯片MCP4921。此外,我们还添加了两个虚拟仪表:一个示波器OSCILLOSCOPE和一个SPI总线调试工具SPIDEBUGGER。MCP4921:1)简介:STM32F103R6单片机本身不自带DAC,如果

17-CubeMx+Keil+Proteus仿真STM32 - SPI

本文例子参考《STM32单片机开发实例——基于Proteus虚拟仿真与HAL/LL库》源代码:https://github.com/LanLinnet/STM32F103R6项目要求掌握SPI总线通信规则,使用单片机每隔1s读取一次温度传感器TC72的温度值,并通过串口将读取的温度值发送出去。串口通信参数:波特率为19200bits/s,无校验。硬件设计在第一节的基础上,在Proteus中添加电路如下图所示。其中我们添加了一个串行温度传感器TC72。此外,我们还添加了两个虚拟仪表:一个虚拟终端VIRTUALTERMINAL和一个SPI总线调试工具SPIDEBUGGER。虚拟终端VIRTUALT

16-CubeMx+Keil+Proteus仿真STM32 - I2C

本文例子参考《STM32单片机开发实例——基于Proteus虚拟仿真与HAL/LL库》源代码:https://github.com/LanLinnet/STM32F103R6项目要求掌握\(I^2C\)的通讯方法和时序,通过串口发送数据,单片机接收并存入AT24C02首地址中。按下按键BTN,单片机将存放在AT24C02首地址中的数据取出并通过串口发送。串口通信参数:波特率为19200bits/s;无校验。硬件设计在第一节的基础上,在Proteus中添加电路如下图所示。其中我们添加了一个I2C通信的外设:EEPROM芯片AT24C02(在Proteus中为FM24C02)。此外,还添加了\(I

STM32标准库中GPIO_ReadInputData与GPIO_ReadInputDataBit的区别

GPIO_ReadInputData读的是GPIOx的整个IDR寄存器的数据,返回一个十六位数,对应IDR寄存器的十六位。反映GPIOx所有端口的电平状态,所以参数只用传入GPIOx。uint16_tGPIO_ReadInputData(GPIO_TypeDef*GPIOx);GPIO_ReadInputDataBit读的是GPIOx的IDR寄存器中的一位数,返回值不是0就是1。反映GPIOx的某个端口的电平状态,读哪一位由参数GPIO_Pin决定。uint8_tGPIO_ReadInputDataBit(GPIO_TypeDef*GPIOx,uint16_tGPIO_Pin);

STM32标准库中GPIO_ReadInputData与GPIO_ReadInputDataBit的区别

GPIO_ReadInputData读的是GPIOx的整个IDR寄存器的数据,返回一个十六位数,对应IDR寄存器的十六位。反映GPIOx所有端口的电平状态,所以参数只用传入GPIOx。uint16_tGPIO_ReadInputData(GPIO_TypeDef*GPIOx);GPIO_ReadInputDataBit读的是GPIOx的IDR寄存器中的一位数,返回值不是0就是1。反映GPIOx的某个端口的电平状态,读哪一位由参数GPIO_Pin决定。uint8_tGPIO_ReadInputDataBit(GPIO_TypeDef*GPIOx,uint16_tGPIO_Pin);

15-CubeMx+Keil+Proteus仿真STM32 - LCD1602

本文例子参考《STM32单片机开发实例——基于Proteus虚拟仿真与HAL/LL库》源代码:https://github.com/LanLinnet/STM32F103R6写在前面在前面几节的基础上,我们已经基本了解了STM32F103的GPIO、外部中断、定时器、串口通信和一些片内外设,接下来几节都将对其常用的独立外设进行介绍。项目要求掌握LCD1602的驱动方法,要求在屏幕第一行显示“HelloWorld!”。硬件设计在第一节的基础上,在Proteus中添加电路如下图所示。其中我们添加了一个LCD1602液晶显示器LM016L。LCD1602:1)简介:LCD1602液晶显示屏能够显示2

痞子衡嵌入式:浅谈i.MXRT1xxx系列MCU时钟相关功能引脚的作用

  大家好,我是痞子衡,是正经搞技术的痞子。今天痞子衡给大家介绍的是i.MXRT1xxx系列MCU时钟相关功能引脚作用。  如果我们从一颗MCU芯片的引脚分类来看芯片功能,大概可以分为三大类:电源、时钟、外设功能。作为嵌入式开发者,大部分时候关注得都是外设功能引脚,而对于时钟相关引脚往往不太在意,其实有些时候利用时钟功能引脚也能助你定位问题。今天痞子衡就带你梳理一下i.MXRT1xxx系列的时钟系统以及相关功能引脚:一、时钟系统简介  目前i.MXRT1xxx系列主要分为i.MXRT10xx和i.MXRT11xx两大分支。这两个分支的时钟系统设计是有一些差异的,不过总体来说,架构差别不大,我们

沁恒CH32V103C8T6(一): 核心板焊接和Windows开发环境配置

目录沁恒CH32V103C8T6(一):核心板焊接和Windows开发环境配置沁恒CH32V103C8T6(二):LinuxRISC-V编译和烧录环境配置CH32V103C8T6CH32V103C8T6是沁恒的RISC-V内核MCU,基于RISC-V3A处理器,内核采用2级流水线处理,设置了静态分支预测、指令预取机制,支持DMA.主要参数如下CPU:32位RISC-V3A,RV32IMAC指令集,最高80MHz,典型72MHzRAM:20KBFlash:64KBBootLoader:3.75KB系统引导程序存储区供电:2.7V-5.5V(兼容3.3V和5V)Timer:通用3,高级1,看门狗2

07-CubeMx+Keil+Proteus仿真STM32 - EXTI

本文例子参考《STM32单片机开发实例——基于Proteus虚拟仿真与HAL/LL库》源代码:https://github.com/LanLinnet/STM32F103R6项目要求同04节,电路常态为流水灯状态,当按下按钮BTN0时,8个LED灯全亮全灭闪烁3次后恢复到常态;当按下按钮BTN1时,8个LED灯间隔交替闪烁3次后恢复常态;当BTN0和BTN1同时按下时,系统优先相应BTN1。硬件设计在第一节的基础上,在Proteus中添加电路如下图所示,其中我们添加了一个排阻RX8、一组8个LED灯、两组由按钮BUTTON构成的按键电路。根据电路图和芯片技术手册,我们知道PB0可用作外部中断0