使用Keil给stm32f103xx创建一个点亮LED灯程序

STM32是非常常见的一种单片机,在平常的生成生活中有广泛的应用和市场。STM32一般是通过Keil进行编程,这里我们通过使用Keil给stm32f103xx创建一个点亮LED灯Helloword程序,一起来进入STM32的世界。

首先,打开Keil然后新建一个项目。

创建一个存放名为T110项目的文件夹


选择本次项目需要用到那些库文件,因为本次项目只是用寄存器点亮LED灯,所以仅选CORE和Startup即可。

然后点击工程User110目录,点击”AddExisting Files…”按钮,将刚才创建的main.c文件正式添加到工程目录里。


下面为本次项目仅需编辑的的一个文件main.c文件要用到的代码;

//========代码开始=============

#include "stm32f10x.h"

 

//BY202303OK--STM32F103C8T6---KEIL534---LED灯负极连B5针脚并且正极连接3V3针脚

//以寄存器方式点LED灯

//编译出HEX文件后,用Flash Loader工具烧写到开发板。

//新建工程仅勾选了CORE,Startup两个选项。

//https://blog.csdn.net/m0_57277815/article/details/127252068

 

//----------------APB2使能时钟寄存器 ---------------------

#define RCC_APB2ENR       *((unsigned volatile int*)0x40021018)

//----------------GPIOA配置寄存器 -----------------------

#define GPIOA_CRL            *((unsigned volatile int*)0x40010800)

#define   GPIOA_ODR         *((unsigned volatile int*)0x4001080C)

//----------------GPIOB配置寄存器 -----------------------

#define GPIOB_CRL            *((unsigned volatile int*)0x40010C00)

#define   GPIOB_ODR         *((unsigned volatile int*)0x40010C0C)

//----------------GPIOC配置寄存器 -----------------------

#define GPIOC_CRH           *((unsigned volatile int*)0x40011004)

#define   GPIOC_ODR         *((unsigned volatile int*)0x4001100C)

 

 

//延时函数

void Delay()

{

       u32i=0;

       for(;i<2000000;i++);

}

 

 

int main(void)

{

       RCC_APB2ENR|=1<<2|1<<3|1<<4;                   //APB2-GPIOA、GPIOB、GPIOC外设时钟使能,

 

       GPIOA_CRL&=0xFFF0FFFF;        //设置位 清零     

       GPIOA_CRL|=0x00020000;          //PB5推挽输出

       GPIOA_ODR&=~(1<<4);                          //设置初始灯为灭

 

       GPIOB_CRL&=0xFF0FFFFF;         //设置位 清零     

       GPIOB_CRL|=0x00200000;           //PB5推挽输出

       GPIOB_ODR&=~(1<<5);                          //设置初始灯为灭

 

       GPIOC_CRH&=0xF0FFFFFF;        //设置位 清零     

       GPIOC_CRH|=0x02000000;          //PB5推挽输出

       GPIOC_ODR&=~(1<<14);                 //设置初始灯为灭       

 

 

       while(1){

              //A灯

              GPIOA_ODR|=1<<4;                  //PB5高电平

              Delay();

              GPIOA_ODR&=~(1<<4);            //PB5低电平,因为是置0,所以用按位与

 

              //B灯

              GPIOB_ODR|=1<<5;                   //PB5高电平

              Delay();

              GPIOB_ODR&=~(1<<5);            //PB5低电平,因为是置0,所以用按位与

 

              //C灯

              GPIOC_ODR|=1<<14;                        //PB5高电平

              Delay();

              GPIOC_ODR&=~(1<<14);          //PB5低电平,因为是置0,所以用按位与

       }

}

//=========代码结束==============


33

44

55

本文由作者自行上传发布,文章仅代表作者个人观点。如需转载,务必声明出处和网址,否则保留相关权利。

网友评论 comments

发表评论

电子邮件地址不会被公开。必填项已用 *标注

暂无评论

牛人技术博客 | About US | 湘ICP备13000282号-8 |
Copyright © 2009 - 2023 NRJS Corporation, All Rights Reserved
添加图标到手机桌面
扫二维码
扫二维码
返回顶部