自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 FreeRTOS学习笔记(二): FreeRTOS的任务状态与任务状态列表

挂起态:类似暂停,调用函数vTaskSuspend()进入挂起态,需要调用解挂函数vTaskResume()才可以进入就绪态。需要注意的是,任务只有在就绪态才能进入运行态,其他状态的任务想进入运行态必须先进入就绪态。运行态:正在执行的任务就处于运行态,stm32中同一时间仅有一个任务处于运行态。阻塞态:如果一个任务因为延时或等待外部事件发生,这个任务就处于阻塞态。就绪态:如果该任务已经能够被执行,但当前还未执行,该任务处于就绪态。除了运行态,其他三种状态都有相应的运行列表。

2025-05-30 17:08:24 238

原创 FreeRTOS学习笔记(一): 裸机开发和FreeRTOS是什么?两者有什么区别?

往死循环里面塞一个反转小灯泡引脚电平的函数加个延时函数,这样一个项目就完成了,而这种一个死循环完成所有任务,利用中断处理外部事件的代码通常就是我们所说的裸机开发。打个比方,你的程序正在跑,跑进了一个延时10秒的函数,这个时候突然插入了一个重要的任务需要迅速执行。并且它每隔一段固定时间检测下一个需要操作的任务,这个固定时间就是RTOS的时间片,即CPU给每个任务或线程分配的一段最大允许连续运行的时间。对写代码的人来说比较简单,规划好单片机的任务顺序,封装任务函数,然后按顺序往死循环里塞。

2025-05-14 23:59:45 297

原创 基于esp8266芯片,以emqx为服务器实现mqtt传输协议

在串口调试助手使用AT+MQTTSUB=0,"topic",0\r\n订阅主题,"topic"可以改成自己想要的主题,在WebSocket客户端设置相同主题然后发布信息即可在串口助手收到。(我这里用的mqttx,一个可以创建mqtt客户端的软件,更加方便)。发送AT+MQTTUSERCFG=0,1,"esp8266","admin","public",0,0,""\r\n设置用户属性,其中admin和public是刚刚创建的用户名和密码,esp8266是客户端名称可以自己改,其他参数不用改。

2025-01-03 15:05:16 1216

原创 基于stm32f103c8t6 HAL库 实现掉电检测并在掉电时执行指定程序

在USART1选项卡中的Mode里选择Asynchronous异步通信,波特率最好高一点,太低串口可能来不及在完全掉电前接收数据,我设置了1000000。在hal库中断函数的定义中存在一个__weak定义的HAL_PWR_PVDCallback函数,不能直接修改该函数,需要自己重新定义一个同名函数写上代码。在中断文件stmf1xx_it.c中找到PVD中断函数,该函数是我们在cubemx中勾选PVD中断后自动生成的。2.在中断函数中写上想要在掉电时执行的代码。将PVD初始化函数放在main主函数中。

2024-10-11 14:19:19 759

原创 基于stm32f103c8t6 HAL库 通过i2c协议实现RC522读卡程序

在Project Manager中写上工程名,IDE选择ARM,V5。固件包选择STM32Cube_FW_F1_V1.8.0,最后一行选择固件包的路径。打开串口调试工具(我这里用的sscom V5.13.1),选择单片机接入的端口并打开串口。重新上电并复位单片机,将卡靠近RC522,串口调试工具打印卡号并比较卡号是否与自己预输入的卡号相同。将PB1引脚改为Output工作模式,我这里将用PB1引脚接入RC522的RST复位引脚。(注意在uint8_t UID[5]数组中填入自己的卡号)

2024-09-29 14:45:02 1245

原创 基于STM32F103C8T6 HAL库 实现RTC功能并串口输出(新手记录)

在Toolchain中选择MDK-ARM,Min Version中选择V5,在下方Firmware Package Name and Version一行中取消Use latest available version的勾选,选择STM32Cube_FW_F1_V1.8.0。RTC将会从这个时间开始计时,year表示起始年份,month表示起始月,date为起始日期,weekday为起始工作日。13.编译程序,连接单片机,boot0置1,boot1置0,打开串口调试助手,找到相应的hex文件,开始下载。

2024-09-11 15:22:26 1410 1

原创 STM32F103C8T6 配置串口下载环境 (新手记录)

keil5固件包:STM32Cube_FW_F1_V1.8.0。

2024-09-06 17:12:01 2039

原创 基于STM32F103C8T6 HAL库 利用定时器中断实现LED闪烁 (新手记录项目过程)

Counter mode(计数模式)选择Up(上升计数),ClockDivision(时钟分频)选择NoDivision(不分频)。在设置Prescaler(预分频器)和Counter Period(计数器周期,对应为时基单元中自动重装载寄存器的值)时,先点开Clock Configuration(时钟树) 观察TIM1的时钟频率。10.在main.c中找到MX_TIM_Init,在圈中的位置写上代码:HAL_TIM_Base_Start_IT(&htim1);此代码意为开启定时器并使能中断。

2024-09-05 15:29:16 1570

原创 基于STM32F103C8T6 HAL库 实现LED闪烁。(新手记录项目过程)

点击圈中的魔法棒图标,点击Debug,在右侧的Use中选择调试器(Debugger),我这里用的是ST-Link所以选择ST-Link Debugger。8.点击后自动打开keil5,此时点击左侧中的main.c源文件,找到int main()中的主循环while(1)并写上代码,此处RESET和SET分别代表点亮LED和熄灭LED,Delay()函数提供延时,我设置500即延时500ms执行下一指令,可以实现LED灯闪烁的效果。11.掏出单片机,按下复位按钮,用户指示灯(USER LED)成功闪烁。

2024-09-04 11:55:13 1008

空空如也

空空如也

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

TA关注的人

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