当前位置:网站首页>HAL库笔记——通过按键来控制LED(基于正点原子STM32F103ZET6精英板)
HAL库笔记——通过按键来控制LED(基于正点原子STM32F103ZET6精英板)
2022-08-02 03:33:00 【@C#&】
首先我们来看看控制LED灯和按键的IO口
LED初始化
#include "bsp_led.h"
void LED_GPIO_Init(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
__HAL_RCC_GPIOB_CLK_ENABLE();
GPIO_InitStructure.Pin = GPIO_PIN_5;
GPIO_InitStructure.Mode = GPIO_MODE_OUTPUT_PP;
GPIO_InitStructure.Pull = GPIO_NOPULL;
GPIO_InitStructure.Speed = GPIO_SPEED_FREQ_LOW;
HAL_GPIO_Init(GPIOB, &GPIO_InitStructure);
}
KEY初始化
void KEY_GPIO_Init(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
__HAL_RCC_GPIOE_CLK_ENABLE();
GPIO_InitStructure.Pin = GPIO_PIN_3 | GPIO_PIN_4;
GPIO_InitStructure.Mode = GPIO_MODE_INPUT; //读取电平需要输入模式
GPIO_InitStructure.Pull = GPIO_NOPULL;
GPIO_InitStructure.Speed = GPIO_SPEED_FREQ_LOW;
HAL_GPIO_Init(GPIOE, &GPIO_InitStructure);
}
main函数
#include "main.h"
#include "gpio.h"
#include "bsp_led.h"
#include "bsp_key.h"
/* Private includes ----------------------------------------------------------*/
/* USER CODE BEGIN Includes */
/* USER CODE END Includes */
/* Private typedef -----------------------------------------------------------*/
/* USER CODE BEGIN PTD */
/* USER CODE END PTD */
/* Private define ------------------------------------------------------------*/
/* USER CODE BEGIN PD */
/* USER CODE END PD */
/* Private macro -------------------------------------------------------------*/
/* USER CODE BEGIN PM */
/* USER CODE END PM */
/* Private variables ---------------------------------------------------------*/
/* USER CODE BEGIN PV */
/* USER CODE END PV */
/* Private function prototypes -----------------------------------------------*/
void SystemClock_Config(void);
/* USER CODE BEGIN PFP */
/* USER CODE END PFP */
/* Private user code ---------------------------------------------------------*/
/* USER CODE BEGIN 0 */
/* USER CODE END 0 */
/** * @brief The application entry point. * @retval int */
int main(void)
{
/* USER CODE BEGIN 1 */
/* USER CODE END 1 */
/* MCU Configuration--------------------------------------------------------*/
/* Reset of all peripherals, Initializes the Flash interface and the Systick. */
HAL_Init();
/* USER CODE BEGIN Init */
/* USER CODE END Init */
/* Configure the system clock */
SystemClock_Config();
/* USER CODE BEGIN SysInit */
/* USER CODE END SysInit */
/* Initialize all configured peripherals */
LED_GPIO_Init();
KEY_GPIO_Init();
/* USER CODE BEGIN 2 */
/* USER CODE END 2 */
/* Infinite loop */
/* USER CODE BEGIN WHILE */
while (1)
{
if(Key_Scan(GPIOE,GPIO_PIN_3) == KEY_ON)
{
LED_RED_ON;
}
if(Key_Scan(GPIOE,GPIO_PIN_4) == KEY_ON)
{
while(1)
{
LED_RED_ON;
HAL_Delay(500); //500 ms
LED_RED_OFF;
HAL_Delay(500); //500 ms
if(Key_Scan(GPIOE,GPIO_PIN_4) == KEY_ON)
break;
}
}
}
}
边栏推荐
猜你喜欢
LL(1)文法 :解决 if-else/if-else 产生式二义性问题
向龙芯2K1000板子上烧写中标麒麟系统
Mac安装MySQL详细教程
AD PCB导出Gerber文件(非常详细的步骤)
C语言教程 - 制作单位转换器
Application of electronic flow on business trip
TC358860XBG BGA65 东芝桥接芯片 HDMI转MIPI
Comparative analysis of OneNET Studio and IoT Studio
蛮力法求解凸包问题
[Arduino connected to GPS module (NEO-6M) to read positioning data]
随机推荐
USB2.0一致性测试方法_高速示波器
【数据库】事务的四大特性<详解>
【MQ-3 Alcohol Detector and Arduino Detect Alcohol】
电子密码锁_毕设‘指导’
【详解】线程池及其自定义线程池的实现
【科普贴】I2C接口详解——偏硬件解析
2020 - AAAI - Image Inpainting论文导读《Learning to Incorporate Structure Knowledge for Image Inpainting》
机械臂运动学解析
【LeetCode】求和
WebApp 在线编程成趋势:如何在 iPad、Matepad 上编程?
MC1496乘法器
GM8775C MIPI转LVDS调试资料分享
【plang1.4.3】语言新特性:集合
最第k大的数的一般性问题
MIPI解决方案 ICN6202:MIPI DSI转LVDS转换芯片
使用飞凌嵌入式IMX6UL-C1板子——qt+opencv环境搭建
uniCloud address book combat
【详解】优先级队列的底层实现
AD PCB导出Gerber文件(非常详细的步骤)
rosdep update失败解决办法(亲测有效)