欢迎光临散文网 会员登陆 & 注册

江科大学习笔记 _1.寄存器点灯

2023-06-09 12:12 作者:自闭选手的Z23  | 我要投稿

从0新建工程,用寄存器点灯

 

启动文件选择


使用STM32F10x固件库,找到下面6个文件


将这6个文件添加到一个文件夹内,命名为Start

新建一个文件夹,用于存放用户代码,命名为User

添加一个新的.c文件,命名为main

 

  

用魔法棒设置文件夹的路径,使编译器能找到文件

编译,无报错,工程新建好了。

 

 

 

 

 

寄存器点灯

首先添加头文件

写入main函数

Int main()

{

        While(1)

    {

     

    }

}

PB3|PB4|PB5上连接了3个灯,低电平点亮

需要控制输出PB3|PB4|PB5低电平

 

首先需要开GPIOB时钟,GPIOB挂载在APB2总线下

RCC->APB2ENR = (1 << 3);//开启GPIOB时钟

 PB3|PB4|PB5是低位引脚,使用GPIO的CRL寄存器

0011对应16进制就是3

使用推挽输出,速度50MHZ,所以CRL寄存器: 

GPIOB->CRL = 0X00333000;

GPIOB->CRL = 0X00333000;

也能这样写:

GPIOB->CRL &= 0XFF000FFF;

GPIOB->CRL |= 0X00333000;

 

 

GPIO 输出ODR寄存器输出0;

 


或者

GPIOB->ODR = (0 << 3)|(0 << 4)|(0 << 5);

编译下载,发现只亮了PB5

 

原因是PB3和PB4默认做JTAG调试使用,如当GPIO使用,

需要关闭JTAG调试功能 且 开启复用功能

 

RCC->APB2ENR = (1 << 3)|(1 << 0);//开GPIOB|AFIO时钟

AFIO->MAPR = 0x02000000; //关闭JTAG 释放出PB3,PB4,PA15

 

 RCC->APB2ENR = (1 << 3)|(1 << 0);//开GPIOB|AFIO时钟

    

    //PB3和PB4默认做JTAG调试使用,如当GPIO使用,需要关闭JTAG调试功能

  AFIO->MAPR = 0x02000000; //关闭JTAG 释放出PB3,PB4,PA15

    

  #if 0

  GPIOB->CRL = 0X00333000;//PB3|PB4|PB5

  #else

  GPIOB->CRL &= 0XFF000FFF;

  GPIOB->CRL |= 0X00333000;

  #endif 

GPIOB->ODR = (0 << 3)|(1 << 4)|(0 << 5);

 

 

 

 

 

 


江科大学习笔记 _1.寄存器点灯的评论 (共 条)

分享到微博请遵守国家法律