自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 M0扩展篇之Printf

本文介绍了如何通过syscfg配置和代码实现串口通信。首先,在syscfg配置中,主要需要修改引脚设置,波特率默认为9600。接着,通过代码示例展示了如何使用printf函数和重定向函数fputc、fputs实现串口数据发送,并解释了阻塞与非阻塞函数的区别。随后,文章进一步封装了发送字符串的函数SendString,简化了代码结构,并展示了如何通过封装函数与多个串口(如蓝牙和OpenMv)进行通信。封装代码提高了代码的复用性和便利性,适用于多种串口通信场景。

2025-05-14 11:49:47 270

原创 M0基础篇之UART

本文主要讲解了串口通信的配置与调试方法。首先,在代码讲解部分,强调了syscfg配置的重要性,特别是使能接收中断。接着,详细说明了串口调试时需注意的几点:确保选择正确的端口号、检查波特率设置以及跳线帽的连接。文章还提供了电脑串口通信的配置步骤,包括初始化系统配置、清空中断状态、使能串口中断以及编写串口中断服务函数。最后,提到字符串接收的代码编写需根据具体项目需求进行调整。这些步骤和注意事项对于确保串口通信的正常运行至关重要。

2025-05-12 14:53:13 236

原创 M0基础篇之DAC

文章摘要:本文讨论了在使用TI MSP微控制器时,通过syscfg配置和示例代码实现DAC输出电压的功能。作者分享了自己编写的代码,但遇到了无法持续测量电压或仅能测量一次正确电压的问题。代码中使用了SYSCFG_DL_init()进行系统配置,并通过DL_DAC12_output12()和DL_DAC12_enable()函数设置和启用DAC输出。问题可能源于配置或代码实现中的某些细节,需要进一步调试和排查。

2025-05-12 14:16:12 166

原创 M0基础篇之ADC

本节课主要讲解了ADC(模数转换器)的Single模式和Sequence模式的使用。在Single模式下,例程使用PA25通道进行单一转换,通过DL_ADC12_getPendingInterrupt函数获取并清除最高优先级的中断,确保ADC能多次进入中断。代码示例展示了如何配置ADC通道、开启中断、启动转换、获取转换结果及使能下一次转换。在Sequence模式下,例程展示了如何配置多个通道(如PA25和PB24)并进行序列转换,启动一次转换即可完成多个通道的测量。此外,还提到通过GPIO引脚输出高电平测量

2025-05-10 18:18:57 347

原创 M0基础篇之PWM

文章主要讨论了定时器在生成PWM波时的配置和应用。首先,介绍了基础定时器的功能,即通过计数到设定值进入中断执行任务。接着,详细说明了如何通过改变高电平持续时间来调整PWM波的占空比,并强调了计数方式(向上或向下)对占空比的影响。文章还提到了TIMG0定时器的通道0和通道1对应的引脚PA12和PA13,以及如何通过LED灯观察PWM波的变化。此外,作者在实现按键切换PWM功能时遇到的问题,即按键松开后波形变换延迟,原因是按键未配置为上拉输入。最后,文章指出选择特定定时器(如TIMG0)时,其通道1和通道2只能

2025-05-10 15:48:49 289

原创 蓝桥杯嵌入式第十一届省赛真题

首先要知道P37对应的CubeMx上面的引脚是PB15,给PB15设置成ADC采集。使用到的PA6和PA7的端口要进行定时器配置ADC采集只需要选择好adc1、adc2 再选择好它的通道就可以了,不需要配置其它的100Hz和200Hz只需要配置好PSC和ARR,不需要配置中断和占空比题目还对按键有要求,所以我们需要CubeMX里面配置好按键,再GPIO的配置里面把按键配置为上拉输入模式。

2025-05-10 14:11:18 698

原创 M0基础篇之Timer

时钟周期决定。

2025-05-08 23:21:05 272

原创 智能家居的OneNet云平台

该项目只需要创建一个产品,然后这个产品里面包含几个设备,而不是直接创建几个产品注意:传输数据使用到了不同的power,还有一定要手机先联网才能使用云平台。

2025-05-03 17:04:36 718

原创 OneNet云平台

设备名称:test1设备密钥:N1drd3BZc0h0WDNWaXRtdjlFbjUxTHFhTGtWcW1VWjQ=产品ID:EcO4iSzv5burl:端口号:1883/ /注释:products/产品ID/devices/设备名字et:时间戳,可由在线时间戳转换工具生成,eg:2052911776key:上面的设备密钥物模型通信主题订阅:$sys/EcO4iSzv5b/test1/thing/property/post/reply。

2025-04-27 23:02:49 274

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

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

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

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

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

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

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

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

2025-02-07 22:55:35 278

原创 08_两个Delay函数

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

2025-02-07 21:43:53 322

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

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

2025-02-07 20:10:42 735

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

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

2025-01-28 11:41:55 220

原创 05_任务的删除

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

2025-01-28 09:06:43 1095

原创 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 284

原创 编码器测速总结

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

2025-01-26 15:46:03 221

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

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

2025-01-26 15:45:35 1072

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

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

2025-01-26 15:43:31 482

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

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

2025-01-21 13:54:07 242

原创 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 419

原创 GY30光照传感器

B站博主CSDN博主。

2025-01-11 17:31:19 465

原创 MQ135空气质量传感器

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

2025-01-11 14:07:42 1626

原创 DHT11温湿度传感器

这个是CSDN的一个博主讲的基于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 1090

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

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

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

原创 定时器理论知识补充

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

2024-12-07 14:41:43 336

原创 PID的代码理解

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

2024-10-27 22:59:38 271

原创 超声波测距

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

2024-10-15 21:44:49 1355

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

(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 2001

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

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

2024-10-07 16:25:05 1634

原创 OLED移植

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

2024-10-01 10:12:09 390

原创 麦克纳姆轮

如何指示每个车轮旋转,用数学的方法表示反转,就是用负数,以平面直角坐标系为参照,向前是正,向后是负,向右是正,向左是负,自转时顺时针为正,逆时针为负。不管是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 1261

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

一、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 300

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

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

2024-09-23 14:35:20 771

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

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

2024-09-21 21:15:41 1614

原创 PID理论知识

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

2024-09-20 00:57:51 975

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

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

2024-09-19 09:33:28 1142

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

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

2024-09-18 22:39:35 1641

原创 (蓝桥杯)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 623 1

空空如也

空空如也

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

TA关注的人

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