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%发生在布线系统,直接…...

多模态2025:技术路线“神仙打架”,视频生成冲上云霄
文|魏琳华 编|王一粟 一场大会,聚集了中国多模态大模型的“半壁江山”。 智源大会2025为期两天的论坛中,汇集了学界、创业公司和大厂等三方的热门选手,关于多模态的集中讨论达到了前所未有的热度。其中,…...

【OSG学习笔记】Day 18: 碰撞检测与物理交互
物理引擎(Physics Engine) 物理引擎 是一种通过计算机模拟物理规律(如力学、碰撞、重力、流体动力学等)的软件工具或库。 它的核心目标是在虚拟环境中逼真地模拟物体的运动和交互,广泛应用于 游戏开发、动画制作、虚…...

2025年能源电力系统与流体力学国际会议 (EPSFD 2025)
2025年能源电力系统与流体力学国际会议(EPSFD 2025)将于本年度在美丽的杭州盛大召开。作为全球能源、电力系统以及流体力学领域的顶级盛会,EPSFD 2025旨在为来自世界各地的科学家、工程师和研究人员提供一个展示最新研究成果、分享实践经验及…...

python/java环境配置
环境变量放一起 python: 1.首先下载Python Python下载地址:Download Python | Python.org downloads ---windows -- 64 2.安装Python 下面两个,然后自定义,全选 可以把前4个选上 3.环境配置 1)搜高级系统设置 2…...
java调用dll出现unsatisfiedLinkError以及JNA和JNI的区别
UnsatisfiedLinkError 在对接硬件设备中,我们会遇到使用 java 调用 dll文件 的情况,此时大概率出现UnsatisfiedLinkError链接错误,原因可能有如下几种 类名错误包名错误方法名参数错误使用 JNI 协议调用,结果 dll 未实现 JNI 协…...

Opencv中的addweighted函数
一.addweighted函数作用 addweighted()是OpenCV库中用于图像处理的函数,主要功能是将两个输入图像(尺寸和类型相同)按照指定的权重进行加权叠加(图像融合),并添加一个标量值&#x…...
Frozen-Flask :将 Flask 应用“冻结”为静态文件
Frozen-Flask 是一个用于将 Flask 应用“冻结”为静态文件的 Python 扩展。它的核心用途是:将一个 Flask Web 应用生成成纯静态 HTML 文件,从而可以部署到静态网站托管服务上,如 GitHub Pages、Netlify 或任何支持静态文件的网站服务器。 &am…...
第25节 Node.js 断言测试
Node.js的assert模块主要用于编写程序的单元测试时使用,通过断言可以提早发现和排查出错误。 稳定性: 5 - 锁定 这个模块可用于应用的单元测试,通过 require(assert) 可以使用这个模块。 assert.fail(actual, expected, message, operator) 使用参数…...

高危文件识别的常用算法:原理、应用与企业场景
高危文件识别的常用算法:原理、应用与企业场景 高危文件识别旨在检测可能导致安全威胁的文件,如包含恶意代码、敏感数据或欺诈内容的文档,在企业协同办公环境中(如Teams、Google Workspace)尤为重要。结合大模型技术&…...
Neo4j 集群管理:原理、技术与最佳实践深度解析
Neo4j 的集群技术是其企业级高可用性、可扩展性和容错能力的核心。通过深入分析官方文档,本文将系统阐述其集群管理的核心原理、关键技术、实用技巧和行业最佳实践。 Neo4j 的 Causal Clustering 架构提供了一个强大而灵活的基石,用于构建高可用、可扩展且一致的图数据库服务…...