stm32 奇数灯先亮主函数代码 寄存器
时间: 2024-12-14 18:12:01 浏览: 8
好的,以下是一个使用寄存器操作实现STM32奇数灯先亮的示例代码。假设我们使用的是STM32F103系列,并且LED连接在GPIOA的0、1、2、3引脚上。
```c
#include "stm32f10x.h"
void Delay(uint32_t time) {
while(time--);
}
int main(void) {
// 使能GPIOA的时钟
RCC->APB2ENR |= RCC_APB2ENR_IOPAEN;
// 配置GPIOA的0、1、2、3引脚为推挽输出
GPIOA->CRL &= ~(GPIO_CRL_MODE0 | GPIO_CRL_CNF0);
GPIOA->CRL |= GPIO_CRL_MODE0_0 | GPIO_CRL_MODE0_1;
GPIOA->CRL &= ~(GPIO_CRL_MODE1 | GPIO_CRL_CNF1);
GPIOA->CRL |= GPIO_CRL_MODE1_0 | GPIO_CRL_MODE1_1;
GPIOA->CRL &= ~(GPIO_CRL_MODE2 | GPIO_CRL_CNF2);
GPIOA->CRL |= GPIO_CRL_MODE2_0 | GPIO_CRL_MODE2_1;
GPIOA->CRL &= ~(GPIO_CRL_MODE3 | GPIO_CRL_CNF3);
GPIOA->CRL |= GPIO_CRL_MODE3_0 | GPIO_CRL_MODE3_1;
while(1) {
// 点亮奇数灯
GPIOA->ODR |= (1 << 0) | (1 << 2);
Delay(1000000);
// 熄灭奇数灯
GPIOA->ODR &= ~((1 << 0) | (1 << 2));
Delay(1000000);
}
}
```
在这个示例中,我们首先使能了GPIOA的时钟,然后将PA0、PA1、PA2、PA3配置为推挽输出。接着,在主循环中,我们通过设置ODR寄存器来点亮奇数灯(PA0和PA2),然后通过延时函数延时一段时间,再熄灭这些灯。
阅读全文