STM32CubeIDE-基本使用

切换 workspace

测试代码 (让绿灯闪烁)

1
2
3
4
5
6
7
8
9
10
11
/* Infinite loop */
/* USER CODE BEGIN WHILE */
while (1)
{
/* USER CODE END WHILE */
HAL_GPIO_TogglePin(GPIOA, GPIO_PIN_5);
HAL_Delay(1000);

/* USER CODE BEGIN 3 */
}
/* USER CODE END 3 */
  • HAL_GPIO_TogglePin() 函数用于 toggle 一个引脚的状态, 第一个参数是 GPIOx, 第二个参数是具体的引脚号如 GPIO_PIN_x
  • HAL_Delay() 函数用于暂停程序的运行

GPIO IN

将引脚设置为 GPIO_input 之后, 按下表示 0, 放手表示 1.

测试, 按下 button 的代码:

1
2
3
4
5
6
7
8
9
10
11
12
  /* Infinite loop */
/* USER CODE BEGIN WHILE */
while (1)
{
if(HAL_GPIO_ReadPin(GPIOC, GPIO_PIN_13)==GPIO_PIN_SET) {
HAL_GPIO_WritePin(GPIOA, GPIO_PIN_5,GPIO_PIN_SET);
}
else {
HAL_GPIO_WritePin(GPIOA, GPIO_PIN_5,GPIO_PIN_RESET);
}
/* USER CODE END WHILE */
}
  • HAL_GPIO_ReadPin: 获取指定引脚的电平值, 第一个参数是 GPIOx, 第二个参数是具体的引脚号如 GPIO_PIN_x
  • HAL_GPIO_WritePin: 设置指定引脚的电平值
  • GPIO_PIN_SET: 预定义的宏, 表明 high
  • GPIO_PIN_RESET: 预定义的宏, 表明 low

NUCLEO-F103RB 的 ADC

STM32 F103RB 提供 12 位的 ADC 转换, 且有 16 个通道 (意思是可以从 16 个引脚获取输入)

Register

寄存器可用于存储控制和状态信息 (比如溢出, 会设置 overflow 寄存器位).

可以通过寄存器访问一些硬件功能. 每一个 peripheral or feature 都会有自己单独的寄存器用于控制其行为.

对于 STM32 而言, 寄存器都是 32 位的.

GPIO 相关 register

下载 STM32 Register 相关 Reference Manual.

两个用于初始化 GPIO ports (如 GPIOA, GPIOB, 对于 STM32 而言, 每一个 port 有 16 个 pins) 的寄存器:

  • GPIOX_CRL, CRL 指 “Control Register Lower”, 设置 0-7 pin (每一个 pin 用 4 个 bits 控制)
  • GPIOX_CRH, CRH, 指 “Control Register Higher”, 设置 8-15 pin

设置的对照表为:

讲解下, 比如设置 pin1, 其控制的 4 个 bits 可以设置为 0001, 对照 table2 (看下标), 可以知道, 其表示 Push Pull.

CNF 通常指 “CoNFiguration”.

在代码中设置寄存器的值, 如:

1
GPIOX->CRL = 0bXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

STM32CubeIDE-基本使用
http://example.com/2024/09/26/STM32CubeIDE-基本使用/
作者
Jie
发布于
2024年9月26日
许可协议