自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 【FreeRTOS】 任务的挂起与恢复

在实际应用中,有的时候不能直接删除任务,而是挂起任务“暂停”一会,这个时候就需要以下API函数来该和恢复任务。

2025-06-01 20:24:44 953 1

原创 【FreeRTOS】 任务的静态创建和删除

在完成第一步编译工程会报两个错误查看开启任务调度器的源代码,发现在vTaskStartScheduler()函数体内需要调用vApplicationGetIdleTaskMemory()函数进行空闲任务的内存申请向下划拉,发现在vTaskStartScheduler()函数体内还需要调用xTimerCreateTimerTask()创建软件定时器。

2025-05-30 16:34:38 895

原创 【FreeRTOS】 任务的动态创建和删除

编写创建和删除进程的相关代码,包括LED1和LED2的闪烁,按键捕获,在按键按下后删除LED1进程。上电后 LED1每隔1秒闪烁一次 LED2每隔0.6秒闪烁一次。按下按键后 删除LED1闪烁进程 LED1停止闪烁。[STM32+FreeRTOS]动态任务创建。动态创建的任务会立刻进入就绪态。进行相关定义和文件包含。

2025-05-24 23:51:55 544

原创 【FreeRTOS】 将FreeRTOS移植到STM32F103C8详细教程

注释函数SVC_Handler(void)和PendSV_Handler(void)在main.c中添加如下代码(LED.h和LED.c代码自行准备)在SysTick_Handler(void)函数内添加代码。在FreeRTOS/source文件组内添加源码文件。将FreeRTOSConfig.h添加到User组内。在FreeRTOS/port文件组内添加移植文件。将全文代码删除并添加如下代码。报错别着急,下一步解决报错。添加如下代码声明外部函数。小灯能正常闪烁就是没问题。

2025-05-24 17:40:58 2149

原创 【STM32】 使用ESP8266与服务器进行通信

看了很久的江科大课程了,陆陆续续也学了不少东西,就想着做个类似课设的小项目,尽量多的用上学到的东西。

2025-05-20 23:02:00 2322

原创 【STM32】 使用硬件SPI与W25Q64通信

大致内容与上一篇链接:类似,但是使用的STM32的硬件SPI。在MySPI中也不需要定义手动读写高低电平的代码,而是有底层硬件电路完成相关工作。按照上图对硬件SPI的控制寄存器进行初始化即可完成相应功能。

2025-05-20 19:16:03 382

原创 【STM32】 使用软件SPI与W25Q64通信

SPI是一种全双工的同步时序通信,使用两根数据线MOSI和MISO,一根时钟线SCK和片选线SS。但在一主多从时需要挂载多根片选线使用的通讯方式,本质上将通讯双方的移位寄存器连接到一起形成一个“循环队列”,在移动8位后完成了主机与从机的数据交换虽然分模式,但大致环节相同,模式0如图首先拉低片选信号,在SCK低电平时,主机向MOSI写信号,从机向MISO写信号;SCK高电平时,主机读MISO写信号,从机读MOSI信号;如此8次完成一个字节的交换。

2025-05-20 19:07:11 672

原创 【STM32】 使用硬件I2C与MPU6050通信

使用STMF103C8内置的I2C与MPU6050进行通讯,对相关寄存器进行相关配置,并读取六轴传感器的值在OLED显示。I2C原理在这篇博客中已经说明,这里不再赘述。

2025-05-04 13:26:04 494

原创 【STM32】 使用软件模拟I2C与MPU6050通信

使用软件模拟I2C时序写MPU6050寄存器进行相关配置,并读取六轴传感器的值在OLED显示使用STM32F103C8的PB10、PB11引脚模拟SCL和SDA,产生以上波形。因为I2C为同步半双工通信,使用软件模拟不会有太大问题。I2C总线空闲时需要保持为高电平。但是在MPU6050上已经内置上拉电阻,所以PB10、PB11设置为复用开漏输出。低耦合高内聚,先写好底层的I2C代码,再写MPU6050的控制与通讯代码,最后在主函数中调用。

2025-05-04 12:53:14 696

原创 【STM32】 串口+DMA非定长数据包收发_使用串口空闲中断USART_IDLE

使用DMA将串口收到的数据从串口数据寄存器转运到预定义的数组当中。在数据接收完成时触发USART串口空闲中断,在中断服务程序中初始化DMA1通道5,并使能DMA1通道4将数据转运到串口数据寄存器中。在DMA1通道4的数据发生完成时触发发送完成中断初始化通道4并使能通道5。由图可得STM32F103C8中DMA1与USART1的连接,因此使用DMA1通道5转运接收数据,并用DMA1通道4转运发送数据,触发方式设置为USART硬件触发。

2025-04-25 17:28:18 476

原创 【STM32】 串口+DMA定长数据包收发_使用DMA中断DMA_IT_TC4/5

使用DMA将串口收到的数据从串口数据寄存器转运到预定义的数组当中,接收完毕后触发DMA转运完成中断,在中断服务程序中进行配置,将数据转运到串口数据寄存器中。由图可得STM32F103C8中DMA1与USART1的连接,因此使用DMA1通道5转运接收数据,并用DMA1通道4转运发送数据,触发方式设置为USART硬件触发。

2025-04-25 17:28:09 619

原创 【STM32】 串口收发

使用STM32的串口1接受电脑发送的一字节数据,并在产生中断后进行回传,并显示在OLED上。

2025-04-15 16:41:47 353

原创 【STM32】 AD多通道+DMA转运

打开GPIO、ADC、DMA时钟初始化GPIO的PA0~4为模拟输入模式初始化ADC为软件触发、连续扫描模式初始化DMA为硬件触发、自动重装。

2025-04-10 16:10:56 325

原创 【STM32】Protues 8.9 仿真 PWMI测频率

使能GPIOA时钟与TIM时钟->PA6设置为上拉输入->TIM3设置输入为内部时钟源->初始化时基单元TimeBase->使用PWMIConfig同时配置TIM3的通道1与通道2分别捕获上升沿与下降沿->启动定时器。使能GPIOA时钟与TIM时钟->PA0设置为复用推挽输出->TIM2设置输入为内部时钟源->初始化时基单元TimeBase->设置输出比较模式->启动定时器。使用PA0产生PWM波,使用PA6捕获波形,并使用定时器使用PWMI模式计算频率与占空比。如果有大佬请不吝赐教😭。

2025-03-31 13:58:08 415

原创 【STM32】Protues 8.9 仿真定时器测PWM频率

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档。

2025-03-26 18:58:16 609

原创 【STM32】Protues 8.9 仿真PWM控制直流电机

使用PWM_Init()函数初始化引脚和定时器,定时器TIM2的第三路输出为PA2。PA3接ENA,使用TIM2基本定时器的通道三输出PWM波形控制电机转速。单片机无法承载直流电机,使用L298作为直流电机的驱动。Motor_Init()函数初始化引脚PA0 PA1。Motor_SetSpeed()函数对速度进行设置。使用PWM_SetCompare3()设置比较值。Key_Init()初始化相关引脚及寄存器。在中断服务程序中对速度进行更改。在主程序中进行相关引脚的初始化。在循环中调用显示及速度设置程序。

2025-03-25 19:33:14 1701

空空如也

空空如也

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

TA关注的人

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