江科大学习笔记 _1.寄存器点灯
从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);