当前位置: 首页 > news >正文

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&#xff08;以太网&#xff09; 7区 配置流程 外部中断 硬件中断 例子 点灯 …...

MySQL Connection not available.

Mysql 报错 最近部署在服务器上的mysql总是报这种错。 但是在服务器上&#xff0c;使用命令行是可以登录进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反序列化 字符串逃逸

前言 最近在打西电的新生赛&#xff0c;有道反序列化的题卡了很久&#xff0c;今天在NSS上刷题的时候突然想到做法&#xff0c;就是利用字符串逃逸去改变题目锁死的值&#xff0c;从而实现绕过 为了研究反序列化的字符串逃逸 我们先简单的测试下 原理 <?php class escape…...

DockerFile解析

1. 是什么 Dockerfile是田来构建Docker镜像的文本文件&#xff0c;是由一条条构建镜像所需的指令和参数构成的脚本 1.1 概述 1.2 官网 Dockerfile reference | Docker Documentation 1.3 构建三步骤 1. 编写dockerfile文件 2. docker build命令构建镜像 3. docker run依镜像运…...

斯坦福大学医学院教授:几年内ChatGPT之类的AI将纳入日常医学实践

注意&#xff1a;本信息仅供参考&#xff0c;分享此内容旨在传递更多信息之目的&#xff0c;并不意味着赞同其观点或证实其说法。 在一项新研究中&#xff0c;斯坦福大学研究人员发现&#xff0c;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&#xff1a;Bash、Zsh、Ksh、Csh、Tcsh和Fish的简介2.1、Bash、Zsh、Ksh、Csh、Tcsh和Fish的特点和用途2.2、语法差异是常见Shell之间的主要区别 三、变量和环境设置的语法差异3.1、变量定义和使用的不同语法…...

Python3 基础语法

Python3 基础语法 编码 默认情况下&#xff0c;Python 3 源码文件以 UTF-8 编码&#xff0c;所有字符串都是 unicode 字符串。 当然你也可以为源码文件指定不同的编码&#xff1a; # -*- coding: cp-1252 -*- 上述定义允许在源文件中使用 Windows-1252 字符集中的字符编码&…...

spring boot分装通用的查询+分页接口

背景 在用spring bootmybatis plus实现增删改查的时候&#xff0c;总是免不了各种模糊查询和分页的查询。每个数据表设计一个模糊分页&#xff0c;这样代码就造成了冗余&#xff0c;且对自身的技能提升没有帮助。那么有没有办法实现一个通用的增删改查的方法呢&#xff1f;今天…...

【OpenCV】OpenCV环境搭建,Mac系统,C++开发环境

OpenCV环境搭建&#xff0c;Mac系统&#xff0c;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笔记本键盘失灵处理方法

问题描述&#xff1a; 联想小新Pro 16新笔记本开机准备激活&#xff0c;到连接网络的时候就开始触控板、键盘失灵&#xff0c;但是有意思的是键盘的背光灯是可以调节关闭的&#xff1b;外接鼠标是正常可以移动的&#xff0c;但是只要拔掉外接鼠标再插回去的时候就不能用了&…...

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)# 关闭连接&#xff08;可选&#xff09; r.close()...

使用 wxPython 和 pymupdf进行 PDF 加密

PDF 文件是一种常见的文档格式&#xff0c;但有时候我们希望对敏感信息进行保护&#xff0c;以防止未经授权的访问。在本文中&#xff0c;我们将使用 Python 和 wxPython 库创建一个简单的图形用户界面&#xff08;GUI&#xff09;应用程序&#xff0c;用于对 PDF 文件进行加密…...

Mysql性能优化:什么是索引下推?

导读 索引下推&#xff08;index condition pushdown &#xff09;简称ICP&#xff0c;在Mysql5.6的版本上推出&#xff0c;用于优化查询。 在不使用ICP的情况下&#xff0c;在使用非主键索引&#xff08;又叫普通索引或者二级索引&#xff09;进行查询时&#xff0c;存储引擎…...

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:开发插件如何提升云上开发效能

众所周知&#xff0c;桌面集成开发环境&#xff08;IDE&#xff09;已经融入到开发的各个环节&#xff0c;对开发者的重要性和广泛度是不言而喻的&#xff0c;而开发插件更是建立在IDE基础上的功能Buff。 Huawei Cloud ToolKit作为华为云围绕其产品能力向开发者桌面上的延伸&a…...

NO.06 自定义映射resultMap

1、前言 在之前的博客中&#xff0c;实体类的属性名和数据库表的字段名是一致的&#xff0c;因此能正确地查询出所需要的数据。当实体类的属性名与数据库表的字段名不一致时&#xff0c;会导致查询出来的数据为空指针。要解决这个问题就需要使用resultMap自定义映射。 使用的…...

国产精品:讯飞星火最新大模型V2.0

大家好&#xff0c;我是爱编程的喵喵。双985硕士毕业&#xff0c;现担任全栈工程师一职&#xff0c;热衷于将数据思维应用到工作与生活中。从事机器学习以及相关的前后端开发工作。曾在阿里云、科大讯飞、CCF等比赛获得多次Top名次。现为CSDN博客专家、人工智能领域优质创作者。…...

网络综合布线实训室方案(2023版)

综合布线实训室概述 随着智慧城市的蓬勃发展,人工智能、物联网、云计算、大数据等新兴行业也随之崛起,网络布线系统作为现代智慧城市、智慧社区、智能建筑、智能家居、智能工厂和现代服务业的基础设施和神经网络,发挥着重要作用。实践表明,网络系统故障的70%发生在布线系统,直接…...

【ElevenLabs商业增长实战手册】:20年AI语音赛道老兵亲授从0到月营收$2M的7个关键跃迁节点

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;ElevenLabs商业增长的核心范式迁移 传统AI语音服务商长期依赖“API调用量时长计费”模型&#xff0c;而ElevenLabs正系统性重构价值交付逻辑——从卖计算资源转向卖情感可信度与品牌声纹资产。这一迁移…...

SystemVerilog VPI动态数据处理机制与验证实践

1. SystemVerilog VPI动态数据处理机制深度解析在当今复杂的SoC验证环境中&#xff0c;SystemVerilog的动态数据类型已成为验证基础设施的核心组成部分。作为连接SystemVerilog与外部C/C程序的关键桥梁&#xff0c;VPI(Verilog Procedural Interface)的动态数据处理能力直接决定…...

AI提示词工程实战:结构化系统与用户提示词提升AI工具效能

1. 项目概述&#xff1a;一个为AI工具提供高质量提示词的“弹药库”如果你和我一样&#xff0c;每天都在和各种AI工具打交道——从写代码的Cursor、ChatGPT&#xff0c;到画图的Midjourney、DALL-E&#xff0c;再到处理数据的Pandas AI——那你肯定遇到过这样的时刻&#xff1a…...

InjectFix实战解析:在Unity IL2CPP环境下实现C#热修复的权衡与策略

1. InjectFix在IL2CPP环境下的核心价值 当你的Unity手游在应用商店上线后突然出现致命Bug&#xff0c;传统解决方案往往需要重新打包、提交审核、等待上架&#xff0c;这个过程可能耗时数天。而InjectFix提供的C#热修复能力&#xff0c;可以在不更新客户端的情况下快速修复线上…...

从SMP到NUMA:聊聊多核CPU时代Linux内存管理是怎么‘进化’的

从SMP到NUMA&#xff1a;多核CPU时代的内存管理演进之路 2000年代初&#xff0c;当单核CPU的主频竞赛逐渐触及物理极限时&#xff0c;计算机架构师们面临一个关键抉择&#xff1a;如何在芯片上堆叠更多晶体管&#xff1f;答案最终指向了多核设计。但随之而来的内存访问瓶颈&…...

别再花钱买服务器了!手把手教你用Sakura Frp免费搞定内网穿透(Windows保姆级教程)

零成本实现内网穿透&#xff1a;Windows平台实战指南 在个人开发和小型项目测试阶段&#xff0c;许多开发者都面临一个共同难题——如何将本地服务暴露到公网供临时访问&#xff1f;传统解决方案往往需要租用云服务器&#xff0c;不仅成本高昂&#xff0c;配置过程也相当复杂。…...

服务器运维与DevOps融合:迈向智能化运维的新纪元

在数字化浪潮席卷全球的今天&#xff0c;企业对IT基础设施的依赖程度日益加深&#xff0c;服务器运维作为支撑业务连续性和系统稳定性的核心环节&#xff0c;正面临前所未有的挑战与机遇。传统运维模式依赖人工干预、响应滞后、效率低下&#xff0c;已难以满足现代业务快速迭代…...

AI 绘图新进展:GPTimage2 系列(含 4K 超清版)全量上线及直连 API 体验指南

随着 AIGC&#xff08;人工智能生成内容&#xff09;技术的快速迭代&#xff0c;近期备受关注的 GPTimage2 系列模型已全量上线。作为 AI 绘图领域的新晋生力军&#xff0c;GPTimage2 在图像生成质量、细节刻画上展现出了极强的竞争力。特别值得一提的是&#xff0c;本次不仅上…...

Unity游戏逆向第一步:手把手教你从APK里提取Assembly-CSharp.dll(附ILSpy使用指南)

Unity游戏逆向实战&#xff1a;从APK提取C#脚本的完整指南 在移动游戏开发领域&#xff0c;Unity引擎凭借其跨平台特性占据了重要地位。对于开发者而言&#xff0c;了解Unity打包后的文件结构不仅是调试的必要技能&#xff0c;也是学习优秀游戏设计的重要途径。本文将详细介绍如…...

5分钟打造专业音频可视化桌面:Lano Visualizer开源工具实战指南

5分钟打造专业音频可视化桌面&#xff1a;Lano Visualizer开源工具实战指南 【免费下载链接】Lano-Visualizer A simple but highly configurable visualizer with rounded bars. 项目地址: https://gitcode.com/gh_mirrors/la/Lano-Visualizer 你是否曾经想过&#xff…...