STM32F103C8T6寄存器简单应用之LED流水灯
一、关于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流水灯相关推荐
- STM32F03寄存器方式点亮LED流水灯
STM32F03寄存器方式点亮LED流水灯 文章目录 STM32F03寄存器方式点亮LED流水灯 一.题目内容 二.STM32F03系列芯片的地址映射和寄存器映射映射原理:了解GPIO端口的初始化设置 ...
- 用寄存器HAL库完成LED流水灯程序
重庆交通大学信息科学与工程学院 <嵌入式系统开发>课程 作业报告(第4周) 班 级: 通信工程2001 姓名-学号 : 阎桂董-632007030622 实验项目名称: 作业题目 实验项目 ...
- STM32F103寄存器方式点亮LED流水灯
实验要求:以 STM32最小系统核心板(STM32F103C8T6)+面板板+3只红绿蓝LED 搭建电路,使用GPIOB.GPIOC.GPIOD这3个端口控制LED灯,轮流闪烁,间隔时长1秒.1)写出 ...
- STM32Cubemx的安装及用寄存器HAL库完成LED流水灯程序
目录 一.STM32CubeMx安装 (一)简介 (二)下载地址 1.官方下载地址 2.网盘下载地址 二.STM32CubeMX安装过程 三.HAL库安装 四.HAL库实现LED流水灯 (一)新建项目 ...
- 用寄存器HAL库完成LED流水灯程序
STM32的地址映射.寄存器映射原理以及GPIO端口的初始化设置三步骤 (一)STM32F103系列芯片的地址映射及寄存器映射原理 1.STM32F103C8T6简要介绍 ● STM32F103C8 ...
- 【嵌入式04】用寄存器HAL库完成LED流水灯程序
目录 一.原理学习 1.寄存器映射原理 2.GPIO端口的初始化设置步骤 二.LED流水灯 1.程序设计思路 2.寄存器方式编程实现 3.HAL库编程实现 4.软件仿真 三.总结 四.参考链接 一.原 ...
- 用寄存器HAL库完成LED流水灯程序以及通过MDK5模拟示波器观察波形
文章目录 前言 一.相关寄存器配置介绍 1.相关寄存器配置介绍 二.使用寄存器点亮LED灯 1.工程模板的建立 2.配置GPIO端口 3.主要函数 4.编译生成HEX文件 5.电路搭建 三.STM32 ...
- 用STM32F103C8T6实现红绿蓝LED流水灯
目录 一.STM32F103C8T6简介 二.GPIOx端口的各寄存器地址和详细参数 2.1寄存器分别如下 2.2寄存器地址 2.3时钟地址 2.4GPIO寄存器描述CRL与CRH 2.5GPIO端口 ...
- 【嵌入式基础】用C语言编程、寄存器实现LED流水灯程序;stm32CubeMX+Keil使用HAL库点亮流水灯
本文主要介绍STM32F103系列芯片的地址映射和寄存器映射原理,GPIO端口的初始化设置步骤.利用C语言编程和寄存器点亮流水灯以及stm32CubeMX+Keil使用HAL库点灯 目录 一.STM3 ...
最新文章
- Windows Server 2008 R2安装子域控制器
- linux 系统基础知识 - fdisk命令
- FileZilla Server简介及使用说明
- 一个跟jquery serializeArray()一起使用的函数,主要来方便提交表单。
- ​​​​​​​​​​​​​​使用dom方式遍历文档||获取元素||从元素中获取数据
- 使用EMR-Kafka Connect进行数据迁移
- python定时下载FTP指定文件
- dmg镜像 os vm 安装mac_dmg制作笔记:个性化自己的Mac软件安装包
- 华为OSN3500与路由器混合组网
- 电脑知识:DOS命令使用
- 1.5时钟控制的触发器(钟控JK、钟控T触发器)
- 怎么修改windows10在cmd下的用户名为英文名
- H5 编辑器 Tinymce之解决图片上传/粘贴
- 图象处理基本算法[整理]
- vue3.0 + JsBarcode 循环生成多个条形码(setup语法糖)
- js实现返回上一页(页面刷新与不刷新)
- 版署将出台新网游管理细则 资料片审批将明确
- 虚拟机上安装Windows操作系统
- 秋叶PPT-三分钟教程
- java全链路监控_使用SkyWalking+elasticsearch实现全链路监控
热门文章
- HTC Touch HD单挑iPhone手机
- 万兴PDF修改编辑软件 原PDFelement 7word转pdf转换软件
- 学嵌入式培训课程好不好?嵌入式培训课程哪家好?
- 城市智慧物业水泵房,消防泵房的解决方案
- python 爬动态壁纸
- 微信小程序登录流程php,微信小程序登录流程​
- 小程序大获成功,企业微信却不愠不火,如何破局?
- 易语言 取excel表格名称_给新手的python“Excel自动处理工具”教程
- c语言drawtext的用法,老师请问DRAWTEXT-文华财经知识 -程序化交易(CXH99.COM)
- 一款大功率6A 深度PWM调光的降压恒流驱动工作原理