STM32_寄存器版本代码第一篇LED灯

使用STM32f103C8T6点亮LED小灯

这是第一次写博客,把自己所学分享给大家,欢迎大家评论给出建议,谢谢。

所需设备:STM32f103C8T6最小系统板和Jlink下载器

项目流程

Created with Raphaël 2.2.0 目标:点亮LED灯 电路连接 程序编写 寄存器配置说明 LED灯亮

电路连接——电路图

LED灯与芯片连接图
电路图所示当PC13管脚拉低时电路导通LED灯亮,反之则熄灭。

程序编写

LED文件

如图两个文件
在这里插入图片描述

led.h头文件描述+代码
#ifndef __LED_H
#define __LED_H	 
#include "sys.h"
#define LED13 PCout(13)	
// PCout(13)函数作用设置PC13端口为输出:PCout(13)=1,PC13端口为输出高电平
void LED_Init(void);	//LED灯寄存器初始化函数声明	
#endif
led.c文件描述+代码
#include "sys.h"   
#include "led.h"
void LED_Init(void)
{
	RCC->APB2ENR|=1<<4;     //使能PORTC时钟	   	 
	GPIOC->CRH&=0XFF0FFFFF; //清空寄存器四位控制一个端口
	GPIOC->CRH|=0x00100000; //P13 推挽输出   	 
    GPIOC->ODR|=1<<13;      //P13 输出高									  
}
main.c程序描述+代码
#include "sys.h"
#include "usart.h"		
#include "delay.h"	
#include "led.h"
int main(void)
{	
	/********系统初始化函数*****************/ 
	Stm32_Clock_Init(9); 	//系统时钟设置
	delay_init(72);	     	//延时初始化
	LED_Init();		  	 	//初始化与LED连接的硬件接口   
	/************************************/	
	while(1)
	{
	LED13=0;		//LED灯亮
    delay_ms(6000); //LED灯闪烁
	LED13=1;		//LED灯灭
	}	 
}
程序效果,如图

在这里插入图片描述在这里插入图片描述

寄存器配置说明

led.h头文件——PCout(13)说明

由于这个函数还没有研究明白,暂时不做详细描述

#define PCout(n)   BIT_ADDR(GPIOC_ODR_Addr,n)  //输出 
#define PCin(n)    BIT_ADDR(GPIOC_IDR_Addr,n)  //输入 

在这里插入图片描述
在这里插入图片描述

led.c寄存器配置说明

Created with Raphaël 2.2.0 时钟 RCC->APB2ENR 清空 端口配置高寄存器 端口配置高寄存器(GPIOx_CRH) 设置 端口配置高寄存器 端口配置高寄存器(GPIOx_CRH) 端口输出数据寄存器 端口输出数据寄存器(GPIOx_ODR) 配置结束

APB2 外设时钟使能寄存器(RCC_APB2ENR)

GPIO_C 位于APB2时钟上,4号为置1时钟使能(开启),置0时钟关闭

位操作:APB2ENR|=1<<4 讲1从0号位移动到4号位,再进行或运算(有1则1,其余不变)
在这里插入图片描述

清空 端口配置高寄存器 端口配置高寄存器(GPIOx_CRH)

在这里插入图片描述

GPIOC_13位于13位属于高位,23/22/21/20四个位控制GPIOc_13,

位操作CRH&=0XFF0FFFFF;清空 端口配置高寄存器,与运算(有0则0)
在这里插入图片描述
位操作CRH|=0x00100000;P13 推挽输出,最大速率10MHZ
在这里插入图片描述

端口输出数据寄存器 端口输出数据寄存器(GPIOx_ODR)

GPIOx->ODR 端口数据输出寄存器可写可读,可以设置IO口输出的值
GPIOC->ODR|=1<<13;//设置GPIOc_13 端口输出1(高电平)LED熄灭
执行完初始化函数后—LED不亮,执行GPIOC->ODR|=0<<13;或者LED13=0;才亮;在这里插入图片描述在这里插入图片描述
文章结束,初次写文章,比较混乱,目的是知识分享,谢谢大家欢迎讨论

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值