1.先打开Kile5软件,创建一个工程LED 2.接着在弹出来的页面中选择stm32 3.创建.c文件进行编译 将一段从网上找到的LED灯程序进行编译`#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) //0x4001080C #define GPIOB_ODR_Addr (GPIOB_BASE+12) //0x40010C0C #define GPIOC_ODR_Addr (GPIOC_BASE+12) //0x4001100C #define GPIOD_ODR_Addr (GPIOD_BASE+12) //0x4001140C #define GPIOE_ODR_Addr (GPIOE_BASE+12) //0x4001180C #define GPIOF_ODR_Addr (GPIOF_BASE+12) //0x40011A0C #define GPIOG_ODR_Addr (GPIOG_BASE+12) //0x40011E0C #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)) //#define LED0 *((volatile unsigned long *)(0x422101a0)) //PA8 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 时钟开启 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); } } void SystemInit(void) { }4.最后显示编译成功就行啦
1.首先需要熟练掌握proteus的使用方法,这些就不介绍了,大家慢慢来,这是我前期搞得电路图,不是很好看,后面还修改了一些。 2.接着,我们需要在keil上面编写控制LED灯的程序并进行烤录到51单片机上面。 前面步骤和stm32编译一样,主要是要选择51单片机芯片,keil5上边没有C51,我们还是用keil4来做。
#include<reg51.h> into() interrupt 0 { P1=P1<<1|0x01; } main() { P1=0xfe; EA=1; EX0=1; IT0=1; do{}while(1); }代码比较简单。 3.我们在文件夹中找到其生成的.hex文件并将它考录到C51单片机中
4.最后仿真进行运行 当点击开关,LED灯从上到下依次亮起来。 总结:这次实验我主要做了stm32的编译以及proteus的仿真,感觉学到了很多。