0.梦开始的地方

注:

        虽然说标题写的是开始,但我个人是学了一点点才想起将这个过程记录下来。全文仅用于未来的自己复习和回忆专用。

以下正文:

        一开始想学习stm32买了正点原子的v2精英开发板,奈何废话真的太多,看了20多节课还没开始跑代码,于是短暂将其封印,重新pdd买了套江科大的配件开始了学习,自己接线的感觉让我更有实感与动静,直到GPIO输入,开始自己写驱动与函数并调用,让我产生了底层知识并没有学牢的感觉,于是继续弃掉2倍速看起了野火的标准库教学。

记录下自己写的野火哥课上留的作业

实现RCC外设寄存器结构体声明,把时钟相关代码改成寄存器结构体操作方式

.h文件

#define  PERIPH_BASE               ((unsigned int)0x40000000)
#define  APB1PERIPH_BASE           PERIPH_BASE
#define  APB2PERIPH_BASE          (PERIPH_BASE + 0x10000)
#define  AHBPERIPH_BASE           (PERIPH_BASE + 0x20000)


#define  RCC_BASE                (AHBPERIPH_BASE + 0x1000)
#define  GPIOB_BASE              (APB2PERIPH_BASE + 0x0C00)

typedef unsigned int      uint32_t;
typedef unsigned short    uint16_t;

typedef struct
{
	uint32_t CR;
	uint32_t CFGR;
	uint32_t CIR;
	uint32_t APB2RSTR;
	uint32_t APB1RSTR;
	uint32_t AHBENR;
	uint32_t APB2ENR;
	uint32_t APB1ENR;
	uint32_t BDCR;
	uint32_t CSR;
}RCC_TypeDef;

#define RCC  ((RCC_TypeDef*)RCC_BASE)

typedef struct
{
	uint32_t CRL;
	uint32_t CRH;
	uint32_t IDR;
	uint32_t ODR;
	uint32_t BSRR;
	uint32_t BRR;
	uint32_t LCKR;
}GPIO_TypeDef;
#define GPIOB   ((GPIO_TypeDef*)GPIOB_BASE)
//关键语句,它将GPIOB_BASE强制转换为GPIO_TypeDef类型的指针。

.c文件

#include "stm32f10x.h"                  // Device header


int main(void)
{

    RCC->APB2ENR |= ( (1) << 3);
    GPIOB->CRL   |= ( (1) << (4*0));
    GPIOB->ODR   &=~(1<<0);       

}
    


void SystemInit(void)
{

}

最终实现给PB0低电平

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值