打印
[STM32F1]

STM32F103C8t6 寄存器点灯

[复制链接]
532|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
一、原理1.原理图

        STM32F103C8t6   LED0 接PC13引脚(不同板子的引脚不一样!)

        P代表GPIO   C代表GPIO端口C    13代表第十三位



2.原理(1)当PC13为低电平时LED灯点亮

(2)通过配置一系列寄存器使PC13为低电平

使用特权

评论回复
沙发
花间一壶酒sd|  楼主 | 2023-5-30 13:32 | 只看该作者
二、寄存器
1.端口配置表


     使用推挽输出,通过端口配置表找到需要使用的寄存器,分别为CNF、MODE(在端口配置低寄存器CRL和高寄存器CRH中)和ODR寄存器。

使用特权

评论回复
板凳
花间一壶酒sd|  楼主 | 2023-5-30 13:32 | 只看该作者
2.APB2外设时钟使能寄存器(RCC_APB2ENR)
(1)起始地址:0x4002 1000



(2)偏移地址:0x18

(3)端口C位置:APB2的第4位


使用特权

评论回复
地板
花间一壶酒sd|  楼主 | 2023-5-30 13:33 | 只看该作者
三、原码
#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);

}

使用特权

评论回复
5
花间一壶酒sd|  楼主 | 2023-5-30 13:33 | 只看该作者
四、现象

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

81

主题

1122

帖子

2

粉丝