草庐IT

stm32 hal库 GPIO初始化函数MX_GPIO_Init()梳理分析、初步细致学习(二)

目录一、GPIO外设时钟初始化二、配置GPIO2.1配置 GPIO_InitTypeDef结构体成员变量 2.2把参数写到对应寄存器2.2.1io口的配置2.2.2外部中断的配置三、相关知识分析3.1hal_gpio其他函数简单分析3.1.1HAL_GPIO_DeInit();3.1.2  HAL_GPIO_ReadPin();3.1.3  HAL_GPIO_WritePin();3.1.4  HAL_GPIO_TogglePin();3.1.5  HAL_GPIO_LockPin();3.1.6 HAL_GPIO_EXTI_IRQHandler() 3.1.7HAL_GPIO_EXTI_Ca

【STM32F407】Note_01 STM32 编程环境搭建 -- Keil与VS code组合

1.引言在使用进行STM32F407开发的时候,一般被推荐使用的是Keil。经过一整子的Keil洗礼,我真的要崩溃了,在界面、调试、代码跳转、代码格式化、开发效率等方面一直很抓狂。之前一直使用vscode开发,用着还蛮顺心,界面风格很讨人喜欢。因此,尝试在vscode上进行STM32开发。接下来主要讲述个人将Keil和vscode环境搭建问题以及一些小Tips。2.环境搭建2.1Keil环境搭建2.1.1Keil安装关于Keil程序的安装,网上已经有很多优秀的教程,此处贴出不错的博文。Keil的下载地址为https://www.keil.com/download/product/,其中会看到M

[GD32F4]基于GD32固件库移植cherryusb[STM32F4]

[GD32F4]基于GD32固件库移植cherryusb[STM32F4]基础环境使用开发板是淘宝买的不知名开发板,没什么好说的,具体的型号是GD32F450VET6。使用的cherryusb版本是0.9.0版本。使用的GD32官方固件库版本是:GD32F4xx_Firmware_Library_V3.0.4大神速通cherryusb最牛的地方在于抛弃掉所有的依赖,只需要知道芯片的usb中断函数名称usb外设的基地址使用的io口就行。本文实现了gd32f4模拟usbfshid设备作为鼠标。具体步骤首先准备参考cherryusb的如下教程先放松一点,别管usb,老老实实准备一个可以使用串口pri

STM32 手势识别传感器模块(PAJ7620)学习

目录模块介绍:基本部分:引脚配置:工作原理:展示部分:代码部分展示(在正点的基础上加了一个读手势去控制舵机):视频展示:模块介绍:基本部分:手势模块搭载的芯片是PAJ7620,无论是正点原子的还是别的手势模块的底层是一致的,甚至代码也是通用的。芯片内部集成了光学数组式传感器,以使复杂的手势和光标模式输出,自带九种手势识别,支持上、下、左、右、前、后、顺时针旋转、逆时针旋转和挥动的手势动作识别,有效探测距离为5-15cm;也可以检测物体的距离和大小原理图(正点的):引脚配置:VCC-GND:3.3V到5VSCL-SDA:IIC接口(额外)正点的模块是多两个个INT和NC的引脚:NT是中断引脚,N

【BSP技能手册】-【MCU篇】-【stm32】-【开发环境】-【烧录】

【BSP技能手册】-【MCU篇】-【stm32】-【开发环境】-【烧录】前言一、驱动安装1.Jlink驱动安装2.可选功能3.驱动升级(不是一定出现的)4.检查驱动二、通过Jlink烧录固件1.Jlink连接开发板2.jlinkSWD配置3.烧录测试固件4.测试固件效果总结前言如何把编写的固件放入到我们的Board,这里需要【驱动程序】【烧录器】的帮助,放代码、更新代码的动作,我们称为【固件烧录】【烧写代码】等。常用的代码【烧录手法】有如下几种Stlink烧录=>需要Stlink烧录器及软件包Jlink烧录=>需要Jlink烧录器及软件包ISP升级=>串口线及软件包IAP升级=>空中升级使用(

STM32移植FreeRTOS系列十三:RTOS中的任务切换流程(总结)

目录1、任务切换的概念和流程2、任务切换与PendSV异常之间的关系2.1、什么是PendSV2.2使用PendSV进行上下文切换的原因那为什么要通过异常来进行上下文切换,而不在其他地方呢?为什么不在其他地方进行上下文切换又为什么要使用PendSV来进行上下文切换而不适用其他异常呢?为什么在异常抢占中断时,OS不能执行上下文切换呢?2.3、PendSV异常是如何触发的2.4、PendSV是如何控制上下文切换的3、任务调度时Cortex-M3/4的工作模式CM3内核为什么要有线程模式、handler模式CM3内核为什么要特权分级Cortex-M3内核工作模式、特权分级4、双堆栈指针MSP和PSP

stm32串口驱动和esp8266的使用

写在前面本文并不对相关知识进行讲解,只是这次的实验课要实现的任务有些复杂,我也踩了一些坑,对代码实现思路进行复现和记录,并不是技术科普性文章,基础知识还是要自己有所掌握。1.stm32的串口通讯开发板:stm32f407zgt6课程学习板下载器:j-link串口通信是单片机一种基础的通信协议,对时序要求比较严格,一般都是通过硬件实现。stm32初始化串口通讯:首先查看原理图type-b接口对应的单片机引脚(这一步老师初始化里已经配置好:type-b的接口连线跳帽连线,可以看到需要将uart3tx/rx的引脚通过跳帽选择连接到单片机对应单片机的引脚:为tx-pc10rx-pc11之后我们就可以通

学习笔记(9):STM32H743通过SPI连接ADXL355和ADXL357的过程记录

有半年没发布文章了,这半年大部分时间都在写文章、写专利、写项目报告、写各种...,由于实验需要,我制作了两个小板子,涉及到STM32H743VIT6连接adxl345/adxl355/adxl357/adxl372/adxl375,目前板子焊好了,准备把板子+代码调通,先做到可以正常采数据,开始:Step1:新建cube工程,选好芯片型号直接Start,防止我的25MHz晶振焊接有问题,先使用内部时钟,时钟树也不急设置,先用默认的,按照原理图设置3组SPI和两组USART,其中SPI_CS是为GPIO_OUTPUT起的别名,具体SPI的配置就不说了,如果硬件上没有上拉/下拉电阻,就在GPIO一

STM32控制编码器电机实现【速度闭环控制】与【位置闭环控制】

一、硬件及接线说明本实验所基于的硬件分别为:STM32F103C8T6主控板TB6612FNG直流电机驱动模块6线正交编码器电机(带AB相)其中硬件接线为:PWMA——PA8AIN1——PB14AIN2——PB15STBY——5V编码器A相——PA1编码器B相——PA0STM32定时器资源分配:定时器1(TIM1):产生PWM波,作为TB6612的输入,控制电机进行调速;定时器2(TIM2):读取编码器的波形;定时器3(TIM3):产生周期为10ms的定时器中断,为控制系统提供稳定的时间基准。【说明】上述硬件平台和接线仅给读者提供参考,更换主控或接线方式,请自行对示例程序进行微调。本文对于编码

STM32HAL库常用库函数说明

STM32HAL库常用库函数说明系统函数HAL_Delay(延时函数)GPIOHAL_GPIO_WritePin(GPIO引脚电平设置)HAL_GPIO_TogglePin(GPIO电平翻转)HAL_GPIO_ReadPin(获取GPIO引脚状态)TimerHAL_TIM_Base_Start_IT(打开定时器)HAL_TIM_Base_Stop_IT(关闭定时器中断)USART(串口)HAL_UART_Transmit(阻塞式发送函数)HAL_UART_Transmit_IT(非阻塞式发送函数)HAL_UART_Receive(阻塞式接收函数)——不推荐使用HAL_UART_Receive_