草庐IT

STM32第六节:GPIO输出——使用固件库点亮LED

前言    从这节课开始呢我们就正式进入了固件库编程,我们学习了GPIO口的相关知识,那么我们的第一个程序就写GPIO输出——使用固件库点亮LED吧。下面就让我们一起来学习,创作不易,点个三连支持一下吧!STM32第六节:GPIO输出——使用固件库点亮LEDLED原理    首先,我们还是先熟悉一下LED的原理图,我们所需要操作的io口为PB(0,1,5),即GPIOB寄存器上的操作。通过控制这三个端口的高低电平,来控制灯的亮灭。        对于F103的固件库编程拷贝模板    首先我们先拷贝一份上节课的工程模板,然后命名为本节课的内容(最好是英文,要不然可能会报错)。这里需要模板的可以

嵌入式arm开发板使用curl+openssl实现https通信

前言        最近做一个项目,需要在arm开发板实现httpspost功能,一开始按照网上的教程,将curl库移植到arm开发板,但是发现我移植的curl不支持https,后面继续查才知道curl库默认是不支持https的,要支持的话需要在移植的时候加入openssl库。移植环境虚拟机:ubuntu16.04交叉编译器:arm-linux-gnueabihf-gccopenssl版本:1.1.1vcurl版本:7.63.0openssl和curl的源码还有证书我已经长传至我的gitee,可以直接下载使用openssl+curl:嵌入式arm开发板使用curl+openssl实现https

STM32基于寄存器编程

在51中让一个引脚输出高低电平只需要一个步骤,而在32中至少需要三个步骤。开启对应GPIO的时钟配置对应IO口设置IO口本文将一步步进阶的讲解,四种寄存器编程的方法。使用地址赋值进行配置使用ST的宏进行配置只控制需要的位(位运算)与(&),或(|)左移>使用ST的宏进行位运算使用地址赋值进行配置 第一步:启动对应IO口时钟,这里我们以PA0,PA1,PA8为例。 从数据手册上可以看出,GPIOA在APB2时间线上,所以启动对应IO口时钟线,就是启动APB2。如何打开寄存器时钟?        这里以APB2外设使能寄存器(RCC_APB2ENR) 为例。启动寄存器本质上就是,找到寄存器的地址后

1909_Arm Cortex-M3编程模型

1909_Arm Cortex-M3编程模型全部学习汇总: g_arm_cores: ARM内核的学习笔记 (gitee.com)编程模型的部分除了单独的核心寄存器描述之外,它还包含有关处理器模式和软件执行和堆栈的特权级别的信息。处理器有两种模式,分别是线程模式和Handler模式;软件有两种权限级别,分别是非特权级别和特权级别。两种处理器模式种,线程模式主要是用来执行应用软件。当处理器从复位状态中出来之后会进入到线程模式。Handler模式是用来处理各种异常的,处理器在完成异常处理之后依然会回到线程模式。只有特权软件才能写入CONTROL寄存器以更改线程模式下软件执行的特权级别。非特权软件可

一、蓝桥杯嵌入式STM32G431RBT6_点亮LED

文章目录前言1.CubeMx配置1.1时钟源的选择1.2时钟树的配置1.3配置引脚1.4文件配置1.5工程配置2.代码编写2.1代码编写步骤2.2LED测试代码编写3.代码编写方法二前言下面对STM32G431进行模块化学习,本文先学习CubeMX的配置以及点灯操作。1.CubeMx配置1.1时钟源的选择1.2时钟树的配置HCLK一般取80(使用ADC的情况下)1.3配置引脚在产品手册中可以找到STM32G431的LED原理图,从下图可以看出,8颗LED灯通过74HC573驱动,LED灯采用低电平的方式点亮,控制引脚连PD2引脚。我们可以在PD2高电平的基础上,控制GPIOPC8~PC15的高

stm32的IIC协议以及IIC通信驱动OLED屏幕

    最近,一直在搞stm32开发板,今天涉及到了OLED屏幕与IIC协议,记录一下学习过程。    I2C总线是一种总线标准,由数据线SDA和时钟线SCL构成通信线路,既可用于发送数据,也可接收数据,是一种半双工通信协议。总线上的主设备与从设备之间以字节(8位)为单位进行双向的数据传输。        主机启动总线,并产生时钟用于传送数据,此时任何接收数据的器件均被认为是从机。I2C器件一般采用开漏结构与总线相连,所以I2C_SCL和I2C_SDA均需接上拉电阻,也正因此,当总线空闲时,这两条线路都处于高电平状态,当连到总线上的任一器件输出低电平,都将使总线拉低。     关于具体的读写操

在ubuntu上使用vscode+gcc-arm-none-eabi+openocd工具开发STM32

文章目录所需工具安装调试搭建过程中遇到的问题写在前面  老大上周让我用vscode开发STM32,我爽快的答应了,心想大学四年装了这么多环境了这不简简单单,更何况vscode这两年还用过,然而现实总是令人不快的——我竟然花了差不多两周时间在这上面,并且不知道花费了多少流量😭😭😭。这玩意就给了所需要的主要工具,形象一点就如标题,问其他人他们也搞不定。因此,大家有空还是多涉猎一些开发环境,这玩意以前有兄弟跟我提过,但是我觉得没意义,所以没用过😅😅😅。所需工具代码编写idevscode调试连接工具openocd交叉编译工具链gcc-arm-none-eabi调试工具gdb-multiarch工程管理

ARM交叉编译工具链 gcc-arm-none-eabi

目录1,交叉编译工具链简介(1)命令规则(2)实例1、arm-none-eabi-gcc2、arm-none-linux-gnueabi-gcc3、arm-eabi-gcc4、armcc2,安装工具链3,gcc-arm-none-eabi语法说明1,arm-none-eabi-gcc编译(1)常用编译选项(2)使用范例gcc生成预编译文件gcc生成汇编文件gcc生成目标文件gcc生成可执行文件查询`.c`源文件的依赖关系2,arm-none-eabi-ld链接器(1)链接并生成elf文件和map文件3,arm-none-eabi-ar生成静态库(1)将多个`.o`目标文件生成一个`.a`库文件

STM32 学习(系统滴答定时器)

一、Systick介绍Systick的信号来源于系统时钟,不分频为168MHz,8分频为21MHz,从下图的时钟树就可以看出来。---这是F4的,,F1的位72MHz的😡F10系列的滴答时钟---72Mhz二、4个寄存器控制SysTick定时器♈控制及状态寄存器(CTRL)因为是查询式,所以我们不用第1位0位(打开滴答时钟)2位(选择时钟源,我们一般选择外部时钟源)16位(查看是否数到了零)♈重装载数值寄存器(LOAD)        这个寄存器就比较简单了,这个就是重新向滴答时钟里加载计时次数,可以看到总共有24位可设置,所以重新加载值最大不能超过24位。♈当前数字寄存器(VAL)这个寄存器

学习阶段单片机买esp32还是stm32?

最近看到一个问题,原话如下:如果为后面找工作的做铺垫的话,闭眼冲STM32,更通用。ESP32适合工作用到了WiFi和蓝牙功能需求时,再针对性学习。从行业应用来说,STM32更加广泛,不管是工业控制,汽车电子,还是消费电子。如果项目需要用到WiFi+蓝牙功能,那用ESP32会很合适。如果对于找工作来说,其实掌握哪种单片机都无所谓,最主要的是你做过哪些具体的行业应用(项目),这才是核心竞争力。如果学STM32的话,我建议直接通过项目学,效率高一点。就像开车一样,不一定非要把车所有功能都摸透,才能把车开走,知道挂挡、踩油门、踩刹车、控方向都够了。随着不同的路段,不同的需求,再针对性去学习别的功能,