STM32f103c6t6/STM32f103c8t6寄存器开发
目录
资料
寻址区
2区
TIMx
RTC
WWDG IWDG
SPI I2S
USART
I2C
USB全速设备寄存器
bxCAN
BKP
PWR
DAC
ADC
编辑
EXTI
编辑
GPIO AFIO
SDIO
DMA
CRC
RCC
FSMC
USB_OTG
ETH(以太网)
7区
配置流程
外部中断
硬件中断
例子
点灯
闪烁led
流水灯
键控led
资料
STM32F10x-中文参考手册
Cortex M3指南
stm32内核寄存器
寻址区

2区

TIMx

RTC

WWDG IWDG

SPI I2S

USART

I2C

USB全速设备寄存器

bxCAN

BKP

PWR

DAC

ADC
EXTI
GPIO AFIO

SDIO

DMA

CRC

RCC

FSMC

USB_OTG
待定
ETH(以太网)

7区


配置流程
外部中断
硬件中断
1.配置RCC_APB2ENR,使能GPIOx,AFIO
2.配置GPIOx_CRL/GPIOx_CRH,选择输入上拉或下拉模式和端口速度
3.配置EXTI_IMR,选择开放某条线上的中断请求
4.配置AFIO_EVCR,选择中断的触发引脚
5.配置AFIO_EXTICRx,根据中断引脚和EXTIx线进行配置
6.配置EXTI_RTSR/EXTI_FTSR,选择上升沿或下降沿触发
7.配置SCB_AIRCR,选择中断分组
8.配置PRI_x中断优先级寄存器阵列,根据中断号,中断分组和需要配置排队优先级与抢占优先级
9.配置SETENA寄存器族,根据中断号使能外部中断
10.读取 ACTIVE寄存器族,查看中断标志位
Cortex M3内核最多支持240个中断通道,但是STMF103C8T6/C6T6只设计了60个可屏蔽的中断通道。60个中断通道与它们在240个中断通道里的中断号是一样的。
用图表示必要流程:



例子
点灯
GPIO13低电平点亮led
#include<stdio.h>
int main(void){
//配置GPIOC时钟
*(unsigned *) 0x40021018 |= (1<<4);
//配置GPIOC为推挽模式输出
*(unsigned *) 0x40011004 &= ~(0xf<<20);
*(unsigned *) 0x40011004 |= (1<<21);}
1.使能GPIOC RCC时钟(配置RCC_APB2ENR RCC_APB2使能寄存器)
2.配置GPIOC13为推挽输出模式(配置GPIOC_CRH GPIOC端口高位寄存器)
闪烁led
GPIO13低电平点亮led
#include<stdio.h>
int main(void){int i;*(unsigned *) 0x40021012 |= (1<<4);*(unsigned *) 0x40011004 &= ~(0xF<<20);*(unsigned *) 0x40011004 |= (1<<21);while(1){for(i=0;i<0xfffff;i++);*(unsigned *) 0x4001100c = ~(*(unsigned *) 0x4001100c);}
}
1.使能GPIOC RCC时钟(配置RCC_APB2ENR RCC_APB2使能寄存器)
2.配置GPIOC13为推挽输出模式(配置GPIOC_CRH GPIOC端口高位寄存器)
3.配置GPIOC13输出电平(配置GPIOC_ODR GPIOC端口输出数据寄存器)
完成配置步骤1、2,通过不断改变 GPIOC端口输出数据寄存器 的配置实现led的亮灭
流水灯
B3,B4,B5高电平点亮三个led
#include<stdio.h>
int main(void){int i;//配置GPIOB时钟*(unsigned *) 0x40021018 |= (1<<3);//初始化GPIOB3,GPIOB4,GPIOB5*(unsigned *) 0x40010c00 &= ~(0xFFF000);*(unsigned *) 0x40010c00 |= (0x222<<12);while(1){*(unsigned *) 0x40010c0c &= 0;*(unsigned *) 0x40010c0c |= (1<<3);for(i=0;i<0xfffff;i++);*(unsigned *) 0x40010c0c &= 0;*(unsigned *) 0x40010c0c |= (1<<4);for(i=0;i<0xfffff;i++);*(unsigned *) 0x40010c0c &= 0;*(unsigned *) 0x40010c0c |= (1<<5);for(i=0;i<0xfffff;i++);}
}
1.使能GPIOB RCC时钟(配置RCC_APB2ENR RCC_APB2使能寄存器)
2.配置B3,B4,B5为推挽输出模式(配置GPIOB_CRL GPIOB端口低位寄存器)
3.配置B3,B4,B5的输出电平(配置GPIOB_ODR GPIOB端口输出数据寄存器)
完成配置步骤1、2,通过延时,改变 GPIOB端口输出数据寄存器 的配置实现led的轮流亮灭
键控led
#include<stdio.h>
int main(void){int i;//配置GPIOB,GPIOC的时钟*(unsigned *) 0x40021018 |= (3<<3);//初始化GPIOC*(unsigned *) 0x40011004 &= ~(0xf<<20);*(unsigned *) 0x40011004 |= (1<<21);//初始化GPIOB*(unsigned *) 0x40010c00 &= ~(0xf<<12);*(unsigned *) 0x40010c00 |= (8<<12);while(1){if((*(unsigned *) 0x40010c08 & (1<<3))==0){for(i=0;i<1000;i++)if((*(unsigned *) 0x40010c08 & (1<<3))==0){*(unsigned *) 0x4001100c = ~(*(unsigned *) 0x4001100c);}}}}
1.使能GPIOB,GPIOC RCC时钟(配置RCC_APB2ENR RCC_APB2使能寄存器)
2.配置GPIOC为推挽输出模式(配置GPIOC_CRH GPIOC端口高位寄存器)
3.配置PB3为上拉输入模式(配置GPIOB_CRL GPIOB端口低位寄存器)
4.配置GPIOC13输出电平(配置GPIOC_ODR GPIOC端口输出数据寄存器)
完成配置步骤1、2、3,通过判断GPIOB端口输出的是否为低电平,控制灯的亮灭
相关文章:
STM32f103c6t6/STM32f103c8t6寄存器开发
目录 资料 寻址区 2区 TIMx RTC WWDG IWDG SPI I2S USART I2C USB全速设备寄存器 bxCAN BKP PWR DAC ADC 编辑 EXTI 编辑 GPIO AFIO SDIO DMA CRC RCC FSMC USB_OTG ETH(以太网) 7区 配置流程 外部中断 硬件中断 例子 点灯 …...
MySQL Connection not available.
Mysql 报错 最近部署在服务器上的mysql总是报这种错。 但是在服务器上,使用命令行是可以登录进mysq的。 cursor db.cursor() File “/home/ubuntu/miniconda3/envs/chatbot_env/lib/python3.9/site-packages/mysql/connector/connection_cext.py”, line 700, in …...
PHP反序列化 字符串逃逸
前言 最近在打西电的新生赛,有道反序列化的题卡了很久,今天在NSS上刷题的时候突然想到做法,就是利用字符串逃逸去改变题目锁死的值,从而实现绕过 为了研究反序列化的字符串逃逸 我们先简单的测试下 原理 <?php class escape…...
DockerFile解析
1. 是什么 Dockerfile是田来构建Docker镜像的文本文件,是由一条条构建镜像所需的指令和参数构成的脚本 1.1 概述 1.2 官网 Dockerfile reference | Docker Documentation 1.3 构建三步骤 1. 编写dockerfile文件 2. docker build命令构建镜像 3. docker run依镜像运…...
斯坦福大学医学院教授:几年内ChatGPT之类的AI将纳入日常医学实践
注意:本信息仅供参考,分享此内容旨在传递更多信息之目的,并不意味着赞同其观点或证实其说法。 在一项新研究中,斯坦福大学研究人员发现,ChatGPT在复杂临床护理考试题中可以胜过一、二年级的医学生。此项研究显示&#…...
golang 命令行 command line (flag,os,arg,args)
目录 1. golang 命令行 command line1.1. Introduction1.2. Parsing Arguments from the command line (os package)1.2.1. Get the number of args1.2.2. Iterate over all arguments 1.3. Using flags package1.3.1. Parse Typed Flags1.3.2. Set flags from the script1.3.3…...
Shell语法揭秘:深入探讨常见Linux Shell之间的语法转换
深入探讨常见Linux Shell之间的语法转换 一、引言二、Linux常用Shell:Bash、Zsh、Ksh、Csh、Tcsh和Fish的简介2.1、Bash、Zsh、Ksh、Csh、Tcsh和Fish的特点和用途2.2、语法差异是常见Shell之间的主要区别 三、变量和环境设置的语法差异3.1、变量定义和使用的不同语法…...
Python3 基础语法
Python3 基础语法 编码 默认情况下,Python 3 源码文件以 UTF-8 编码,所有字符串都是 unicode 字符串。 当然你也可以为源码文件指定不同的编码: # -*- coding: cp-1252 -*- 上述定义允许在源文件中使用 Windows-1252 字符集中的字符编码&…...
spring boot分装通用的查询+分页接口
背景 在用spring bootmybatis plus实现增删改查的时候,总是免不了各种模糊查询和分页的查询。每个数据表设计一个模糊分页,这样代码就造成了冗余,且对自身的技能提升没有帮助。那么有没有办法实现一个通用的增删改查的方法呢?今天…...
【OpenCV】OpenCV环境搭建,Mac系统,C++开发环境
OpenCV环境搭建,Mac系统,C开发环境 一、步骤VSCode C环境安装运行CMake安装运行OpenCV 安装CMakeList 一、步骤 VSCode C环境安装CMake 安装OpenCV 安装CmakeList.txt VSCode C环境安装运行 访问官网 CMake安装运行 CMake官网 参考文档 OpenCV 安…...
node安装node-sass依赖失败(版本不一致)
1.官网对应node版本 https://www.npmjs.com/package/node-sass2.node-sass版本对应表...
联想小新Pro 16笔记本键盘失灵处理方法
问题描述: 联想小新Pro 16新笔记本开机准备激活,到连接网络的时候就开始触控板、键盘失灵,但是有意思的是键盘的背光灯是可以调节关闭的;外接鼠标是正常可以移动的,但是只要拔掉外接鼠标再插回去的时候就不能用了&…...
python 连接Redis 数据库
pip install redis python代码 import redis# 连接数据库 r redis.Redis(host192.168.56.15, port6379, db0)# 存储数据 #r.set(key, value) r.set(name, zaraNet)# 获取数据 value r.get(name) print(value)# 关闭连接(可选) r.close()...
使用 wxPython 和 pymupdf进行 PDF 加密
PDF 文件是一种常见的文档格式,但有时候我们希望对敏感信息进行保护,以防止未经授权的访问。在本文中,我们将使用 Python 和 wxPython 库创建一个简单的图形用户界面(GUI)应用程序,用于对 PDF 文件进行加密…...
Mysql性能优化:什么是索引下推?
导读 索引下推(index condition pushdown )简称ICP,在Mysql5.6的版本上推出,用于优化查询。 在不使用ICP的情况下,在使用非主键索引(又叫普通索引或者二级索引)进行查询时,存储引擎…...
Pytorch建立MyDataLoader过程详解
简介 torch.utils.data.DataLoader(dataset, batch_size1, shuffleNone, samplerNone, batch_samplerNone, num_workers0, collate_fnNone, pin_memoryFalse, drop_lastFalse, timeout0, worker_init_fnNone, multiprocessing_contextNone, generatorNone, *, prefetch_factorN…...
十问华为云 Toolkit:开发插件如何提升云上开发效能
众所周知,桌面集成开发环境(IDE)已经融入到开发的各个环节,对开发者的重要性和广泛度是不言而喻的,而开发插件更是建立在IDE基础上的功能Buff。 Huawei Cloud ToolKit作为华为云围绕其产品能力向开发者桌面上的延伸&a…...
NO.06 自定义映射resultMap
1、前言 在之前的博客中,实体类的属性名和数据库表的字段名是一致的,因此能正确地查询出所需要的数据。当实体类的属性名与数据库表的字段名不一致时,会导致查询出来的数据为空指针。要解决这个问题就需要使用resultMap自定义映射。 使用的…...
国产精品:讯飞星火最新大模型V2.0
大家好,我是爱编程的喵喵。双985硕士毕业,现担任全栈工程师一职,热衷于将数据思维应用到工作与生活中。从事机器学习以及相关的前后端开发工作。曾在阿里云、科大讯飞、CCF等比赛获得多次Top名次。现为CSDN博客专家、人工智能领域优质创作者。…...
网络综合布线实训室方案(2023版)
综合布线实训室概述 随着智慧城市的蓬勃发展,人工智能、物联网、云计算、大数据等新兴行业也随之崛起,网络布线系统作为现代智慧城市、智慧社区、智能建筑、智能家居、智能工厂和现代服务业的基础设施和神经网络,发挥着重要作用。实践表明,网络系统故障的70%发生在布线系统,直接…...
3D打印桥接工具:从设计到输出的全流程优化
3D打印桥接工具:从设计到输出的全流程优化 【免费下载链接】sketchup-stl A SketchUp Ruby Extension that adds STL (STereoLithography) file format import and export. 项目地址: https://gitcode.com/gh_mirrors/sk/sketchup-stl SketchUp STL插件是连接…...
低查重不是梦!AI写教材工具,让教材生成轻松又高效!
借助AI工具,开启教材创作新纪元 谁没有在编写教材框架时陷入困境呢?面对一张空白的文档,足足坐在那里半小时却不知道该从哪里开始——究竟是先介绍概念,还是先提供案例?章节划分该遵循逻辑还是按课时来的?…...
告别手动修改!用Env文件管理器一键配置Allegro SKILL加载路径(支持16.6/17.4)
告别手动修改!用Env文件管理器一键配置Allegro SKILL加载路径(支持16.6/17.4) 在PCB设计领域,Allegro作为行业标杆工具,其强大的可扩展性离不开SKILL脚本的支持。然而,随着项目复杂度提升,SKILL…...
深入对比:在Vivado中设计异步复位、同步复位和带使能D触发器的实战差异与选型建议
深入对比:在Vivado中设计异步复位、同步复位和带使能D触发器的实战差异与选型建议 当你在设计一个状态机或数据流水线时,是否曾为选择哪种D触发器而犹豫不决?异步复位、同步复位还是带使能的D触发器,每种设计都有其独特的应用场景…...
OpenClaw技能扩展:安装百川2-13B-4bits专用插件提升自动化能力
OpenClaw技能扩展:安装百川2-13B-4bits专用插件提升自动化能力 1. 为什么需要为OpenClaw安装专用插件 去年冬天,我在处理一批技术文档归档任务时,发现OpenClaw的基础能力虽然强大,但在处理特定领域内容时总有些力不从心。比如让…...
高基数路由器的最佳拍档?深入浅出解析Flattened Butterfly拓扑的优缺点与适用场景
高基数路由器的最佳拍档?深入浅出解析Flattened Butterfly拓扑的优缺点与适用场景 在构建大规模互连网络时,拓扑结构的选择往往决定了系统的性能上限和成本下限。当工程师面对高基数路由器(High-Radix Router)的选型时,…...
3KW无线充电系统设计:开环控制与闭环控制的MATLAB Simulink仿真模型,采用双边L...
3KW无线充电系统设计(MATLAB simulink仿真模型) 控制方式:开环控制闭环控制 拓扑结构:双边LCC拓扑结构 输入电压:750V 输出电压:400V 传输功率:3KW 最近在折腾一个3KW无线充电系统的仿真项目&am…...
【离线无忧】PyAutoGUI内网环境高效安装指南
1. 为什么需要离线安装PyAutoGUI? 最近接手了一个自动化测试项目,需要在完全隔离的内网环境中部署PyAutoGUI。刚开始觉得这不过是个普通的Python包,直到发现服务器连pip都跑不通时才意识到问题的严重性。这种场景在企业开发中其实非常常见—…...
零基础养龙虾:OpenClaw部署从入门到上手,一篇讲透!
2026年,OpenClaw(昵称 “龙虾”)凭借 “能真正动手干活” 的核心能力,成为开源AI Agent领域的顶流。它不仅能像ChatGPT一样聊天,更能自主操作电脑——整理文件、控制浏览器、发送邮件、甚至调用硬件设备。因其图标酷似…...
告别手动操作!用Word宏/VBA实现doc批量转docx的隐藏技巧
职场效率革命:Word宏/VBA零代码实现文档格式批量升级 每天面对堆积如山的.doc文件,行政文员小张总要手动打开每个文件另存为.docx格式——这个机械操作不仅耗时费力,还容易遗漏文件。其实微软Office内置的自动化工具能完美解决这个问题&#…...


