霸道板和烧写器:
在这里插入图片描述
基础理论:

  1. GPIO:通用目的输入、输出端口。
  2. STM32最多拥有GPIOA、…、GPIOG等七组端口,每组端口最多拥有PIN0、…、PIN15共16个引脚。
  3. STM32每个I/O端口都可自由编程,但I/O端口寄存器必须按照32位字被访问。
  4. STM32每个I/O端口都由7个寄存器来控制。
  5. STM32的I/O端口可由软件配置成8种模式。

端口模式

  1. 推挽输出
  2. 开漏输出
  3. 推挽式复用功能
  4. 开漏式复用功能
  5. 模拟输入
  6. 浮空输入
  7. 下拉输入
  8. 上拉输入

GPIO初始化:

void MX_GPIO_Init(void)
{

  GPIO_InitTypeDef GPIO_InitStruct = {0};

  /* GPIO Ports Clock Enable 使能时钟 */
  __HAL_RCC_GPIOC_CLK_ENABLE();
  __HAL_RCC_GPIOA_CLK_ENABLE();
  __HAL_RCC_GPIOB_CLK_ENABLE();

  /*Configure GPIO pin Output Level 设置输出引脚初始电平*/
  HAL_GPIO_WritePin(GPIOB, GPIO_PIN_0|GPIO_PIN_1|GPIO_PIN_5, GPIO_PIN_SET);

  /*Configure GPIO pin : PC13 定义Key2开关为输入,和下拉模式,最后把引脚写入对应端口寄存器中*/
  GPIO_InitStruct.Pin = GPIO_PIN_13;
  GPIO_InitStruct.Mode = GPIO_MODE_INPUT;
  GPIO_InitStruct.Pull = GPIO_PULLDOWN;
  HAL_GPIO_Init(GPIOC, &GPIO_InitStruct);

  /*Configure GPIO pin : PA0 与上同理*/
  GPIO_InitStruct.Pin = GPIO_PIN_0;
  GPIO_InitStruct.Mode = GPIO_MODE_INPUT;
  GPIO_InitStruct.Pull = GPIO_PULLDOWN;
  HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);

  /*Configure GPIO pins : PB0 PB1 PB5 设置三个小灯引脚为输出模式,推挽输出,低速时钟和把引脚写入寄存器中*/
  GPIO_InitStruct.Pin = GPIO_PIN_0|GPIO_PIN_1|GPIO_PIN_5;
  GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
  GPIO_InitStruct.Pull = GPIO_NOPULL;
  GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
  HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);

}
Logo

openvela 操作系统专为 AIoT 领域量身定制,以轻量化、标准兼容、安全性和高度可扩展性为核心特点。openvela 以其卓越的技术优势,已成为众多物联网设备和 AI 硬件的技术首选,涵盖了智能手表、运动手环、智能音箱、耳机、智能家居设备以及机器人等多个领域。

更多推荐