本文例子参考《STM32单片机开发实例——基于Proteus虚拟仿真与HAL/LL库》源代码:https://github.com/LanLinnet/STM32F103R6项目要求按下按钮控制LED灯的亮灭。硬件设计在第一节的基础上,在Proteus中添加电路如下图所示。打开CubeMX,按照建立工程,配置PC0引脚为GPIO_Output,PC1引脚为GPIO_Input。点击“GeneratorCode”生成Keil工程。软件编写点击“OpenProject”在Keil中打开工程,双击“main.c”文件。本次仿真我们新用到读引脚状态函数HAL_GPIO_ReadPin(),其官方文档A
本文例子参考《STM32单片机开发实例——基于Proteus虚拟仿真与HAL/LL库》源代码:https://github.com/LanLinnet/STM32F103R6项目要求实现流水灯效果。硬件设计在第一节的基础上,在Proteus中添加电路如下图所示,其中我们添加了一个排阻RX8。根据电路图我们可以知道,当STM32单片机输出低电平时,发光二极管导通。打开CubeMX,按照建立工程,配置PC0-PC7引脚为GPIO_Output。点击“ProjectManager”--“AdvancedSettings”,将GPIO的库改为LL库(我们后面需要用到LL库中的函数),点击“Genera
本文例子参考《STM32单片机开发实例——基于Proteus虚拟仿真与HAL/LL库》源代码:https://github.com/LanLinnet/STM32F103R6项目要求按下按钮控制LED灯的亮灭。硬件设计在第一节的基础上,在Proteus中添加电路如下图所示。打开CubeMX,按照建立工程,配置PC0引脚为GPIO_Output,PC1引脚为GPIO_Input。点击“GeneratorCode”生成Keil工程。软件编写点击“OpenProject”在Keil中打开工程,双击“main.c”文件。本次仿真我们新用到读引脚状态函数HAL_GPIO_ReadPin(),其官方文档A
本文例子参考《STM32单片机开发实例——基于Proteus虚拟仿真与HAL/LL库》源代码:https://github.com/LanLinnet/STM32F103R6项目要求STM32单片机控制单个LED灯亮灭,在PC0引脚控制LED灯以1s为周期闪烁。硬件设计在上一节的基础上,在Proteus中添加电路如下图所示。打开CubeMX,按照建立工程,配置PC0引脚为GPIO_Output。点击“GeneratorCode”生成Keil工程。注意:我们这里没有选择时钟振荡源,可以按照上一节中介绍的设置,也可以使用内部默认的RC振荡器。同时我们使用默认的推挽输出模式,也可以根据需要通过cub
本文例子参考《STM32单片机开发实例——基于Proteus虚拟仿真与HAL/LL库》源代码:https://github.com/LanLinnet/STM32F103R6项目要求STM32单片机控制单个LED灯亮灭,在PC0引脚控制LED灯以1s为周期闪烁。硬件设计在上一节的基础上,在Proteus中添加电路如下图所示。打开CubeMX,按照建立工程,配置PC0引脚为GPIO_Output。点击“GeneratorCode”生成Keil工程。注意:我们这里没有选择时钟振荡源,可以按照上一节中介绍的设置,也可以使用内部默认的RC振荡器。同时我们使用默认的推挽输出模式,也可以根据需要通过cub
本文例子参考《STM32单片机开发实例——基于Proteus虚拟仿真与HAL/LL库》源代码:https://github.com/LanLinnet/STM32F103R6项目要求实现数码管动态显示数字1~8。硬件设计在第一节的基础上,在Proteus中添加电路如下图所示,其中我们添加了一个排阻RX8、一个8位共阳极七段数码管显示器7SEG-MPX8-CA-BLUE、一个非门电路74HC04。由于共阳极数码管是低电平驱动的,根据电路图我们可以知道,当STM32单片机输出低电平时,数码管发光。注意:由于电路中用到的反相器74HC04仅有6个通道,为了避免芯片浪费,我们也可以使用8位数码管可以使
本文例子参考《STM32单片机开发实例——基于Proteus虚拟仿真与HAL/LL库》源代码:https://github.com/LanLinnet/STM32F103R6项目要求实现数码管动态显示数字1~8。硬件设计在第一节的基础上,在Proteus中添加电路如下图所示,其中我们添加了一个排阻RX8、一个8位共阳极七段数码管显示器7SEG-MPX8-CA-BLUE、一个非门电路74HC04。由于共阳极数码管是低电平驱动的,根据电路图我们可以知道,当STM32单片机输出低电平时,数码管发光。注意:由于电路中用到的反相器74HC04仅有6个通道,为了避免芯片浪费,我们也可以使用8位数码管可以使
本文例子参考《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项目要求实现矩阵键盘扫描,当按下任意一个按钮时,数码管立即显示当前按下按钮对应键值。硬件设计在第一节的基础上,在Proteus中添加电路如下图所示,其中我们添加了一个排阻RX8、一个1位共阳极数码管7SEG-MPX1-CA、一组由按钮BUTTON构成的矩阵键盘。判断究竟是那个按键被按下了,有很多方法:逐行扫描、逐列扫描和行列反转扫描等。我们在此处使用行扫描法。根据电路图,我们将4X4矩阵式键盘行连接至PB0-PB3,列连接
大家好,我是痞子衡,是正经搞技术的痞子。今天痞子衡给大家介绍的是恩智浦全系列MCU(包含Kinetis,LPC,i.MXRT,MCX)的GPIO电平中断设计差异。 在痞子衡旧文《以i.MXRT1xxx的GPIO模块为例谈谈中断处理函数(IRQHandler)的标准流程》里,痞子衡主要介绍得是GPIO一般控制以及最常用的输入边沿中断相关知识。最近恩智浦官方社区有用户反映i.MXRT1060上GPIO中断状态寄存器(GPIO->ISR)在发生有效电平中断后的置位并不需要手动清零(W1C),其会在I/O输入电平状态切换后自动清零,这和手册里描述不一致。 首先在痞子衡的认知里GPIO输入电平中