assembly 如何配置STM32L152上的GPIO引脚?

laik7k3q  于 2023-08-06  发布在  其他
关注(0)|答案(1)|浏览(137)

我有一个STM32L发现板,其中包含一个stm32l152rb微处理器。我试着在没有任何库的情况下用汇编语言对电路板进行编程。到目前为止,我成功地编写了链接器脚本和一个基本例程,该例程将.data部分复制到RAM中,并将bss部分清零。但除此之外,我有点迷路了。
作为一个了解GPIO配置工作原理的小实验,我想为电路板编写一个程序,使连接到GPIO端口B引脚7的绿色LED亮起。阅读datasheet,我得出结论,我需要做以下两件事:
1.将GPIO端口B的引脚7配置为输出引脚
1.将所述引脚设置为高电平
但在这个地方,我比喻的是只见树木不见森林。我不知道我应该选择哪种IO模式,所有这些缩写词都让我感到困惑。我真的很感激有人给我详细的信息,说明和可能的例子组装就如何做到这一点。

wgeznvg7

wgeznvg71#

在使用GPIO模块之前,必须执行以下操作:

  • 复位GPIO寄存器:
  • RCC模块,寄存器AHBRSTR,位GPIOBRST设为第一高电平
  • RCC模块,寄存器AHBRSTR,位GPIOBRST设置为0 -第一低电平
  • 使能GPIO寄存器时钟:
  • RCC模块,寄存器AHBENR,位GPIOBEN设为1 -使能时钟

之后,您可以开始使用GPIO寄存器

  1. GPIO模块,寄存器GPIOB_MODER,位字段[15:14]设置为01 -通用输出模式
  2. GPIO模块,寄存器GPIOB_OTYPER,位7设为0 -输出推挽
  3. GPIO模块,寄存器GPIOB_OSPEEDR,位字段[15:14]设置为00 - 400 kHz极低速
  4. GPIO模块,寄存器GPIOB_PUPDR,位字段[15:14]设置为00 -无上拉、下拉
    现在,您可以使用GPIOB_BSRR(置位/复位)寄存器或GPIOB_ODR(输出)寄存器:
  • GPIO模块,寄存器GPIOB_BSRR,位7设为1 -设置GPIOB引脚7(高电平)
  • GPIO模块,寄存器GPIOB_BSRR,位23设为1 -重置GPIOB引脚7(低电平)

相关问题