一、keil安装与环境配置
1. keil的下载和安装
下载
链接:https://pan.baidu.com/s/1ug4ez9yRrda07KoaaOBGqQ 提取码:3l3q
安装
打开mdk531.exe 运行成功后,出现安装导向,点击“Next” 勾选agree并next 选择软件路径和支持包路径然后next 填写完注册信息后next 等待安装完成后finish
注册
解压并打开文件夹kegen_new2032,运行该程序 打开Keil uVision5(以管理员身份运行),点击File,找到License Management并点击 复制CID到注册器中,target选择ARM,最后点击Generate会生成一个注册码 将生成的注册码粘贴到License Management对应的位置,然后点击AddLIC,再点击Close就结束了。
2.支持包下载安装
支持包的下载地址 http://www.keil.com/dd2/pack 点击keil.STM32F1xx_DFP.2.1.0.pack,NEXT开始安装,安装完成,点击Finish
二、一个stm32简单程序编译——LED闪烁
1.新建工程
打开Keil uVision5,点击project->New uVision Project,然后命名。
选择需要使用的stm32芯片(此处使用STM32F103R8) 对Run-Time Environment进行设置,设置完成后,点击OK,这样一个工程就建立完成
2.新建main.c文件
工程创建完毕后,在左上角点击新建文件,然后窗口出现了一个Text的文件 然后将下列代码复制粘贴到Text文本框内
#define PERIPH_BASE ((unsigned int)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);
}
}
复制粘贴完后,点击左上角保存按钮,在弹出的窗口内,输入文件名main.c(如果不加后缀,就不会是.c文件),点击保存,而后Text1文件就变成了main.c文件。
右键点击 Source Group 1 ,然后点击 Add Existing Files to Group …(在工程下添加main.c文件) add完成如下
3、编译程序
点击左上角编译按钮(build),开始编译程序,此时0错误,0警告,表示编译成功。 编译完成
4、stm32程序仿真调试
(1)设置
首先点击 魔法棒,然后在弹出的窗口内,点击 Debug,勾选 Use Simulator ,再选择 ULINK2/ME Cortex Debugger ,并点击 Settings 。 确定一下Port是JTAG,Reset可以设置为Autodetect或SYSRESEETREQ,然后点击OK返回上一级窗口,再点击OK。
(2)调试
选中1处带有红色d的放大镜开始调试,在2处就是仿真调试所需要的调试工具。
四、总结
在本次实验中我学会了如何安装MDK软件、建立工程、编写代码、编译程序、仿真调试等操作,实验用的代码不用深入了解,只是进行一个简单的程序编译调试。
|