我得到了一个包含stm32l152rb微处理器的STM32L发现板。我试着在没有任何库的情况下汇编那个板。到目前为止,我成功地编写了链接器脚本和一个基本例程,该例程将.data部分复制到RAM中并将bss部分归零。但除此之外,我有点迷路了。
作为一个了解如何配置GPIo工作的小实验,我想为连接到GPIo端口B,引脚7的绿色LED灯板编写一个程序。阅读数据表,我得出结论,我需要做以下两件事:
- 配置GPIO端口B,引脚7作为输出引脚
- 设置所述引脚为高电平
但是在这个地方,我比喻地说只见树木不见森林。我不确定我应该选择哪种可用的多种IO模式,所有这些首字母缩略词都让我感到困惑。我真的很感激有人给我详细的信息,指导和可能的例子汇编如何做到这一点。
在使用GPIO模块之前必须做以下操作:
- 重置GPIO寄存器:
- RCC模块,寄存器
AHBRSTR
,位GPIOBRST
设为1 -高 - RCC模块,寄存器
AHBRSTR
,位GPIOBRST
设为0 -低电平 - 启用GPIO寄存器时钟:
- RCC模块,寄存器
AHBENR
,位GPIOBEN
设为1 -使能时钟
- RCC模块,寄存器
之后你可以开始使用GPIO寄存器
- GPIO模块,寄存器
GPIOB_MODER
,位域[15:14]设置为01 -通用输出模式 - GPIO模块,寄存器
GPIOB_OTYPER
,位7设为0 -输出推挽 - GPIO模块,寄存器
GPIOB_OSPEEDR
,位域[15:14]设置为00 - 400khz非常低的速度 - GPIO模块,寄存器
GPIOB_PUPDR
,位域[15:14]设置为00 -无上拉,下拉
现在您可以使用GPIOB_BSRR
(设置/重置)寄存器或GPIOB_ODR(输出)寄存器:
- GPIO模块,寄存器
GPIOB_BSRR
,位7设为1 -设置GPIOB引脚7(高) - GPIO模块,寄存器
GPIOB_BSRR
,位23设为1 -复位GPIOB引脚7 (low)