<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[qq_73379310的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/qq_73379310</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; qq_73379310]]></copyright><item><title><![CDATA[ARM死机（HardFault）调试技巧详解（栈回溯，不破坏现场）]]></title><link>https://blog.youkuaiyun.com/qq_73379310/article/details/143648077</link><guid>https://blog.youkuaiyun.com/qq_73379310/article/details/143648077</guid><author>qq_73379310</author><pubDate>Sat, 09 Nov 2024 17:45:25 +0800</pubDate><description><![CDATA[在日常开发中，经常会遇到单片机卡死机等问题，经常很难定位到问题代码在哪里。常见的会导致单片机跑飞卡死的原因比如说死循环、数组越界、野指针等，尤其野指针最难调试，一般调试只能看见程序掉进 HardFault_Handler 死循环，无从得知是什么导致程序掉进了HardFault_Handler，连什么问题卡死都不知道，更别提上哪找了。(一些硬件问题也会导致HardFault_Handler，了解就好)假如死机触发比较难，好不容易触发一次想连接仿真器，连完debug自动把单片机reset了，又要等它再触发。]]></description><category></category></item><item><title><![CDATA[C语言陷阱：数据扩充 与 按位取反运算符“~”]]></title><link>https://blog.youkuaiyun.com/qq_73379310/article/details/143647977</link><guid>https://blog.youkuaiyun.com/qq_73379310/article/details/143647977</guid><author>qq_73379310</author><pubDate>Sat, 09 Nov 2024 17:21:47 +0800</pubDate><description><![CDATA[很显然，如果温度为负数，则向上扩充的16位会全为1，然后或运算之后导致我们的湿度数据被直接拉满。0x 1111 1111 1111 1111 1111 1111 1111 1011 ，远远大于b。正数扩充出来的高位将被填充为0，而负数会被填充为1。可知，~默认按32位操作，会自动做数据扩充，所以即使数据类型一致，也要多加注意，3.操作数混合了有符号数，无符号数，并且有正数有负数，很有可能出问题。1.操作数全为有符号数，即使类型大小不一样，没有问题。2.操作数全为无符号数，即使类型大小不一样，没有问题。]]></description><category></category></item><item><title><![CDATA[Linux系统编程：进程]]></title><link>https://blog.youkuaiyun.com/qq_73379310/article/details/135997274</link><guid>https://blog.youkuaiyun.com/qq_73379310/article/details/135997274</guid><author>qq_73379310</author><pubDate>Sat, 03 Feb 2024 03:39:17 +0800</pubDate><description><![CDATA[fork()在调用出生成一个子进程。过去，创建子进程会直接复制一份父进程的内存空间，但后来经过改进，父子进程在存储空间上使用写时拷贝，即子进程对父进程的内存空间为只读，当需要操作某内存时，会将其拷贝。返回值0则为子进程，非负数父进程，调用失败-1。]]></description><category></category></item><item><title><![CDATA[Linux系统编程：文件编程]]></title><link>https://blog.youkuaiyun.com/qq_73379310/article/details/132702746</link><guid>https://blog.youkuaiyun.com/qq_73379310/article/details/132702746</guid><author>qq_73379310</author><pubDate>Mon, 11 Sep 2023 15:59:15 +0800</pubDate><description><![CDATA[写一个demo.c先打开文件，文件不存在open返回-1，然后创建这个文件 利用 fd = open("./file1",O_RDWR|O_CREAT,0600);因为 6 = 4 + 2 ，4和2表示权限可读可写然后write进去字符串此时直接read，什么也读不到，因为光标位于字符串尾部，从光标往后读取自然为空简单粗暴的办法就是关闭文件再打开，光标自动从头部开始然后就可以读取到写入的内容了，最后关闭文件。]]></description><category></category></item><item><title><![CDATA[KFC玩具HelloKitty风扇改造——ESP32蓝牙blinker、1404无刷电机、双18650]]></title><link>https://blog.youkuaiyun.com/qq_73379310/article/details/132380420</link><guid>https://blog.youkuaiyun.com/qq_73379310/article/details/132380420</guid><author>qq_73379310</author><pubDate>Sat, 19 Aug 2023 15:30:03 +0800</pubDate><description><![CDATA[KFC玩具HelloKitty风扇改造——ESP32蓝牙blinker、1404无刷电机、双18650。使用NodeMCU-32S。PWM调速为0~1024，取550到650这个区间。]]></description><category></category></item><item><title><![CDATA[基于STM32+FreeRTOS的四轴机械臂]]></title><link>https://blog.youkuaiyun.com/qq_73379310/article/details/132296330</link><guid>https://blog.youkuaiyun.com/qq_73379310/article/details/132296330</guid><author>qq_73379310</author><pubDate>Sat, 19 Aug 2023 03:06:47 +0800</pubDate><description><![CDATA[基于FreeRTOS实时操作系统，主控为 STM32F103C8T6 ，机械臂为四轴分别被四个Mg90s舵机控制。本项目实现了 3 种控制方法，分别为 摇杆控制  、 串口蓝牙控制 和 示教器控制。可以进行动作录制和执行。采用8路ADC采集摇杆和示教器的模拟量并由DMA搬运数据，USART串口实时收发信息，IIC驱动OLED屏幕实时显示信息。并且实现了动作录制和执行功能，动作记忆可以由二维数组或者链表实现存储。通过SPI驱动W25Q128模块进行动作记忆扩容，即可以录制上百组动作。]]></description><category></category></item><item><title><![CDATA[ESP32-CAM ——Blinker平台]]></title><link>https://blog.youkuaiyun.com/qq_73379310/article/details/132154057</link><guid>https://blog.youkuaiyun.com/qq_73379310/article/details/132154057</guid><author>qq_73379310</author><pubDate>Tue, 08 Aug 2023 03:59:23 +0800</pubDate><description><![CDATA[ESP32-CAM，点灯云平台Blinker，MQTT协议，APP控制，Wifi视频监控，点灯，控制舵机。]]></description><category></category></item><item><title><![CDATA[FreeRTOS（4）：软件定时器、中断管理]]></title><link>https://blog.youkuaiyun.com/qq_73379310/article/details/132069022</link><guid>https://blog.youkuaiyun.com/qq_73379310/article/details/132069022</guid><author>qq_73379310</author><pubDate>Wed, 02 Aug 2023 20:22:50 +0800</pubDate><description><![CDATA[简单可以理解为闹钟，到达指定一段时间后，就会响铃。STM32 芯片自带硬件定时器，精度较高，达到定时时间后会触发中断，也可以生成 PWM 、输入捕获、输出比较，等等，功能强大，但是由于硬件的限制，个数有限。软件定时器也可以实现定时功能，达到定时时间后可调用回调函数，可以在回调函数里处理信息。请参考 51 及 STM32 中断相关课程。]]></description><category></category></item><item><title><![CDATA[FreeRTOS（3）：事件标志组、任务通知]]></title><link>https://blog.youkuaiyun.com/qq_73379310/article/details/132052243</link><guid>https://blog.youkuaiyun.com/qq_73379310/article/details/132052243</guid><author>qq_73379310</author><pubDate>Wed, 02 Aug 2023 18:26:32 +0800</pubDate><description><![CDATA[FreeRTOS 从版本 V8.2.0 开始提供任务通知这个功能，每个任务都有一个 32 位的通知值。按照FreeRTOS 官方的说法，使用消息通知比通过二进制信号量方式解除阻塞任务快 45%， 并且更加省内存（无需创建队列）。在大多数情况下，任务通知可以替代二值信号量、计数信号量、事件标志组，可以替代长度为 1 的队列（可以保存一个 32 位整数或指针值），并且任务通知速度更快、使用的RAM更少！]]></description><category></category></item><item><title><![CDATA[FreeRTOS（2）：队列、信号量、互斥量]]></title><link>https://blog.youkuaiyun.com/qq_73379310/article/details/132011010</link><guid>https://blog.youkuaiyun.com/qq_73379310/article/details/132011010</guid><author>qq_73379310</author><pubDate>Tue, 01 Aug 2023 22:35:40 +0800</pubDate><description><![CDATA[信号量（Semaphore），是在多任务环境下使用的一种机制，是可以用来保证两个或多个关键代码段不被并发调用。信号量这个名字，我们可以把它拆分来看，信号可以起到通知信号的作用，然后我们的量还可以用来表示资源的数量，当我们的量只有0和1的时候，它就可以被称作二值信号量，只有两个状态，当我们的那个量没有限制的时候，它就可以被称作为计数型信号量。信号量也是队列的一种。二值信号量其实就是一个长度为1，大小为零的队列，只有0和1两种状态，通常情况下，我们用它来进行互斥访问或任务同步。]]></description><category></category></item><item><title><![CDATA[FreeRTOS（1）：任务]]></title><link>https://blog.youkuaiyun.com/qq_73379310/article/details/132008165</link><guid>https://blog.youkuaiyun.com/qq_73379310/article/details/132008165</guid><author>qq_73379310</author><pubDate>Sun, 30 Jul 2023 19:19:09 +0800</pubDate><description><![CDATA[Free即免费的，RTOS的全称是Real time operating system，中文就是实时操作系统。注意：RTOS不是指某一个确定的系统，而是指一类操作系统。比如：uc/OS，FreeRTOS，RTX，RT-Thread等这些都是RTOS类操作系统。FreeRTOS是一个迷你的实时操作系统内核。作为一个轻量级的操作系统，功能包括：任务管理、时间管理、信号量、消息队列、内存管理、记录功能、软件定时器、协程等，可基本满足较小系统的需要。]]></description><category></category></item><item><title><![CDATA[基于STM32的环境监测预警系统]]></title><link>https://blog.youkuaiyun.com/qq_73379310/article/details/131914133</link><guid>https://blog.youkuaiyun.com/qq_73379310/article/details/131914133</guid><author>qq_73379310</author><pubDate>Sat, 29 Jul 2023 22:26:47 +0800</pubDate><description><![CDATA[主控STM32f103c8t6 。利用 DHT11 和烟雾传感器，进行温湿度检测和烟雾值检测，并实时在LCD屏幕上进行数值显示，同时通过串口通信将数据信息传至上位机显示。当检测到温湿度高出设定阈值，将打开排风扇进行通风；当检测到有烟雾时，将关闭通风风扇防止火灾蔓延，开启蜂鸣器警报并持续向上位机发送警报信息。]]></description><category></category></item><item><title><![CDATA[STM32:SPI]]></title><link>https://blog.youkuaiyun.com/qq_73379310/article/details/131911510</link><guid>https://blog.youkuaiyun.com/qq_73379310/article/details/131911510</guid><author>qq_73379310</author><pubDate>Tue, 25 Jul 2023 10:58:45 +0800</pubDate><description><![CDATA[SPI是串行外设接口（Serial Peripheral Interface）的缩写，是一种高速的，全双工，同步的通信总线，并且在芯片的管脚上只占用四根线，节约了芯片的管脚，同时为PCB的布局上节省空间，提供方便，正是出于这种简单易用的特性，越来越多的芯片集成了这种通信协议，比如 AT91RM9200。W25Q128 是华邦公司推出的一款 SPI 接口的 NOR Flash 芯片，其存储空间为 128 Mbit，相当于16M 字节。]]></description><category></category></item><item><title><![CDATA[STM32:OLED使用（IIC）]]></title><link>https://blog.youkuaiyun.com/qq_73379310/article/details/131890566</link><guid>https://blog.youkuaiyun.com/qq_73379310/article/details/131890566</guid><author>qq_73379310</author><pubDate>Mon, 24 Jul 2023 10:51:42 +0800</pubDate><description><![CDATA[参数一：I2C_HandleTypeDef *hi2c，I2C设备句柄参数二：uint16_t DevAddress，目标器件的地址，七位地址必须左对齐参数三：uint16_t MemAddress，目标器件的目标寄存器地址参数四：uint16_t MemAddSize，目标器件内部寄存器地址数据长度参数五：uint8_t *pData，待写的数据首地址参数六：uint16_t Size，待写的数据长度参数七：uint32_t Timeout，超时时间返回值：HAL_Status]]></description><category></category></item><item><title><![CDATA[STM32：ADC]]></title><link>https://blog.youkuaiyun.com/qq_73379310/article/details/131887756</link><guid>https://blog.youkuaiyun.com/qq_73379310/article/details/131887756</guid><author>qq_73379310</author><pubDate>Mon, 24 Jul 2023 07:13:13 +0800</pubDate><description><![CDATA[全称：Analog-to-Digital Converter，指模拟/数字转换器。ADC的性能指标量程：能测量的电压范围分辨率：ADC能辨别的最小模拟量，通常以输出二进制数的位数表示，比如：8、10、12、16位等；位数越多，分辨率越高，一般来说分辨率越高，转化时间越长转化时间：从转换开始到获得稳定的数字量输出所需要的时间称为转换时间]]></description><category></category></item><item><title><![CDATA[STM32：DMA]]></title><link>https://blog.youkuaiyun.com/qq_73379310/article/details/131877259</link><guid>https://blog.youkuaiyun.com/qq_73379310/article/details/131877259</guid><author>qq_73379310</author><pubDate>Mon, 24 Jul 2023 06:00:22 +0800</pubDate><description><![CDATA[DMA(Direct Memory Access，直接存储器访问) 提供在外设与内存、存储器和存储器、外设与外设之间的高速数据传输使用。它允许不同速度的硬件装置来沟通，而不需要依赖于CPU，在这个时间中，CPU对于内存的工作来说就无法使用。简单描述：就是一个数据搬运工！！]]></description><category></category></item><item><title><![CDATA[STM32：看门狗]]></title><link>https://blog.youkuaiyun.com/qq_73379310/article/details/131876396</link><guid>https://blog.youkuaiyun.com/qq_73379310/article/details/131876396</guid><author>qq_73379310</author><pubDate>Sun, 23 Jul 2023 10:52:14 +0800</pubDate><description><![CDATA[在由单片机构成的微型计算机系统中，由于单片机的工作常常会受到来自外界电磁场的干扰，造成程序的跑飞，而陷入死循环，程序的正常运行被打断，由单片机控制的系统无法继续工作，会造成整个系统的陷入停滞状态，发生不可预料的后果，所以出于对单片机运行状态进行实时监测的考虑，便产生了一种专门用于监测单片机程序运行状态的模块或者芯片，俗称“看门狗”(watchdog)。独立看门狗工作在主程序之外，能够完全独立工作，它的时钟是专用的低速时钟（LSI），由VDD 电压供电， 在停止模式和待机模式下仍能工作。]]></description><category></category></item><item><title><![CDATA[STM32：串口（蓝牙/WIFI/4G）]]></title><link>https://blog.youkuaiyun.com/qq_73379310/article/details/131777502</link><guid>https://blog.youkuaiyun.com/qq_73379310/article/details/131777502</guid><author>qq_73379310</author><pubDate>Wed, 19 Jul 2023 10:51:46 +0800</pubDate><description><![CDATA[串口发送数据，使用超时管理机制串口接收数据，使用超时管理机制串口中断模式发送串口中断模式接收作用：以阻塞的方式发送指定字节的数据形参 1 ：UART_HandleTypeDef 结构体类型指针变量形参 2：指向要发送的数据地址形参 3：要发送的数据大小，以字节为单位形参 4：设置的超时时间，以ms单位。]]></description><category></category></item><item><title><![CDATA[基于STM32的感应开关盖垃圾桶]]></title><link>https://blog.youkuaiyun.com/qq_73379310/article/details/131756552</link><guid>https://blog.youkuaiyun.com/qq_73379310/article/details/131756552</guid><author>qq_73379310</author><pubDate>Mon, 17 Jul 2023 23:40:27 +0800</pubDate><description><![CDATA[PWM波的频率不能太高，大约50HZ，即周期=1/频率=1/50=0.02s，20ms左右。使用超声波测距，当手离传感器距离小于5cm时，LED1点亮，否则保持不亮状态。编写微秒级函数：传入要延时多少微秒，开始延时，延时到指定时长，停止延时。检测靠近时，垃圾桶自动开盖并伴随滴一声，2秒后关盖。发生震动时，垃圾桶自动开盖并伴随滴一声，2秒后关盖。按下按键时，垃圾桶自动开盖并伴随滴一声，2秒后关盖。Echo信号，由低电平跳转到高电平，表示开始发送波。SG90舵机，超声波模块，震动传感器，蜂鸣器。]]></description><category></category></item><item><title><![CDATA[STM32：定时器、PWM]]></title><link>https://blog.youkuaiyun.com/qq_73379310/article/details/131751273</link><guid>https://blog.youkuaiyun.com/qq_73379310/article/details/131751273</guid><author>qq_73379310</author><pubDate>Sun, 16 Jul 2023 22:04:35 +0800</pubDate><description><![CDATA[软件定时缺点：不精确、占用CPU资源使用精准的时基，通过硬件的方式，实现定时功能。定时器核心就是计数器。基本定时器（TIM6~TIM7）通用定时器（TIM2~TIM5）高级定时器（TIM1和TIM8）STM32F103C8T6定时器资源：通用定时器介绍：1) 16 位向上、向下、向上/向下自动装载计数器（TIMx_CNT）。2) 16 位可编程(可以实时修改)预分频器(TIMx_PSC)，计数器时钟频率的分频系数为 1～65535 之间的任意数值。]]></description><category></category></item></channel></rss>