目录
一、原理
1.原理图
?2.原理
(1)当PC13为低电平时LED灯点亮
(2)通过配置一系列寄存器使PC13为低电平
二、寄存器
1.端口配置表
?2.APB2外设时钟使能寄存器(RCC_APB2ENR)
?3.端口配置高寄存器(GPIOx_CRH)? ?注:因为是13位所以选择高寄存器
?4.端口输出数据寄存器(GPIOx_ODR)
?三、原码
四、现象
一、原理
1.原理图
? ? ? ? STM32F103C8t6? ?LED0?接PC13引脚(不同板子的引脚不一样!)
? ? ? ? P代表GPIO? ?C代表GPIO端口C? ? 13代表第十三位
?2.原理
(1)当PC13为低电平时LED灯点亮
(2)通过配置一系列寄存器使PC13为低电平
二、寄存器
1.端口配置表
?????????使用推挽输出,通过端口配置表找到需要使用的寄存器,分别为CNF、MODE(在端口配置低寄存器CRL和高寄存器CRH中)和ODR寄存器。
?2.APB2外设时钟使能寄存器(RCC_APB2ENR)
(1)起始地址:0x4002 1000
(2)偏移地址:0x18
(3)端口C位置:APB2的第4位
?3.端口配置高寄存器(GPIOx_CRH)? ?注:因为是13位所以选择高寄存器
?(1)起始地址:0x4001 1000
?(2)偏移地址:0x04
?(3)输出方式及速度:推挽输出,最大速度2MHz? ?即:CNF13? ?:? ?00? ?MONE13? ?:?10
?(4)位置第20位
?4.端口输出数据寄存器(GPIOx_ODR)
? ?(1)? ?起始地址:0x4001 1000
(2)偏移地址:0x0C?
?(3)位置:第13位ODR
?三、原码
#define GPIOC_CLK (*(volatile unsigned int *)(0x40021000 + 0x18)) //确定GPIOC的外设使能寄存器的地址(RCC地址+偏移地址APB2)
#define GPIOC_CRH (*(volatile unsigned int *)(0x40011000 + 0x04)) //确定GPIOC的端口配置寄存器CRL(GPIOC的基地址+端口配置高寄存器CRH的偏移地址)
#define GPIOC_ODR (*(volatile unsigned int *)(0x40011000 + 0x0C)) //确定GPIOC的端口输出数据寄存器ODR(GPIOC的基地址+端口输出数据寄存器ODR的偏移地址)
int main(void)
{
//1.使能GPIOC的外设时钟
GPIOC_CLK |= (1<<4); //给IO端口C时钟使能
//2.GPIOB配置推挽输出模式
GPIOC_CRH &= ~(0xf<<(4*5)); //清除低4位寄存器
GPIOC_CRH |= (1<<(4*5)); //确定输出模式中的推挽输出
GPIOC_ODR &= ~(0x1<<(1*13)); //清除低13位寄存器
//GPIOC_ODR |= (1<<13);
}
四、现象
|