自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(46)
  • 收藏
  • 关注

原创 蓝桥杯嵌入式第十五届

只要是开了定时器,那我们就需要写htim->Instance==TIM2对于输入捕获,我们首先要在5933找到相应的函数然后我们就要写htim->Instance==TIM2;里面的框架就是,我们要先开启输入捕获中断的通道然后我们要接收捕获到的值HAL_TIM_ReadCapturedValue(htim,TIM_CHANNEL_1);

2025-04-09 23:08:00 966 1

原创 10_队列实验_多设备玩游戏(红外改造)

自己的代码是10,示例代码:temp:13以后移植代码可以移植temp13里面的代码,因为有些底层相比于之前是改变了的。

2025-02-09 20:38:47 918 1

原创 09_有缺陷的同步示例

基于我的03代码改的,这篇文章的代码是09,示例代码是temp:12。

2025-02-07 22:55:35 260

原创 08_两个Delay函数

这个程序主要就是看一下两个vTaskDelay();函数还有vTaskDelayUtil();这两个函数各有什么功能这个程序是根据我的03程序来修改的我修改后的程序08,示例代码temp:11。

2025-02-07 21:43:53 278

原创 07_任务状态——改进播放控制

在05和06的程序里面可以达到的一个效果就是很完美的播放音乐,并且不会影响到其它任务的运行,但是这个代码有一个弊端就是要么创建任务从头开始播放要么就直接删除任务。我们现在的程序就增加了音乐的暂停和恢复的功能,那么能够达到的一个效果就是:按下中间的play按键的时候就能够创建音乐播放任务,再次按下play(三角符号)的时候音乐就会暂停,再次按下就会从上一次暂停的地方继续播放音乐如果在软件的配置找不出任何问题,硬件上也没有连接错误的话,那么外设还是没有反应有可能是连线接触不良。

2025-02-07 20:10:42 703

原创 06_改善播放效果--优先级与阻塞

本文章的程序是基于05篇的程序改善的,所以CubeMx的配置看05篇的就好且此篇文章由于红外遥控暂时未使用,还不知其是否能成功显示现象。

2025-01-28 11:41:55 204

原创 05_任务的删除

参考外部中断的文章(我还没有学过外部中断,第一次用)写这篇文章的时候红外遥控器还没到,所以不知道CubeMx的配置是否完全正确,也不知道keil5的代码是否编写正确。

2025-01-28 09:06:43 1072

原创 04_创建声光色影四个任务

这个程序用到了蜂鸣器,"music.c"同时这个文件里面用到了 "driver_passive_buzzer.h" 用到了RGB全彩LED灯,"driver_Color_led.h" 用到了C8T6板子上的LED灯,"driver_led.h" 本身代码是用到了OLED的,但是此程序因为暂时还没有学会遥控,所以没有用OLED的外设 这三个任务可以同时执行,但因为这三个任务同时在运行,所以每个任务的执行情况都会有所延时,比如蜂鸣器播发的孤勇者就可以

2025-01-27 01:25:42 256

原创 编码器测速总结

这个问题是因为头文件没有包含“OLED.h”所以使用不了OLED_ShowSignedNum();没有包含“tim.h”这个头文件,所以使用不了定时器。return出现问题是因为函数是void 型的,所以没有返回值。函数如果改成uint8_t之类的,那么才会有返回值。

2025-01-26 15:46:03 201

原创 蓝桥杯第十二届省赛真题

这个程序的应用是在LCD上面,打印字符出来。这个问题的出现是因为头文件没有包含#include"stdio.h"包含之后就不会报错了。

2025-01-26 15:45:35 1042

原创 03_使用同一个函数创建不同的任务

这个程序执行的任务就是在一个函数里面可以执行几个不同的任务(好吧,我到现在也没学会怎么添加自己的视频)我们这个程序使用到的外设只有OLED屏幕。

2025-01-26 15:43:31 461

原创 02_创建第1个多任务程序

我们这个文件的代码使用的外设和01篇是一样的,所以我们需要配置跟01篇一样的CubeMx和添加一样的驱动文件。但这个时候出现了一个问题,就是平常在配置SYS的时候没有配置TIM4,以至于在配置FreeRTOS文件的时候忘记了,所以在keil5编译文件的时候就出现了报错所以在配置SYS的时候要记住配置一下TIM4,这样编译出来的代码才是正常的,警告可以暂时不用管。

2025-01-21 13:54:07 214

原创 01_创建FreeRTOS工程

这个是因为我们使用driver_led文件里面使用了driver_timer里面的代码,但是我们并没有包含driver_timer,所以我们要把driver_timer的文件也要包含到BSP里面去。注意拷贝的这个文件不需要像之前那样添加到keil5的BSP里面,不然就会出现错误,因为它在很多文件里面都有包含,这个时候编译虽然会出现很多警告,但是没有关系,不用理,直接烧入显示就可以了。“driver_lcd”是对"driver_oled"的封装,所以在调用OLED文件的时候,两个.c.h文件都要包含进来。

2025-01-21 12:32:46 392

原创 GY30光照传感器

B站博主优快云博主。

2025-01-11 17:31:19 354

原创 MQ135空气质量传感器

B站博主这个是STM32F103C8T6的标准库的代码,资料在大二寒假学习资料里面优快云的参考资料这个博主是直接用的ADC然后在主函数里面编写的程序,没有把MQ135封装起来。MQ135使用的规则就是开一个ADC,然后ADC采集,公式转换成电压量 ,没有底层驱动文件。这个博主用到是STM32F103RBT6的板子这个博主把使用ADC采集的MQ135封装成了一个函数,但要注意的是他使用的是F4的板子,所以驱动文件需要稍微改一下。

2025-01-11 14:07:42 1342

原创 DHT11温湿度传感器

这个是优快云的一个博主讲的基于STM32F103C8T6的hal库的DHT11温湿度传感器 (这篇文章只用到了串口和DHT11两个外设,没有用到OLED)这个可以放在main函数里面也可以放在usart.c里面,如果是直接在dht11.c文件里面打印的话也可以放在里面。资料在D盘的大二寒假资料里面,这里面的OLED驱动文件和DHT11都是标准库的文件没有转化成hal库。资料在D盘的大二寒假资料里面,这里面的DHT11的驱动文件是hal库的。这个是放在dht11.c里面的。硬件供电给3.3V~5V即可。

2025-01-11 12:41:34 986

原创 基于STM32F103RCT6的PS2手柄控制舵机转向小车

(1)当接收器上的绿灯常亮时,证明手柄和接收器配对成功,可以正常进行数据通讯。如果手柄和接收器断开了,按手柄上的START键即可恢复配对;(2)当手柄上的MODE指示灯没有点亮的时候,游戏摇杆四个方向输出按键键码值;当点击MODE按键后,手柄上的MODE指示灯变亮(红色),此时游戏摇杆四个方向输出AD值。

2024-12-07 14:42:00 1268 1

原创 定时器理论知识补充

我们可以通过设置将APB1上定时器时钟设置为72MHz,那么进入基本定时器的脉冲频率就是72MHz,只要计数器计数到了72000000那便是一秒钟过去了。但是计数器最多只能计数65536个数,这样算来就只能计时0.0009秒。只要有一个恒定频率的方波信号再加上一个寄存器,每当方波信号的上升沿到达,寄存器存储的数就+1,就可以完成计时。倘若方波信号的频率是100Hz(也就是1秒100个脉冲),当寄存器计数到100时,我们就知道时间过去了1秒钟。这样的配置就是计时0.0009秒。

2024-12-07 14:41:43 313

原创 PID的代码理解

这个就是把调PID的函数先放在中断里面简单试验一下。

2024-10-27 22:59:38 252

原创 超声波测距

B站:http://【【STM32】动画讲解输入捕获 并实现超声波测距】https://www.bilibili.com/video/BV1HM4m1R75B?vd_source=70e3aaa6cbfe13f5858272f48dacf336单片机:STM32F103C8T6 如果超声波扩散范围内有比被测物体更近的障碍物 ,超声波就会被提前反射,测得的就是模块到障碍物的距离 用于供电的VCC和GND 控制端Trig和一个输出端Echo 当我们需要

2024-10-15 21:44:49 1268

原创 第十四届单片机嵌入式蓝桥杯

(1)LED灯里面用到了SN74HC573ADWR锁存器,这个锁存器有一个LE引脚,这个是我们芯片的锁存引脚(使能引脚),由PD2这个端口来控制的(2)LD1~LD8这八个LED灯由PC8~PC15这八个端口控制,且因为LD左端通过300欧的电阻连到了VDD(电源的正引脚) ,若想要点亮LED灯的话,则需要给PC8~PC15低电平,这样灯才会亮,电流会从VDD顺着LED流到PC8。

2024-10-11 22:44:26 1904

原创 编码器计速及测速(理论+代码)√

注意:此工程是建立在OLED的基础上,所以需要先把OLED的工程测试成功再开始编码器测速使用的是STM32F103C8T6的开发板学习资料来源:(B站)【15.定时器编码器接口【HAL库复现江协全部STM32例子合集】】https://www.bilibili.com/video/BV1Q1421y7Us?

2024-10-07 16:25:05 1333

原创 OLED移植

里面已经包含好了字库的.h文件,所以OLED.c文件可以直接显示字符串里面只需要改变的就是端口,SCL和SDK接的端口不同,配置的引脚也不同。

2024-10-01 10:12:09 351

原创 麦克纳姆轮

如何指示每个车轮旋转,用数学的方法表示反转,就是用负数,以平面直角坐标系为参照,向前是正,向后是负,向右是正,向左是负,自转时顺时针为正,逆时针为负。不管是AIN1还是BIN1,只要是给IN1的赋值为1,IN2的赋值为0,那么这个电机就是正转,反之就是反转。A左1电机:AIN1=0;B右1电机:BIN1=1;A左1电机:AIN1=1;A左2电机:AIN1=0;B右1电机:BIN1=0;A左1电机:AIN1=0;B右1电机:BIN1=1;A左1电机:AIN1=1;B右1电机:BIN1=0;

2024-09-29 17:19:24 1095

原创 (无人车)/舵机&电机/基本行进

一、CubeMx配置(1)定时器配置(2)电机GPIO端口配置二、连线(1)谁给谁供电(2)单片机离开电脑供电,直接运行三、特别注意(1)电脑给单片机下载时不能连接TB6612的VCC和GND(2)SYTBY置高电平(3)kile5跑ST-LINK的下载程序的配置(4)不要忘了启动PWM定时器(5)一定要先编译再下载四、问题(1)void函数为什么在while循环中无法调用函数运行?(2)为什么电机一会

2024-09-24 21:04:31 288

原创 PWM控制舵机转动(代码)STM32F103C8T6

时钟源选择内部时钟源选择PWM生成的通道PWM参数设置。

2024-09-23 14:35:20 680

原创 调节 PWM的占空比控制舵机的角度

让计数器从0数到自动重装载值,不停计数。计数值小于输出比较寄存器时输出一种电平,大于输出比较寄存器时使出另一种电平。修改定时器时钟源的速度以及预分频器等设置,可以修改计数器计数的速度再加上修改自动重装载值,就可以调节PWM的周期频率修改比较寄存器的大小,就可以调节PWM的占空比。

2024-09-21 21:15:41 1287

原创 PID理论知识

P算法的作用是减小测量值和理论值之间的误差(差值),让这两只不断的接近理论值。误差越大,P的输出也越大。

2024-09-20 00:57:51 565

原创 (蓝桥杯)STM32G431RBT6(TIM4-PWM)

这个auto-reload preload是自动重装载值,因为我们想让他每改变一个占空比,至少出现一次周期Counter Period(Autoreload Regisiter)这个设值为10000,那么就相当于它的周期是10000脉冲宽度可以设置为占周期的一半,那么现在的输出就是50%的占空比别忘了打开定时器3的中断。

2024-09-19 09:33:28 1008

原创 STM32G431RBT6(蓝桥杯)串口(发送)

但是字符串的数据不能超过30,可以小于。

2024-09-18 22:39:35 1540

原创 (蓝桥杯)STM32G431RBT6(定时器3)

液晶屏默认显示的字体像素宽度是12,因而一行最多显示26个英文字符,所以数组长度取26个最合适上面那个 uint32_t pwm_period 这个变量因为是在后面的while循环里面的打印的程序会用到,所以我们要把它放在外面,不能用局部变量,不然后面识别不到每计数一个1所用的时间:1/10 000 000计数一个周期所用的时间:pwm_period / 1/10 000 000计数一个周期所用的频率:10 000 000/ pwm_period。

2024-08-02 12:53:34 574 1

原创 (蓝桥杯)STM32G431RBT6(定时器2)

这个弱函数的存在是因为,前面已经调用了中断回调函数,所以必须要写一个这个函数要执行那些任务。但是因为还没有决定好这个函数到底要执行什么任务,所以就先写一个弱函数占位置,后续有需要它执行的任务再写上去。其实这个弱函数里面相当于什么都没写所以后面用户可以自己写一个不带weak的函数,这样函数的优先级就比程序里面原带的高,我们就可以在这个函数里面写我们想让它执行的任务。

2024-08-01 22:14:07 407

原创 (蓝桥杯)STM32G431RBT6(SysTick timer)

选用最基础的定时器。

2024-08-01 18:26:18 1364

原创 (蓝桥杯)STM32G431RBT6(ADC采集)

PB15、PB12是ADC的端口。

2024-07-31 14:17:24 828

原创 (蓝桥杯)STM32G431RBT6(解决LED与LCD的冲突)

我们首先获取LED1端口的值,然后进行翻转,然后来实现这个端口翻转之后的状态,所以我的LED才会电平翻转,实现亮灭亮灭但是因为LCD占的有些端口是和LED的端口是相同的,所以最开始LCD的端口就会影响LED端口。假设我把LED端口的值全都置high,按道理来说,下载程序进去之后,应该都变灭了,但是因为我有LCD的端口的影响,所以我的LED的现象就一直是亮着的然后我第一下按下我的按键,此时我的电平会由亮变灭,但此时我的PC8端口由亮变灭的这个值不知道是哪儿来的一个值,让他翻转了然后我的LED灯就变灭了。

2024-07-31 11:44:33 1688 2

原创 (蓝桥杯)STM32G431RBT6(点亮LCD)

因为在main函数的头文件没有包含“LCD.h”

2024-07-20 16:03:05 206

原创 (蓝桥杯)STM32G431RBT6(按键下)

添加的新的定义要放key.c的顶部,因为它的定义是在key.c的下面的文件里面要用;[4]里面的意思就是,我有四个按键,给每一个按键的计数(++)和计数量(500ms或者1000ms等)都取了一个对应的名字。

2024-07-19 12:34:56 811

原创 (蓝桥杯)STM32G431RBT6(按键中/模块化)

看上一篇优快云有讲解。

2024-07-18 19:27:19 1144

原创 (蓝桥杯)STM32G431RBT6(按键上)

板子连接到电脑上之后,我们可以看到板子上芯片的信息 如果按键不按下,就是VDD直接过去,为高电平 如果按键按下,则VDD到GND,为低电平 要判断按键是否按下,只需要判断按键所对应的引脚上是否出现了低电平2.2、按键消抖这个消抖原理因为是十六进制所以不太明白是什么意思 2.3、标志位用枚举类型定义状态变量

2024-07-13 11:42:23 709

原创 睿抗足球机器人Day6

此时的lua脚本里面只有调用前锋的代码,没有调用中场机器人的代码,所以此时我场上的中场机器人是不懂得。但是我的C++函数里面写了关于中场机器人的坐标和朝向,所以我的仿真软件里面的现象就是,前锋机器人根据我场上中场机器人(中场机器人不动,但是依然具有坐标和朝向)来找他的位置。如果球员配置里面是以下这种配置,其lua函数还有c++函数不变的情况下,现象就是前锋只有对着球的一个朝向,距离球只有100,球在哪里前锋都是这个状态,相当于是一个根据球而它自身的位置相比前一个是平移的状态。

2024-07-13 10:14:45 703 1

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除