STM32F103寄存器方式点亮LED

1. 新建工程

2. 给工程添加相关文件,相关文件的网址为STSW-STM32054 - STM32F10x标准外设库 - STMicroelectronics

直接点击“get latest”下载,需要的文件以及如何添加请参考以下博客(8条消息) stm32f103c8t6工程板的建立_你努力的样子,优秀至极-CSDN博客_stm32f103c8t6工程模板​​​icon-default.png?t=L9C2https://blog.csdn.net/weixin_42827999/article/details/1016996743. C语言编程实现流水灯

主要代码如下:

#include "stm32f10x.h"

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

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

#define DELAY Delay(void);

void LED_Init(void)
{
	RCC_APB2ENR |= 1<<3;//设置时钟
	GPIOA_CRL &=~(0x0F<<(4*1));
	GPIOA_CRL &=~(0x0F<<(4*2));
	GPIOA_CRL &=~(0x0F<<(4*3));//清零
	GPIOA_CRL |=(1<<(4*1));
	GPIOA_CRL |=(1<<(4*2));
	GPIOA_CRL |=(1<<(4*3));//推挽输出,10M
}

void Delay(void)//延时函数
{
    uint16_t i,j;
	for(i=0;i<19601;i++)//延时1s
        {
            for(j=5;j>0;j--);
        }
}
 
int main(void)
{
	LED_Init();//初始化准备工作
	while (1)
	{
		GPIOA_ODR &= ~(1<<1);//A1开
		DELAY;
		DELAY;
		DELAY;
		GPIOA_ODR |= 1<<1;//A1关
		GPIOA_ODR &= ~(1<<2);//A2开
		DELAY;
		DELAY;
		DELAY;
		GPIOA_ODR |= 1<<2;//A2关
		GPIOA_ODR &= ~(1<<3);//A3开
		DELAY;
		DELAY;
		DELAY;
		GPIOA_ODR |= 1<<3;//A3关
	}
}

程序的主要思路为:在《STM中文参考手册上》找到寄存器的位置,然后配置时钟使能,设置输入输出模式,设置最大速率,以实现三个LED灯的循环亮灯。

编译生成hex文件

4、文件的烧录

STM串口的下载以及文件烧录请参考以下博客

(8条消息) STM32串口下载程序_lengyuefeng212的博客-CSDN博客_stm32串口下载程序icon-default.png?t=L9C2https://blog.csdn.net/lengyuefeng212/article/details/1041783865、最终实验效果

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值