使用寄存器点亮LED灯
1.资料使用
- 复制一份工程模板到新的文件夹
- 打开USER/test.uvprojx
2.代码编写部分
- 新建APP文件
- 在APP文件中新建LED文件夹
- 在LED文件夹中新建led.h led.c文件
led.h
#ifndef __LED_H
#define __LED_H
void LED_init();
#endif
led.c
#include "led.h"
#include "stm32f4xx.h"
void LED_init()
{
RCC->AHB1ENR |= 1<<5;
GPIOF->MODER &= ~(3<<2*9);
GPIOF->MODER |= 1<<2*9;
GPIOF->OTYPER &= ~(1<<9);
GPIOF->OTYPER |= 0<<9;
GPIOF->OSPEEDR &= ~(3<<2*9);
GPIOF->OSPEEDR |= 2<<2*9;
GPIOF->PUPDR &= ~(3<<2*9);
GPIOF->PUPDR |= 1<<2*9;
GPIOF->MODER &= ~(3<<2*10);
GPIOF->MODER |= 1<<2*10;
GPIOF->OTYPER &= ~(1<<10);
GPIOF->OTYPER |= 0<<10;
GPIOF->OSPEEDR &= ~(3<<2*10);
GPIOF->OSPEEDR |= 2<<2*10;
GPIOF->PUPDR &= ~(3<<2*10);
GPIOF->PUPDR |= 1<<2*10;
GPIOF->ODR |= 1<<9;
GPIOF->ODR |= 1<<10;
}
3.编写主函数
#include "led.h"
#include "stm32f4xx.h"
#include "delay.h"
int main()
{
delay_init(168);
LED_init();
while(1)
{
GPIOF->ODR &= ~(1<<9);
GPIOF->ODR |=1<<10;
delay_ms(500);
GPIOF->ODR |=1<<9;
GPIOF->ODR &= ~(1<<10);
delay_ms(500);
}
}
4.实验现象