自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 CAN总线(控制线局域网总线)

标准格式:空闲状态隐形电平,起始帧显性电平,11位的包尾id(用以区分后面的数据,用于区分优先级。根据仲裁规则:id小的优先发送)RTR:远程请求标志位(用于区分数据帧还是遥控帧),数据帧必为显性电平(写入),遥控帧必须位隐形电平(读取)IDE区分标准格式还是扩展格式:显性0表示标准,隐形1表示扩展。CANOPEN网络设置一个网络管理主机NMT-MASTer。ACK位槽:发送方隐形,接收方显性。DLC用于指定数据段有多少字节。将11位的帧id划分为。使用字典工具软件生成。

2025-11-13 12:53:42 143

原创 SPI通讯协议(串行外设接口)备注:初步了解,没有实战

NSS(片选引脚)低电平有效(根据从设备的数据手册来决定)输出引脚配置为推挽输出,输入引脚配置为浮空或者上拉输入。主机移出最高位放在mosi,从机移出最高位放在miso。SSPI有四种采集方式,需要查阅芯片数据手册选择 S。PI通讯对于一帧数据位数没有规定,取决于芯片设定。MISO(主机接收从机输出)MOSI(主机输出从机接收)写数据:发送从设备对应的指令。读数据:发送从设备对应的指令。硬件方面:可以一主多从。

2025-11-13 10:04:31 107

原创 模数地分离

111

2025-11-11 15:38:28 87

原创 大师篇-零基础入门PCB设计

mcu选型表。

2025-11-07 19:31:31 183

原创 c语言二级编程题目(有做错的)

int prime(int n)//判断素数,是返回1,不是返回0 { int k,flag=1;利用双重for循环找每个位中相同的数,第二重for循环初始下标加一开始循环比如第一个位置需要跟第2,3,4位置比较,特殊情况1001所以要有个flag进行标记,标记了再加一。错误原因:字符串的开头可以有若干个空格(包括没有空格)----->误认为至少有一个空格。思路:用%10取末尾的数,/10再%10再取一位,统计位数。总和:30,个数:5。

2025-09-04 09:35:44 291

原创 空气质量检测仪实战项目笔记(移植freeRTOS)

vPortSVCHandler和xPortPendSVHandler这两个函数的具体实现都在ARM_CM4F\port.c中。为什么不像上面两个函数进行宏定义,是为了防止进入该中断时,rtos内核还没有开启调度就去执行相关程序。记得要删除gd32f30x_it.c中这两个服务函数和systick服务函数的代码。(2):在工程文件夹下创建件freeRTOS文件夹用于存放。(4):进入RVDS文件夹保存单片机对应的内核文件。将添加的.c文件添加到keil中以及添加文件夹路径。RVDS:CPU内核相关。

2025-09-03 19:19:56 1099

原创 空气质量检测仪实战项目笔记(按键篇)

2025-09-03 18:12:24 96

原创 空气质量检测仪实战项目笔记(锂电池充电驱动篇)TP4055

12位ADC对应量程0xFFF, 3.3V是adc测量对应电压最大值,v是测量出的adc值,4/3是转换成VBAT。

2025-09-03 16:49:46 200

原创 空气质量检测仪实战项目笔记(温湿度传感器篇)

(1)1.发送s(起始信号)+设备地址+write(0) 2. 传感器返回ACK响应 3. 发送指令 4.等待一定时间。(2)测量完成:单片机持续发送地址+read标志位(1)传感器返回ACK响应。hold master模式:使用器件scl时钟线阻塞,其他挂载外设无法使用。解决传统的读取数据利用阻塞延时:;利用状态机加系统运行时间的方法。checksum:crc校验字节。(3)读取数据:两个字节。驱动编写:基于模拟IIC。

2025-09-02 23:50:46 249

原创 空气质量检测仪实战项目笔记(pm2.5篇)

使得pm2.5间歇性工作(传感器的工作电流100ma),传感器里面有电机,电机是感性负载,提高检测仪系统的可靠性。(1)串口0中断接收数据(一次接收一个字节),压入ProcUartDate()中处理。(1):当pa6输出高电平1,三极管导通,pmos的G(栅级)为0,S为5v,导通。直到接收到32个字节(包头正确),中断中快进快出。PM2.5电路分析:主要有npn三极管8050和一个pmos管。并设置g_pktRcvd为true以便于处理数据。(2):当pa6输出高电平0,三极管不导通。

2025-09-02 22:30:47 194

原创 freertos实战(xrh毕设)

/ 设置 TRIG 引脚为高电平。// 状态计数器递增到 1。

2025-08-16 19:56:33 418

原创 于振南RTOS笔记(第七日)

信号量只用于任务间状态同步,信号量本身不能实现大量数据的传递,引出消息队列。BIN和HEX的区别:HEX文件有地址信息,BIN文件没有。这边转去看韦东山的freertos。队列:先进先出FIFO。

2025-07-12 17:31:21 238

原创 于振南RTOS笔记(第六日)

运行会报错..\Compnents\easylogger\src\elog_async.c(35): error: #5: cannot open source input file "pthread.h": No such file or directory。#define ELOG_NEWLINE_SIGN "\r\n"并且添加\r。在elog.c中加入头文件 #include "cmsis_os.h"easylog的移植裸机port.c。

2025-07-11 15:18:58 181

原创 于振南RTOS笔记(第五日)

portYIELD_FROM_ISR这个函数可以在状态切换后马上切换任务,taskwoken平时为0,当状态有变化时为1,&taskwoken被调用后是否有任务状态发生切换,有的话为1。不可以调用阻塞性质的api:vtaskdelay,xsemaphoretake等待信号量的操作(裸机程序不属于rtos的体系,无法被调度器所调用)拿到信号后冲阻塞态变成就绪态之间差了一个tick会导致信号丢失,从中断释放信号量到底半操作的时间要足够的短才不会导致数据的丢失。主动的放弃cpu资源,供另一个函数执行。

2025-07-10 12:15:00 159

原创 于振南RTOS笔记(第四日)

任务切换在下个tick来临,所以在强实时的场合要采用不同的方式<task_yeld(无间隔的任务切换)>实质是通过主动触发pendsv中断,可以提高实时性。把二值信号量换成互斥锁后低优先级释放了信号给高优先级,但是高优先级只运行了一次,接下来全部运行的是中优先级,这是什么问题呢?临界区会导致系统停止轮转,使用互斥锁更佳,互斥锁可能导致<死锁问题>!<互斥锁跟踪功能:知道谁等待互斥锁解锁,把解锁的提高至需要锁的同等优先级>利用二值信号量释放信号量快,接收信号量的任务执行较慢。主动切换任务的实验明天再看!

2025-07-07 22:55:04 333

原创 于振南RTOS笔记(第三日)

任务:写一个任务每五秒钟对two_led_toggle进行挂起,再过五秒进行恢复,循环四次进行删除。解析:这是典型的一次性任务被后创建的任务抢占,由于抢占的任务独占cpu,则任务二无法创建。RTOS起码要有一个任务除于运行态,所有有一个空闲任务来垫底,空闲任务也成为<背景任务>遇到的问题,任务被删除之后我运行resume_task,出现shell卡死。主动触发的超级中断,不会被打断------>SVC(系统服务调用)超级中断。<出现问题,led闪烁不准>------>刷屏占用cpu资源。

2025-07-06 21:58:17 438 1

原创 于振南RTOS笔记(第二日)

这个图标明了任务的上下文不能直接切换,涉及到栈的push和pop,在t4时刻中断来临,中断函数中push到寄存器中然后t5时刻pop到内核中运行,t6时刻恢复任务二的运行,从cpu内核push到任务二的栈中,导致中断的程序占据任务二的程序,系统发生错误,可能重启。时间片轮转机制:freertos中均分为每个任务一个tick(某些系统可以设置均分的tick数量),时间都花费在任务切换上了,默认相同优先级开启时间片轮转,也可以通过宏来关闭。在RreeRtos中,任务的句柄实际取的时任务栈<首地址>

2025-07-05 19:01:31 211

原创 于振南RTOS笔记(第一日)

1.通过最基础的对两个LED灯定时闪烁引出,代买耦合性强,hal_delay定义中while ((HAL_GetTick() - tickstart) < wait)不断获取系统tick时间,占用cpu。SystemInit是单片机上电后的第一个c语言程序,再到__main汇编对栈的配置最后到mian()函数运行用户代码。3.rtos思想精髓:在多个函数中快速跳跃(函数同时运行),不再是裸机的顺序执行。push压栈:把中断执行前的cpu寄存器的值压到主栈存储起来。实例:函数和任务拥有独立的<任务栈>

2025-07-04 21:38:13 137

空空如也

空空如也

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

TA关注的人

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