STM32F103C8T6第2天:按键点灯轮询法和中断法、RCC、电动车报警器(振动传感器、继电器、喇叭、433M无线接收发射模块)

1. 点亮LED灯详解(307.11)

  • 标号一样的导线在物理上是连接在一起的。
    在这里插入图片描述
    在这里插入图片描述
  • 将 PB8 或 PB9 拉低,就可以实现将对应的 LED 灯点亮。
  • 常用的GPIO HAL库函数:
void HAL_GPIO_Init(GPIO_TypeDef *GPIOx, GPIO_InitTypeDef *GPIO_Init);//I/O口的初始化配置
void HAL_GPIO_WritePin(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin, GPIO_PinState
PinState);//对I/O口写高写低
void HAL_GPIO_TogglePin(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin);//翻转I/O口的状态
__HAL_RCC_GPIOA_CLK_ENABLE();
__HAL_RCC_GPIOB_CLK_ENABLE();//时钟:使GPIOB能工作,节约能耗,资源最大化的利用
  • 结构体 GPIO_InitTypeDef 定义:
typedef struct
{
   
uint32_t Pin;//引脚编号
uint32_t Mode;//输入|推挽输出|开漏输出
uint32_t Pull;//上拉|下拉|不拉
uint32_t Speed;//低速|中速|高速
} GPIO_InitTypeDef;

2. 按键点亮LED灯(轮询法)(308.12)

  • 输入(按键):
    • KEY1:PA0
    • KEY2:PA1
  • 输出(LED灯):
    • LED1:PB8
    • LED2:PB9
      在这里插入图片描述
  • 代码(key_test/MDK-ARM)
//main.c
/* Private macro -------------------------------------------------------------*/
/* USER CODE BEGIN PM */
#define KEY_ON  0
#define KEY_OFF 1
/* USER CODE END PM */
uint8_t Key_Scan(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin)
{
   //检测按键的状态
	if(HAL_GPIO_ReadPin(GPIOx, GPIO_Pin) == GPIO_PIN_RESET)
	{
   	/* 按键按下 */
		while(HAL_GPIO_ReadPin(GPIOx, GPIO_Pin) == GPIO_PIN_RESET);//消除按键抖动(防抖操作)
		return KEY_ON;
	}else
	{
   	/* 按键松开 */
		return KEY_OFF;
	}
}
int main(void)
{
   
	HAL_Init();
	SystemClock_Config();
	MX_GPIO_Init();
	while (1)
  {
   //按下key时,翻转led的状态
    	/* USER CODE END WHILE */
		//HAL_GPIO_WritePin(GPIOB, GPIO_PIN_8|GPIO_PIN_9, GPIO_PIN_RESET);
    	/* USER CODE BEGIN 3 */
		if(Key_Scan(GPIOA, GPIO_PIN_0) == KEY_ON)
			HAL_GPIO_TogglePin(GPIOB, GPIO_PIN_8);
		if(Key_Scan(GPIOA, GPIO_PIN_1) == KEY_ON)
			HAL_GPIO_TogglePin(GPIOB, GPIO_PIN_9);
  }
}

3. 复位和时钟控制(RCC)(309.13)

  • reset and clock control

复位

  • 系统复位
    当发生以下任一事件时,产生一个系统复位:
      1. NRST引脚上的低电平(外部复位)
      2. 窗口看门狗计数终止(WWDG复位)
      3. 独立看门狗计数终止(IWDG复位)
      4. 软件复位(SW复位)
      5. 低功耗管理复位
  • 电源复位
    当以下事件中之一发生时,产生电源复位:
      1. 上电/掉电复位(POR/PDR复位)
      2. 从待机模式中返回
  • 备份区复位
    备份区域拥有两个专门的复位,它们只影响备份区域。
    当以下事件中之一发生时,产生备份区域复位。
      1. 软件复位,备份区域复位可由设置备份域控制寄存器 (RCC_BDCR)(见6.3.9节)中的BDRST位产生。
      2. 在VDD和VBAT两者掉电的前提下,VDD或VBAT上电将引发备份区域复位。

时钟控制

  • 什么是时钟?
    时钟打开,对应的设备才会工作。
  • 时钟来源
    • 三种不同的时钟源可被用来驱动系统时钟(SYSCLK)
      • HSI振荡器时钟(高速内部时钟)
      • HSE振荡器时钟(高速外部时钟)
      • PLL时钟(锁相环倍频时钟)
    • 二级时钟源:
      • 40kHz低速内部RC(LSIRC)振荡器
      • 32.768kHz低速外部晶体(LSE晶体)
  • 如何使用CubeMX配置时钟
    在这里插入图片描述
    在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值