一、关于STM32寄存器
STM32F103C8T6是一款基于ARM Cortex-M 内核STM32系列的32位的微控制器,程序存储器容量是64KB,需要电压2V~3.6V,工作温度为-40°C ~ 85°C。STM32F103C8T6是一款由意法半导体公司(ST)推出的基于Cortex-M3内核的32位微控制器,硬件采用LQFP48封装,属于ST公司微控制器中的STM32系列。
其引脚图如下:

二、STM32实例之LED流水灯
1、GPIO端口初始化
(1)时钟配置
选用GPIO中的A、B、C三个端口
时钟寄存器映射地址



A、B、C三个端口的地址为:

2、找到偏移地址和A、B、C端口位置:


对应端口时钟代码:

//----------------APB2使能时钟寄存器 ---------------------
#define RCC_APB2ENR     *((unsigned volatile int*)0x40021018)RCC_APB2ENR|=1<<2|1<<3|1<<4;
(2)输入输出模式和输出速率配置
1、需要用到A4、B5、C14引脚采用推挽输出模式,输出模式,最大速度为2MHz
00:通用推挽输出模式
01:通用开漏输出模式
10:复用功能推挽输出模式
11:复用功能开漏输出模式
2、配置对应引脚寄存器,基地址+偏移量,
其代码位:

//----------------GPIOA配置寄存器 -----------------------
#define GPIOA_CRL ((unsigned volatile int)0x40010800)
//----------------GPIOB配置寄存器 -----------------------
#define GPIOB_CRL ((unsigned volatile int)0x40010C00)
//----------------GPIOC配置寄存器 -----------------------
#define GPIOC_CRH ((unsigned volatile int)0x40011004)

3、设置输出模式为推挽输出,输出速度为2Mhz
其代码为:

GPIOA_CRL&=0xFFF0FFFF; //设置位 清零
GPIOA_CRL|=0x00020000; //PA4推挽输出,把第19、18、17、16位变为0010

GPIOB_CRL&=0xFF0FFFFF;      //设置位 清零
GPIOB_CRL|=0x00200000;     //PB5推挽输出,把第23、22、21、20变为0010GPIOC_CRH&=0xFF0FFFFF;     //设置位 清零
GPIOC_CRH|=0x00200000;     //PC14推挽输出,把第23、22、21、20变为0010

2、创立工程文件
1.创建LSD文件
2、选择STM32F103C8
点击OK
在Manage Run-Time Environment界面选择cancel在led.c内编写程序:

#include “led.h”
//初始化 PB1 PC4 PD8为输出口.并使能这三个口的时钟
//LED IO 初始化
void LED_Init(void)
{
RCC->APB2ENR|=1<<2; //使能 PORTA 时钟
RCC->APB2ENR|=1<<3; //使能 PORTB 时钟
// RCC->APB2ENR|=1<<4; //使能 PORTC 时钟
// RCC->APB2ENR|=1<<5; //使能 PORTD 时钟
GPIOB->CRL&=0XFF0FFFFF;
GPIOB->CRL|=0X00300000;//PB.5 推挽输出
GPIOB->ODR|=1<<5; //PB.5 输出高

GPIOB->CRL&=0XFFFFFFF0;
GPIOB->CRL|=0X00000003;//PB.0 推挽输出
GPIOB->ODR|=1<<0; //PB.0 输出高GPIOA->CRL&=0XFFFFFF0F;
GPIOA->CRL|=0X00000030;//PA.1 推挽输出
GPIOA->ODR|=1<<1; //PA.1 输出高

}

led.h:

#ifndef __LED_H
#define __LED_H
#include “sys.h”
//LED 端口定义
#define LED0 PBout(5) // DS0
#define LED1 PBout(0) // DS1
#define LED2 PAout(1) // DS2
void LED_Init(void); //初始化
#endif

main.c:

#include “sys.h”
#include “delay.h”
#include “led.h”
int main(void)
{
Stm32_Clock_Init(9); //系统时钟设置
delay_init(72); //延时初始化
LED_Init(); //初始化与 LED 连接的硬件接口
while(1)
{
LED0=0;
LED1=1;
LED2=1;
delay_ms(1000);
LED0=1;
LED1=0;
LED2=1;
delay_ms(1000);
LED0=1;
LED1=1;
LED2=0;
delay_ms(1000);
}
}

编译:
![在这里插入图片描述](https://img-blog.csdnimg.cn/ef12f388750f488c9316d9b87a3331e7.png)烧录:![在这里插入图片描述](https://img-blog.csdnimg.cn/477e89b9259345df92f2a222d8e25e27.png)
烧录成功连线得到最终结果:
![在这里插入图片描述](https://img-blog.csdnimg.cn/db5c1475714f4dbbbfe61708aa814c41.gif#pic_center)参考博客:
https://blog.csdn.net/qq_46467126/article/details/120791793?spm=1001.2014.3001.5501
https://blog.csdn.net/m0_58406663/article/details/127250982?spm=1001.2014.3001.5502

STM32F103C8T6寄存器简单应用之LED流水灯相关推荐

  1. STM32F03寄存器方式点亮LED流水灯

    STM32F03寄存器方式点亮LED流水灯 文章目录 STM32F03寄存器方式点亮LED流水灯 一.题目内容 二.STM32F03系列芯片的地址映射和寄存器映射映射原理:了解GPIO端口的初始化设置 ...

  2. 用寄存器HAL库完成LED流水灯程序

    重庆交通大学信息科学与工程学院 <嵌入式系统开发>课程 作业报告(第4周) 班 级: 通信工程2001 姓名-学号 : 阎桂董-632007030622 实验项目名称: 作业题目 实验项目 ...

  3. STM32F103寄存器方式点亮LED流水灯

    实验要求:以 STM32最小系统核心板(STM32F103C8T6)+面板板+3只红绿蓝LED 搭建电路,使用GPIOB.GPIOC.GPIOD这3个端口控制LED灯,轮流闪烁,间隔时长1秒.1)写出 ...

  4. STM32Cubemx的安装及用寄存器HAL库完成LED流水灯程序

    目录 一.STM32CubeMx安装 (一)简介 (二)下载地址 1.官方下载地址 2.网盘下载地址 二.STM32CubeMX安装过程 三.HAL库安装 四.HAL库实现LED流水灯 (一)新建项目 ...

  5. ​用寄存器HAL库完成LED流水灯程序

    STM32的地址映射.寄存器映射原理以及GPIO端口的初始化设置三步骤 ​(一)STM32F103系列芯片的地址映射及寄存器映射原理 1.STM32F103C8T6简要介绍 ● STM32F103C8 ...

  6. 【嵌入式04】用寄存器HAL库完成LED流水灯程序

    目录 一.原理学习 1.寄存器映射原理 2.GPIO端口的初始化设置步骤 二.LED流水灯 1.程序设计思路 2.寄存器方式编程实现 3.HAL库编程实现 4.软件仿真 三.总结 四.参考链接 一.原 ...

  7. 用寄存器HAL库完成LED流水灯程序以及通过MDK5模拟示波器观察波形

    文章目录 前言 一.相关寄存器配置介绍 1.相关寄存器配置介绍 二.使用寄存器点亮LED灯 1.工程模板的建立 2.配置GPIO端口 3.主要函数 4.编译生成HEX文件 5.电路搭建 三.STM32 ...

  8. 用STM32F103C8T6实现红绿蓝LED流水灯

    目录 一.STM32F103C8T6简介 二.GPIOx端口的各寄存器地址和详细参数 2.1寄存器分别如下 2.2寄存器地址 2.3时钟地址 2.4GPIO寄存器描述CRL与CRH 2.5GPIO端口 ...

  9. 【嵌入式基础】用C语言编程、寄存器实现LED流水灯程序;stm32CubeMX+Keil使用HAL库点亮流水灯

    本文主要介绍STM32F103系列芯片的地址映射和寄存器映射原理,GPIO端口的初始化设置步骤.利用C语言编程和寄存器点亮流水灯以及stm32CubeMX+Keil使用HAL库点灯 目录 一.STM3 ...

最新文章

  1. Windows Server 2008 R2安装子域控制器
  2. linux 系统基础知识 - fdisk命令
  3. FileZilla Server简介及使用说明
  4. 一个跟jquery serializeArray()一起使用的函数,主要来方便提交表单。
  5. ​​​​​​​​​​​​​​使用dom方式遍历文档||获取元素||从元素中获取数据
  6. 使用EMR-Kafka Connect进行数据迁移
  7. python定时下载FTP指定文件
  8. dmg镜像 os vm 安装mac_dmg制作笔记:个性化自己的Mac软件安装包
  9. 华为OSN3500与路由器混合组网
  10. 电脑知识:DOS命令使用
  11. 1.5时钟控制的触发器(钟控JK、钟控T触发器)
  12. 怎么修改windows10在cmd下的用户名为英文名
  13. H5 编辑器 Tinymce之解决图片上传/粘贴
  14. 图象处理基本算法[整理]
  15. vue3.0 + JsBarcode 循环生成多个条形码(setup语法糖)
  16. js实现返回上一页(页面刷新与不刷新)
  17. 版署将出台新网游管理细则 资料片审批将明确
  18. 虚拟机上安装Windows操作系统
  19. 秋叶PPT-三分钟教程
  20. java全链路监控_使用SkyWalking+elasticsearch实现全链路监控

热门文章

  1. HTC Touch HD单挑iPhone手机
  2. 万兴PDF修改编辑软件 原PDFelement 7word转pdf转换软件
  3. 学嵌入式培训课程好不好?嵌入式培训课程哪家好?
  4. 城市智慧物业水泵房,消防泵房的解决方案
  5. python 爬动态壁纸
  6. 微信小程序登录流程php,微信小程序登录流程​
  7. 小程序大获成功,企业微信却不愠不火,如何破局?
  8. 易语言 取excel表格名称_给新手的python“Excel自动处理工具”教程
  9. c语言drawtext的用法,老师请问DRAWTEXT-文华财经知识 -程序化交易(CXH99.COM)
  10. 一款大功率6A 深度PWM调光的降压恒流驱动工作原理