首先学习寄存器版本的建立工程
1. 使用的软件是keil5
2. 建立文件夹分别为Listing Output LED
3. LED 存放 startup_stm32f429_439xx.s、 stm32f4xx.h、 main.c 文件
4. Listing 暂时为空 Output 暂时为空
![]()
新建工程后,需要添加启动代码
1. startup_stm32f429_439xx.s 启动文件,系统上电后第一个运行的程序,由汇编编写 。
2. 文件在这个目录:F4 固件库\STM32F4xx_DSP_StdPeriph_Lib_V1.5.1\STM32F4xx_DSP_StdPeriph_Lib_V1.5.1\Libraries
\CMSIS\Device\ST\STM32F4xx\Source\Templates\arm\startup_stm32f429_439xx.s
3. stm32f4xx.h 用户手动新建,用于存放寄存器映射的代码,暂时为空。
#include "stm32f4xx.h"
void SystemInit ()
{
}
void delay ()
{
int a = 0x1FF000;
while(a--);
}
int main (void )
{
RCC_AHB1ENR |= 1<<7 ;
GPIOH_MODER &= ~( 0x03<< (2*11));
GPIOH_MODER |= 1<<(2*11) ;
GPIOH_OTYPER &= ~(1<<1*11);
GPIOH_OTYPER |= (0 < 11);
GPIOH_OSPEEDR &= ~(3 << (2*11)) ;
GPIOH_OSPEEDR |= (1 << (2*11)) ;
GPIOH_PUPDR &= ~( 0x03<< (2*11));
GPIOH_PUPDR |= 1<<(2*11) ;
GPIOH_ODR |= (1<<11);
while(1)
{
GPIOH_ODR &= ~(1<<11);
delay ();
GPIOH_ODR |= (1<<11);
delay();
}
}
#define periaddr (unsigned int )0x40000000
#define GPIO_Addr periaddr+0x21C00
#define RCC_Addr periaddr+0x23800
#define GPIOH_MODER *(unsigned int *)(GPIO_Addr)
#define GPIOH_OTYPER *(unsigned int *)(GPIO_Addr+0x04)
#define GPIOH_OSPEEDR *(unsigned int *)(GPIO_Addr+0x08)
#define GPIOH_PUPDR *(unsigned int *)(GPIO_Addr+0x0C)
#define GPIOH_ODR *(unsigned int *)(GPIO_Addr+0x14)
#define GPIOH_BSRR *(unsigned int *)(GPIO_Addr+0x18)
#define RCC_AHB1ENR *(unsigned int *)(RCC_Addr+0x30)