笔记(STM32篇)day1——工程创建、操作寄存器点灯

2023-05-16

目录

一、STM32F103VET6

二、创建工程

1.主要文件

2.生成文件

三、操作寄存器点灯


前言

       这一年,从调剂到各种找工作面试、去实习,感受总结下来就是“出走半生,归来仍是萌新”,作为一个自动化爬了四年的学生,发现自己不管是对于基础的C、电路、模数电,到通信协议、RTOS、Linux,再到机器学习,都只是知道了解,但知道的不多这种程度,真是在面试要说出个一二的时候,多少有点困难。

       为了巩固基础,买了块野火的32板子,这个笔记就作为记录,从点灯开始。


一、STM32F103VET6

Cortex-M3:ARM公司推出的基于ARMv7架构的32位Cortex-M3微控制器内核。

STM32:ST(意法半导体)公司就推出的基于Cortex-M3内核的MCU—STM32。

 图1 STM32F103VET6命名规则

 图2 STM32芯片结构


二、创建工程

1.主要文件

startup_stm32f10x_hd.s:stm32启动文件,汇编语言。

stm32f10x.h:库文件,存放寄存器映射代码。

main.c:主函数(mian.c(doge))

2.生成文件

文件夹作用
DebugConfig用于存放调试设置信息文件(.dbgconf),不可删除
Listings​用于存放编译过程产生的链接列表等文件​
Objects​
用于存放编译过程产生的调试信息、.hex、预览、.lib文件等

三、操作寄存器点灯

根据目标GPIO,查询参考手册找到时钟寄存器、端口配置寄存器、数据输出寄存器的地址及其偏移量,通过位操作来改变寄存器状态,从而实现功能。

常用位操作:

把变量的首位,置1:|= (1<<0)  

把变量的首位,置0:&= ~(1<<0)

把变量的首位,取反:^= (1<<0)

变量从首位开始的连续两位,置0:&= ~(3<<0)

例:a = 1110 1110(0xEE)后两位置0:

               3<<0:0000 0011(0x03)

               ~(3<<0):1111 1100(0xFC)

               a &= ~(3<<0):1110 1100(0xEC)

图3 LED原理图

根据LED原理图,将PB0置低电平即可使RGB灯绿色点亮。因此,根据顺序:

1、使能时钟:RCC时钟控制器属于AHB总线,首地址为0x4002 1000。因为需要配置的PB0属于APB2总线,则找到APB2 外设时钟使能寄存器(RCC_APB2ENR)的偏移地址为0x18,从而将0x4002 1018地址下第三位数据置1,打开PB0的时钟。

2、配置输入输出端口:端口操作前需要先配置它的模式。有端口配置低寄存器,负责低8位;端口配置高寄存器,负责高8位。要配置PB0,则去配置低8位寄存器GPIOB_CRL。控制GPIOB_CRL低位配置寄存器,地址为0x40010C00,偏移0x00,PB0通用推挽输出00,模式为输出01。

图4 GPIOB_CRL寄存器

GPIOB_CRL中,每4位配置一个端口,则PB0配置为0-3位。

对于CNF:

        在输入模式(MODE[1:0]=00):
                00:模拟输入模式
                01:浮空输入模式(复位后的状态) 
                10:上拉/下拉输入模式
                11:保留
        在输出模式(MODE[1:0]>00):
                00:通用推挽输出模式
                01:通用开漏输出模式
                10:复用功能推挽输出模式
                11:复用功能开漏输出模式

对MODE:

        00:输入模式(复位后的状态) 
        01:输出模式,最大速度10MHz 
        10:输出模式,最大速度2MHz 
        11:输出模式,最大速度50MHz

3、配置输出数据端口:GPIOB基地址0X4001 0C00,GPIOB_ODR偏移量0x0C,PB0置0即对

 0X4001 0C0C地址下的数据首位置0。

通过DAP下载到板上即可点亮RGB。三个步骤代码如下:

#include "stm32f10x.h"

int main(void)
{ 
	*(unsigned int*)0x40021018 |= (1<<3);		
    //控制RCC寄存器打开时钟,RCC偏移0x18为APB2时钟,寄存器第三位为PB使能

	*(unsigned int*)0x40010C00 |= ((1)<<(4*0));		
    //控制GPIOB_CRL低位配置寄存器,偏移0x00,PB0通用推挽输出00,模式为输出01

	*(unsigned int*)0x40010C0C &= ~(1<<0);		
    //控制GPIOB_ODR输出数据寄存器,偏移0x0C,寄存器首位即PB0
	
}

参考

[野火®]STM32库开发实战指南——基于野火指南者开发板 — [野火]STM32库开发实战指南——基于野火指南者开发板 文档https://doc.embedfire.com/mcu/stm32/f103zhinanzhe/std/zh/latest/index.html

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

笔记(STM32篇)day1——工程创建、操作寄存器点灯 的相关文章

随机推荐

  • Pytorch关于卷积核(Conv2d)的简单操作与模型修剪

    在使用Pytorch搭建深度学习算法时 xff0c torch nn Conv2d是用得最多的函数之一 Conv2d函数主要是对输入数据做卷积运算 输入参数如下图 xff1a torch nn Conv2d函数所生成的卷积核主要包括weig
  • 小觅相机运行VINS-Fusion(一)

    写在前面的话 xff1a 1 本文基于自己的另一篇博文win10 43 ubuntu16 04 43 ROS Kinetic 2 参考 4 是一篇非常好的帖子 xff0c 但由于小觅托管在github的代码在不断更新 xff0c 故需在某些
  • 正点原子stm32F407学习笔记3——蜂鸣器实验

    一 硬件设计 蜂鸣器为有源蜂鸣器 xff0c 当 PF 8 输出高电平的时候 xff0c 蜂鸣器将发声 xff0c 当 PF 8 输出低电平的时候 xff0c 蜂鸣器停止发声 xff0c 硬件原理图如下 二 软件设计 1 新建beep c文
  • Ubuntu 安装Cmake

    1 安装Cmake 1 Cmake与makefile xff1a Cmake好处是 1 可以自动化生成makefile xff0c 不需要手动编写 2 跨平台 可生成 native 编译配置文件 在 Linux Unix 平台 生成 mak
  • 什么是字节序?

    字节序 字节序 xff0c 顾名思义 xff0c 就是字节组织的顺序 我们可以将其根据其存储时从低位开始还是从高位开始分为两种 xff0c 具体如下 xff1a 类型简写本质大端BE big endian 将高序字节存储在起始地址小端LE
  • PX4开发基础

    文章目录 一 与无人机的缘分二 开发前三 背景知识硬件PIXHAWKpixhawkV1 xff1a pixhawkV2 xff1a pixhawkV3x xff1a PX4 xff08 推荐 xff09 地面站 xff08 GCS xff0
  • 利用蜂鸣器播放音乐

    我们知道 xff0c 蜂鸣器可分为有源蜂鸣器和无源蜂鸣器 xff0c 有源蜂鸣器内置了频率发生电路 xff0c 因此其通电就能够发出声音 xff0c 但是其频率是固定的 xff0c 而无源蜂鸣器内部没有频率发生电路 xff0c 需要外界给予
  • 51单片机之智能小车(避障、跟随、循迹)

    目录 基本概述 硬件组成 功能 关键字 模块介绍 电机模块L9110S 循迹模块 xff08 TCRT5000传感器 xff09 红外避障模块 测速模块 小车 移动小车 xff08 控制电机转动 xff0c 使小车前进 后退 左转 右转 x
  • PX4开发环境搭建(Ubuntu1804+QGC+Qt Creator )

    文章目录 前言一 安装环境二 PX4环境搭建1 在虚拟机中安装Ubuntu2 安装PX4环境 1 下载PX4源码 xff1a 2 安装工具链 3 jMAVSim仿真 4 编译验证 三 安装QGC四 安装Qt Creator五 镜像分享 前言
  • ESP8266————AT指令+网络透传

    一 AT指令 ESP8266可以通过串口的AT指令和其他设备进行通讯或控制 刚开始我以为AT指令是ESP8266本就封装好的 xff0c 直接就可以用 xff0c 结果不是 xff0c 需要自己安装AT固件 xff0c 安装好固件之后直接用
  • 修改pip安装路径的方法

    当我们需要安装python的第三方库时 xff0c 通常都是打开cmd输入pip install xxx去安装 但是默认安装路径在C盘 xff0c 极大占用空间 xff0c 看看我的C盘空间 xff0c 已经不足了 xff01 xff01
  • 详细介绍如何在华为云调用SDK的Python代码(以文字识别OCR技术实现身份证识别为例)

    文章目录 1 保存信息2 安装SDK3 生成代码 1 保存信息 首先我们在首页的产品一栏输入OCR xff0c 找到文字识别OCR 然后找到证件类 xff0c 并点击 xff0c 然后点击立即使用 进入到文字识别 控制台 xff0c 找到身
  • 还是搞不懂Anaconda是什么?读这一篇文章就够了

    文章目录 1 Anaconda介绍2 conda介绍3 安装Anaconda4 Anaconda的使用配置Anaconda源 5 创建虚拟环境并使用5 1 创建虚拟环境5 2 查看所有环境5 3 激活环境5 4 安装包5 4 1 conda
  • 安装tensorflow的GPU版本(详细图文教程)--CUDA11.6的安装

    文章目录 TensorFlow简介TensorFlow是什么tensorflow版本变迁tensorflow 2 0 架构 安装过程常用IDE安装python3 9的安装Anaconda的安装 CUDA安装cuda软件安装cuDNN神经网络
  • 解决visual studio C++ build tools时安装包缺失或损坏的问题(亲测绝对有用!!!)

    安装visual studio C 43 43 build tools时遇到安装包缺失或损坏的问题 这个问题真的困扰我好久 xff0c 尝试过很多种办法都失败了 xff0c 我真的很无语 我尝试过卸载掉visual studio重新下载 用
  • ROS1学习笔记:tf坐标系广播与监听的编程实现(ubuntu20.04)

    参考B站古月居ROS入门21讲 xff1a tf坐标系广播与监听的编程实现 基于VMware Ubuntu 20 04 Noetic版本的环境 文章目录 一 创建功能包二 创建代码2 1 以C 43 43 为例2 1 1 配置代码编译规则2
  • Ubuntu上使用Qt Creator编译、下载PX4代码

    文章目录 一 创建工程文件二 Qt 加载工程文件三 工程的配置四 编译工程五 下载程序六 连接QGC验证 一 创建工程文件 在命令行执行以下几条命令 xff1a span class token function cd span src F
  • ROS1学习笔记:launch启动文件的使用方法

    参考B站古月居ROS入门21讲 xff1a launch启动文件的使用方法 基于VMware Ubuntu 20 04 Noetic版本的环境 文章目录 一 launch的文件结构二 launch的文件语法2 1 根元素2 2 参数设置2
  • ROS1学习笔记:常用可视化工具的使用(ubuntu20.04)

    参考B站古月居ROS入门21讲 xff1a 常用可视化工具的实现 基于VMware Ubuntu 20 04 Noetic版本的环境 文章目录 一 日志输出工具 xff1a rqt console二 绘制数据曲线 xff1a rqt plo
  • 笔记(STM32篇)day1——工程创建、操作寄存器点灯

    目录 一 STM32F103VET6 二 创建工程 1 主要文件 2 生成文件 三 操作寄存器点灯 前言 这一年 xff0c 从调剂到各种找工作面试 去实习 xff0c 感受总结下来就是 出走半生 xff0c 归来仍是萌新 xff0c 作为