编写一个简单的stm32程序
一 MDK的安装二编写一个简单的stm32程序准备工作编写程序代码
一 MDK的安装
keil官网网址下载 http://www.keil.com/download/product 1、下载完成MDK后,开始安装MDK5,点击安装包开始安装 2、同时要记得下载这些包哦 3、运行成功,出现安装导向,点击next 4、点击同意,继续next 5、选择安装路径,在这本人选择了E盘,读者可自行选择,选择完毕,继续next。 6、填写注册信息后继续next
7、就此安装一半过程啦,点击fish。 8、而后或出现如下窗口,按ok 9、如此桌面出现如下快捷方式,双击打开 10、点击文件,找到License Management打开 11、点击打开,找到并复制CID
12、与此同时在压缩包中打开 13、将刚刚复制的CID粘贴到此,,Target改为ARM 14、点击Cenerate创建,复制如下框去的部分 15、回到License Management,粘贴到此处,点击Add LIC按钮,安装完成。
二编写一个简单的stm32程序
准备工作
1、创建一个工程 1.1、打开Keil uVision5,打开project,点击New uVision Project 1.2、输入文件名称 1.3、选择需要使用的stm32芯片,这里选择了STM32F 103RB 1.4、对Run-Time Environment进行设置,设置完成后,点击ok,工程建立完成。 1.5、创建完开始编写程序,右键打开Source Group 1 1.6、继续点击添加一个文件 0x40000000)
#define APB2PERIPH_BASE (PERIPH_BASE + 0x10000)
#define GPIOA_BASE (APB2PERIPH_BASE + 0x0800)
#define GPIOB_BASE (APB2PERIPH_BASE + 0x0C00)
#define GPIOC_BASE (APB2PERIPH_BASE + 0x1000)
#define GPIOD_BASE (APB2PERIPH_BASE + 0x1400)
#define GPIOE_BASE (APB2PERIPH_BASE + 0x1800)
#define GPIOF_BASE (APB2PERIPH_BASE + 0x1C00)
#define GPIOG_BASE (APB2PERIPH_BASE + 0x2000)
#define GPIOA_ODR_Addr (GPIOA_BASE+12)
#define GPIOB_ODR_Addr (GPIOB_BASE+12)
#define GPIOC_ODR_Addr (GPIOC_BASE+12)
#define GPIOD_ODR_Addr (GPIOD_BASE+12)
#define GPIOE_ODR_Addr (GPIOE_BASE+12)
#define GPIOF_ODR_Addr (GPIOF_BASE+12)
#define GPIOG_ODR_Addr (GPIOG_BASE+12)
#define BITBAND(addr, bitnum) ((addr & 0xF0000000)+0x2000000+((addr &0xFFFFF)<<5)+(bitnum<<2))
#define MEM_ADDR(addr) *((volatile unsigned long *)(addr))
#define LED0 MEM_ADDR(BITBAND(GPIOA_ODR_Addr,8))
typedef struct
{
volatile unsigned int CR
;
volatile unsigned int CFGR
;
volatile unsigned int CIR
;
volatile unsigned int APB2RSTR
;
volatile unsigned int APB1RSTR
;
volatile unsigned int AHBENR
;
volatile unsigned int APB2ENR
;
volatile unsigned int APB1ENR
;
volatile unsigned int BDCR
;
volatile unsigned int CSR
;
} RCC_TypeDef
;
#define RCC ((RCC_TypeDef *)0x40021000)
typedef struct
{
volatile unsigned int CRL
;
volatile unsigned int CRH
;
volatile unsigned int IDR
;
volatile unsigned int ODR
;
volatile unsigned int BSRR
;
volatile unsigned int BRR
;
volatile unsigned int LCKR
;
} GPIO_TypeDef
;
#define GPIOA ((GPIO_TypeDef *)GPIOA_BASE)
void LEDInit( void )
{
RCC
->APB2ENR
|=1<<2;
GPIOA
->CRH
&=0XFFFFFFF0;
GPIOA
->CRH
|=0X00000003;
}
void Delay_ms( volatile unsigned int t
)
{
unsigned int i
,n
;
for (n
=0;n
<t
;n
++)
for (i
=0;i
<800;i
++);
}
int main(void)
{
LEDInit();
while (1)
{
LED0
=0;
Delay_ms(500);
LED0
=1;
Delay_ms(500);
}
}
2.1、编译成功