这里我的任务即生成一个100HZ的PWM,且占空比可调,通过按键PC13PIN。外部输入8MHz的晶振,使用tim3的时钟,将其总线时钟设置成80MHz,即其时钟树配置成80MHz。时钟树配置自行百度,资料有很多。我使用的是官方核心板如图所示。打开cubmx软件,选择tim3,相关配置如图所示。生成pwm频率Fre=tim总线时钟/预分配数*计数器数 图 cubmx配置界面 生成MDK文件。 在main.c中该软件自动帮你生成定时器3初始化函数,下图为函数声明,初始化在main函数中在stm32l4xx_hal_tim.h库中找到相应的hal库函数来初始化pwm。并编写按键检测程序,按键按下则
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原理:
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
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
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
简介:本文分两种方法添加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,生成代
目录一旋钮编码器相关知识二STM32CubeMx配置三程序编写3.1相关函数介绍3.2程序编写四实验结果一旋钮编码器相关知识旋转编码器是一种位置传感器,输出脉冲信号可以用来确定编码器的旋转角度和旋转方向。编码器中有两个开关,当旋钮旋转后,开关会依次导通,开关结构图如下图所示如果我们将旋钮开关的引脚C接GND,引脚A和B通过上拉电阻接高电平,当旋钮旋转后开关会依次导通,A、B口的波形如下图所示。旋钮反转,A相波形会落后于B相所以我们可以开启STM32单片机定时器的输入捕获功能,统计A、B引脚的上升沿和下降沿的个数,可以知道旋钮编码器旋转了多少度;通过判断当A端口为下降沿时,B端口是高电平还是低电
前言:本文主要内容为将优秀的图形库U8g2移植到STM32单片机上,用于OLED显示精美UI。其实,目前GitHub上有需要优秀的开源GUI库,但是大部分的GUI解决方案并不适合0.96OLED(128x64像素,基于SSD1306)这种资源紧缺型的显示模组使用。所以,在这里给大家介绍和移植一下目前最为主流的0.96寸OLED的GUI图形库——U8g2。(本文为HAL库下的移植,标准库和其区别不大,文末有代码开源) U8g2库开源网址:https://github.com/olikraus/u8g2 实验硬件:STM32F103C8T6;0.96寸OLED(128×
前言:本文主要内容为将优秀的图形库U8g2移植到STM32单片机上,用于OLED显示精美UI。其实,目前GitHub上有需要优秀的开源GUI库,但是大部分的GUI解决方案并不适合0.96OLED(128x64像素,基于SSD1306)这种资源紧缺型的显示模组使用。所以,在这里给大家介绍和移植一下目前最为主流的0.96寸OLED的GUI图形库——U8g2。(本文为HAL库下的移植,标准库和其区别不大,文末有代码开源) U8g2库开源网址:https://github.com/olikraus/u8g2 实验硬件:STM32F103C8T6;0.96寸OLED(128×
一、目标 stm32f103c8t6用串口发送AT指令控制esp8266发送数据到手机APP上,同时手机也可以发送数据到stm32f103c8t6主控,控制LED的亮灭。 将esp8266模块的GND、VCC、TXD、RXD、CH-PD与单片机对应引脚连接,其中TXD与RXD要反接,模块在工作时CH-PD要处于高电平状态。二、串口助手实验过程 步骤:1esp8266配置wifi模式 AT+CWMODE=1 2esp8266重启 AT+RST 3开启手机热点 4esp8266连接手机热点 AT+CWJAP="热