草庐IT

STM32HAL库定时器中断、按键中断、串口中断、按键消抖和低通滤波算法详解

本文将详细介绍STM32HAL库中的定时器中断、按键中断、串口中断的使用方法,以及按键消抖和低通滤波算法的实现。希望能对您的STM32开发提供帮助。目录1.定时器中断2.按键中断3.串口中断4.按键消抖5.低通滤波算法一、定时器中断定时器中断是STM32开发中常用的一种中断方式,主要用于定时执行某些任务,例如按键消抖、定时更新显示等。以下为创建定时器中断的步骤:1.配置定时器首先,在STM32CubeMX中配置相应的定时器,并设置对应的时钟和预分频系数。 2.初始化定时器在main.c文件中,调用HAL_TIM_Base_MspInit()函数初始化定时器。```cvoidHAL_TIM_Ba

【STM32】标准库与HAL库对照学习教程十四--CAN总线

【STM32】标准库与HAL库对照学习教程十四--CAN总线一、前言二、准备工作三、CAN协议3.1简介3.2CAN物理层3.2.1闭环总线网络3.2.2开环总线网络3.3差分信号3.3.1简介3.3.2CAN总线上的差分信号3.4CAN协议层3.4.1CAN的波特率3.4.2CAN的同步3.5CAN的通信帧3.6数据帧的结构3.7其它报文的结构四、STM32F103CAN控制器介绍4.1CAN控制内核4.1.1主控制寄存器CAN_MCR4.1.2位时序寄存器(CAN_BTR)及波特率4.2CAN发送邮箱4.3CAN接收FIFO4.4验收筛选器五、标准固件库配置CAN总线5.1配置步骤5.2结

HAL库生成PWM波且占可比可调

这里我的任务即生成一个100HZ的PWM,且占空比可调,通过按键PC13PIN。外部输入8MHz的晶振,使用tim3的时钟,将其总线时钟设置成80MHz,即其时钟树配置成80MHz。时钟树配置自行百度,资料有很多。我使用的是官方核心板如图所示。打开cubmx软件,选择tim3,相关配置如图所示。生成pwm频率Fre=tim总线时钟/预分配数*计数器数 图 cubmx配置界面 生成MDK文件。 在main.c中该软件自动帮你生成定时器3初始化函数,下图为函数声明,初始化在main函数中在stm32l4xx_hal_tim.h库中找到相应的hal库函数来初始化pwm。并编写按键检测程序,按键按下则

STM32系列(HAL库)——F103C8T6驱动WS2812全彩RGB模块(PWM+DMA方式)

1.软件准备(1)编程平台:Keil5(2)CubeMX2.硬件准备(1)某宝买的RGB模块(4个灯珠级联)(2)F1的板子,本例使用经典F103C8T6(3)ST-link 下载器(4)杜邦线若干3.模块资料(1)模块简介:没什么比手册讲得更加清楚了,模块中文数据手册:ws2812b中文资料_数据手册_参数(2)驱动原理:         以上这是数据手册中提到的,WS2812驱动用的是单线归零码的通讯方式。不同占空比的方波代表1码或者0码,这里不同的占空比就是 0码或1码高电平时间/方波周期时间。对于本次例程,我们就是改变PWM的占空比实现0码或1码的传输。(3)PWM+DMA原理:   

cubemx和HAL开发的学习笔记(一)—— GPIO

1.HAL_GPIO_WritePin函数介绍HAL库中提供一个操作GPIO电平的函数:HAL_GPIO_WritePin函数voidHAL_GPIO_WritePin(GPIO_TypeDef*GPIOx,uint16_tGPIO_Pin,GPIO_PinStatePinState函数名HAL_GPIO_WritePin函数作用使得对应的引脚输出高电平或者低电平返回值Void参数1:GPIOx对应GPIO总线,其中x可以是A…I。例如PH10,则输入GPIOH参数2:GPIO_Pin对应引脚数。可以是0-15。例如PH10,则输入GPIO_PIN_10参数3:PinStateGPIO_PIN

cubemx和HAL开发的学习笔记(一)—— GPIO

1.HAL_GPIO_WritePin函数介绍HAL库中提供一个操作GPIO电平的函数:HAL_GPIO_WritePin函数voidHAL_GPIO_WritePin(GPIO_TypeDef*GPIOx,uint16_tGPIO_Pin,GPIO_PinStatePinState函数名HAL_GPIO_WritePin函数作用使得对应的引脚输出高电平或者低电平返回值Void参数1:GPIOx对应GPIO总线,其中x可以是A…I。例如PH10,则输入GPIOH参数2:GPIO_Pin对应引脚数。可以是0-15。例如PH10,则输入GPIO_PIN_10参数3:PinStateGPIO_PIN

(三)内核移植--从零开始自制linux掌上电脑(F1C200S)<嵌入式项目>

目录一、bootloader、kernel、rootfs联系二、内核移植1.内核源码获取2.内核配置与编译🍍基础配置与编译🍍TF卡分区🍍内核烧录三、参考内容一、bootloader、kernel、rootfs联系kernel可以理解为一个庞大的裸机程序,和uboot以及其他比如点灯类似的裸机程序没有本质区别,只是kernel分为用户态和内核态,内存和设备操作与裸机程序不同。kernel是最底层,负责各种外设硬件的驱动,kernel类似于黑盒子,从外面只能看到接口,无法看到具体功能是如何实现的,内核初始化提供的接口后,将控制权通过init程序交给根文件系统。详见:一文讲解Linux内核中根文件系

HAL库&STM32cubeMX工程软件模拟IIC,改改引脚即可直接使用

HAL库&STM32cubeMX工程软件模拟IIC,改改引脚即可直接使用由于stm32后续的库文件只有hal库了,为了使代码更方便,也做了一个移植性很高的库文件,拿到手之后改改引脚就可以快速使用由于stm32后续的库文件只有hal库了,为了使代码更方便,也做了一个移植性很高的库文件,拿到手之后改改引脚就可以快速使用c文件如下/***@filesoftwareiic.c*@brief适用于STM32HAL库及CUBEMX生成工程的软件模拟IIC*@versionV1.0.0*@authorSundea*@date2023/5/8*/#include"softwareIIC.h"/***@brie

【stm32开发笔记】基于HAL库的STM32F4添加DSP库

简介:本文分两种方法添加DSP库:1.CubeMX直接配置ioc添加;2.KEIL内添加;一、MX直接配置DSP库简述:补齐全部lib库->添加DSP包->使能DSP勾选->添加头文件及魔术棒配置->测试1.补齐lib库。(如果使用直接默认添加的库,是不支持FPU的,所以需要补齐后找到所需的lib文件进行替换,在MX的工程管理栏,选择复制所有库)。此处添加的DSP文件夹位置:Project...\Drivers\CMSIS\DSP生成工程后,带FPU的lib文件位置\Drivers\CMSIS\Lib\ARM,注意所圈文件的位置,后面需手动添加到工程2.添加DSP芯片包。3.使能DSP,生成代

基于STM32F1的自动追光云台(代码开源)

前一段时间做了一个自动追光云台(大家感兴趣的也可以自己DIY一个呀),用来自动捕捉阳光供太阳板发电提高太阳板的发电效率,我用了一款STM32f103c8t6为主控来控制云台舵机的旋转。感光元器件使用的是光敏传感器(淘宝随便买一款啊很便宜)来感知光强,所以用ADC进行模拟量采集光强信息。下面就来介绍介绍它吧!舵机旋转的控制舵机的主要组成部分为伺服电机,伺服就是服从信号的要求从而做出相应动作。在信号发出之前,电机停止不动;信号发出之后,电机立即做旋转运动。因此我们就可以给舵机输入不同的信号,来控制其旋转到不同的角度。舵机接收的是PWM信号,当信号进入内部电路产生一个偏置电压,触发电机通过减速齿轮带