- 博客(21)
- 收藏
- 关注
原创 学习笔记-单片机蓝桥杯大模板更新-米醋
必须要用同一个全局变量:不然Beep,Motor,Relay任意两者同时使用时,会数据覆盖,按键时间越长,消抖效果越好,但按键生效越晚(按键的反应精度不够),界面切换时间不达标。第五位:0自动递增,先给个0号,下一刻读取1号,下一刻读取2号,我们要手动,所以0。AIN0外部输入,AIN1光敏电阻,AIN2差分输入(没考过),AIN3滑动变阻器。如果有多个ROM,就会检查,但板子上只有一个ROM,检查需要花时间,所以跳过。如果自己的代码写了putchar,不会用系统的putchar,而是用自己的。
2025-02-26 00:50:59
616
原创 学习笔记-沁恒第四讲-米醋
{“启”,0x80,0x00,0x00,0x01,0xF8,0x3F,0x08,0x20,0x08,0x20,0x08,0x20,0xF8,0x3F,0x08,0x00,0x08,0x00,0x08,0x00,0xE8,0x3F,0x24,0x20,0x24,0x20,0x22,0x20,0xE1,0x3F,0x20,0x20},/*"启",3*/长度 05 是这样得到:就是“05”,“41”,“00”,“01”,“45”5 位数长度;第一次发送的时候,显示已经发送完成了,跳过第一次发送,跳过while。
2025-02-23 15:02:55
972
原创 学习笔记-沁恒第五讲-米醋
点开SSCOM,选择WCH-Link,用单片机的串口一调试:因为复杂数据包的收发,一定要实时看到,按下时,才触发一下,手指触摸到指纹模块,引脚就是高电平,上面没手指,就是低电平。按下时,才触发一下,手指触摸到指纹模块,引脚就是高电平,上面没手指,就是低电平。//模式,0主页,1修改密码没有解锁管理员权限,2修改密码模式解锁了管理员权限。包长度 = 包长度至校验和(指令、参数或数据)的总字节数,包含校验和,但不。//5录入指纹,没有解锁管理员权限 6录入指纹,解锁了管理员权限。
2025-02-22 23:45:50
732
原创 学习笔记-MQTT,网络层代码-韦东山
else if(如果我发的指令buf里有"AT+CIPSEND=",你回个>:我就开始发字符了)g_cur_cmd = buf;如果我发的指令里有"AT+CIPSEND=",你回个>:返回1,我就开始发字符了。返回值AT_OK/AT_ERR/AT_TIMEOUT(超过1s,没来开锁)返回值AT_OK/AT_ERR/AT_TIMEOUT(超过1s,没来开锁)解析(buf里有OK\r\n,把数组buf拷贝给数组g_at_resp)//全局数组g_at_resp拷贝给resp(resp_len),
2025-02-21 10:00:00
932
原创 学习笔记-8MQTT-韦东山
1740039973:详细信息请参见https://mosquitto.org/documentation/authentication-methods/是true 不是ture。mosquitto_pub -t 'test/topic' -m 'hello world' 发布。platform_net_socket_write_timeout发包。platform_net_socket_recv_timeout收包。
2025-02-20 16:30:06
969
原创 基于b站up主 蛇皮杯 通信原理 的学习笔记3,4,5
平稳随机过程的自相关函数=平稳随机过程的 时间 自相关函数。平稳随机过程的 自相关函数 和 功率谱密度 是 一对傅里叶变换。输出随机过程的 自相关函数 和 功率谱密度 是傅里叶变换对。功率信号的功率谱密度P(f) (不重要)记E的公式,能量有限是能量信号,能量无穷大是功率信号。平稳随机过程的均值=平稳随机过程的 时间 均值。能量信号的能量谱密度 傅里叶反变换 是自相关函数。能量信号的傅里叶变换 就是 能量信号的频谱密度。功率信号的自相关函数:R(0)=平均功率。
2024-12-17 22:55:16
211
原创 基于b站up主 蛇皮杯 通信原理 的学习笔记
人耳能区分:20HZ到2w(低频),所以需要调制成高频(自然界很少有几M赫兹的信号)典型的操作:在之前的码加上监督码。消息:物质或精神状态的一种反映,如语音,文字,音乐,数 据,图片。按照信道中传输的是模拟信号还是数字信号,把通信系统分为。进发送设备/出接收设备的是:原始电信号。消息所表达的事件越不可能发生,信息量越大。受信者把原始的电信号->相应的消息。通信方式:单工,半双工,全双工通信。通信的目的:传递消息中所包含的。4, 通信系统的主要性能指标。信息:消息中包含的有效内容。四进制:四个等概率的码元。
2024-12-16 21:02:16
391
原创 学习笔记 MQTTclient韦东山 5
2使能中断后,马上产生一个中断,在中断里面,去buf里面取数据,把数据一个一个发出去,先取到一个数据,在写出去,传给串口模块后,马上返回,中断就处理完毕了。发送完一个字符后,再次触发一个中断,在中断里再取下一个数据,再次发送出去,中断马上返回,多次中断后,buf里的数据全发送出去,发送数据:可以用fputc,不能用puts,碰到空格不发送(所以不用puts)发送出命令还得回车换行,对方接受到回车换行时: 你已经发送完所有的命令了。3后面由中断触发,中断里面发送下一个数据,发完,唤醒,休眠的任务,
2024-12-15 01:03:24
297
原创 学习笔记 MQTTclient韦东山
>freertos里面的platform_net_socket_connect(平台相关的,操作到硬件)platform_net_socket_connect连接函数,怎么发出AT命令来连接某个主机host,端口port。platform_net_socket_recv_timeout接收数据函数,可传超时时间。platform_net_socket_close关闭连接函数。核心:创建线程,发布,订阅函数。
2024-12-12 13:57:09
1528
原创 学习笔记 MQTT韦东山11源码分析_订阅消息及处理流程
>return platform_net_socket_recv_timeout()平台相关的网络读函数。int mqtt_subscribe()->message_handlers_t(消息的处理结构体) *msg_handler = NULL;把收到的数据跟链表对比,使用主题找出handler,调用里面的处理函数handler。收到包的类型是什么?
2024-12-09 22:49:28
1379
原创 学习笔记 MQTT韦东山8连接服务器9发布消息
平台相关的 内存 分配函数,对于rt-thread / freertos / linux /-> /* send connect packet */发出一个连接的packet,要连接MQTT服务器。指针指向一个buff,保存要上报的数据msg.payload=(void *)buf;//mqtt_yield_thread创建的核心线程。//mqtt_yield_thread创建的线程。//mqtt_publish_thread发布。
2024-12-09 17:31:24
1577
原创 学习笔记 MQTT韦东山1~7节
1013,c->mqtt_thread= platform_thread_init(,mqtt_yield_thread, , , , ,)创建线程。client(表示MQTT的客户端)= mqtt_lease();
2024-12-08 18:42:20
697
原创 个人学习笔记 c语言的本质韦东山-21,22,23指针
访问双引号括起来的字符串,这个双引号表示字符串首地址,"007"的首地址0x0800 00A0。源码->程序->Flash(有初始值)->CPU运行->初始化代码。目的r0(flash里)是首地址,源r1(内存里)也是首地址,{60,7,1,"007",(void *)0}的地址。0x30是0,0x37是7,0是结束符。//问张三老婆的年龄是。r1=0x0800 008C,是。要访问GPIOA,要使用他的地址。想访问这个结构体,要使用他的指针。
2024-12-06 19:49:31
508
原创 个人学习笔记 c语言的本质韦东山-17头文件的作用-19指针
declared implicitly隐式声明的 没被声明的函数用什么参数。.c文件里定义了.h文件里没声明(告诉编译器需要声明参数,有什么返回值),但能编译成功。非常复杂,没办法拆分成有规律的数值,先把他保存在flash上某个位置。复杂变量的初始化:基于效率,用函数strcpy/memcpy来初始化。LDR R1,[R1]//读[R1],R1得到复杂的数值。使用运算的方式处理一些不是很简单,不是很难的数值。(flash应该放指令的,放了个数值)这个复杂的数值保存在flash上。
2024-12-06 16:16:54
327
原创 个人学习笔记 c语言的本质韦东山-14联合体-15位域
(我设置的栈 __Vectors DCD 0x20000000+0x3000)眼里,一个地址对应一个byte,8bit(int a;四个字节,四个地址)sp+0的位置bit0是sex;bit1是old,前30bit空。位域的操作效率低:先读出数据,修改之后再写进去。直接操作不是位域的变量:直接写就行了。sex在bit0,old在bit1。abc.old=0;abc.age=1;abc.old=1;pc的值指向下一个地址。下面这个是2byte。
2024-12-04 17:23:38
377
原创 个人学习笔记 江科大PID第0讲
PID定速控制:PID动态改变自己的输出,使得电机的实际速度始终贴近我们设定的目标速度。PID定位控制:PID动态改变自己的输出,使得电机的实际位置始终贴近我们设定的目标位置。MP1584稳压模块(手摸可能输出电压波动,造成后续模块烧坏):降压到3.3v。位置环(location):让倒立摆立起来后,稳定在一个位置。XH2.54型(稍大):针脚2.54mm间距。黄色接口的接口型号是KF2510,接角度传感器。DC插座(输入电压5~12v):外界电源适配器。角度环(angle):让倒立摆摆杆立起来。
2024-12-01 17:22:03
653
原创 个人学习笔记 c语言的本质韦东山-11指针-12结构体
内存对齐,char占1byte,浪费3byte(基于效率的)int (*f)(int v);相当于int (*f)(int v);CPU眼里,一个地址对应一个byte(int a;四个字节,四个地址)proc_type相当于int (*)(int v);以上四种指针变量都存的是首地址,在32位CPU里都是4byte。&students[0].score是0x20000010。&students[0].age是0x20000008。&students[0].sex是0x2000000C。相当于int *b;
2024-12-01 17:19:53
226
原创 笔记 第八周单片机xifeng
/等待返回信号或定时器溢出 while((RX==1)&&(TF1==0));//复位计数值,等待超声波信号发出 TH1=TL1=0;//清除溢出标志位 TF1=0;if(CF==0) //定时器没溢出 if(TF1==0)if(Uart_Rx_Index==0)return;//停止计时 TR1=0;原版(减速的方案)的自动发送(或连续按发送)会卡死,用如下新版的(超时解析)
2024-11-30 18:27:39
457
原创 个人学习笔记 c语言的本质韦东山-10函数
f=(int (*) (int v))0x20008001 //指针指向首地址 //bit0=1,CPU才知道thumb指令集。//0x0800,000C变0x0800,000D(最低bit=1表示Thumb指令不表示地址)怎么让子函数修改调用者的变量:a=add_val(&a);F103(只支持thumb指令集)取函数地址的时候,bit0不表示地址,表示他是一个thumb指令。栈(很深的调用关系,进出函数创建的局部边量会出栈,找调用最复杂的调用关系)(该指针的类型)int *
2024-11-29 14:12:15
608
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅