- 博客(14)
- 资源 (4)
- 收藏
- 关注

原创 RT-Thread I/O设备模型及驱动框架解析(一)
1. 概述本着由简入繁的原则,分析源码以STM32平台的看门狗源码为例,正好参考官方资料辅助分析硬件平台STM32F407ZGRT-Thread版本4.0.4在分析源码前需要了解的基础知识如下:自动初始化机制RT-Thread 文档中心I/O驱动模型RT-Thread 文档中心看门狗驱动框架RT-Thread 文档中心2. 原理解析通过基础知识的准备,切回到我们的主题。那么在I/O设备模型下,使用watchdog驱动框架如何驱动硬件看门狗呢?看下官...
2022-01-06 15:18:52
3473
原创 180/360度舵机控制方法
信号端只要输入一个50HZ的方波信zd号,然后控制信号周期的高电平脉冲持续的时间就可以控制速度和正反转及停转。一个高电平脉冲持续的时间对应一个速度。高电平为1毫秒~1.5毫秒时,舵机正转(1毫秒时正转速度最快,越版接近1.5毫秒越慢,1.5毫秒时舵机停转),高电平权为1.5毫秒~2毫秒时舵机反转(1.5毫秒时舵机停转,越接近2毫秒反转的速度越快,2毫秒时以最快的速度反转)。...
2022-01-24 14:51:03
8710
转载 笔记:二维数组,二级指针,数组指针,指针数组详解
#include <stdio.h>#define FUNCTION_START() printf("-----------%s(%d)--start----------\n",__FUNCTION__, __LINE__)#define FUNCTION_END() printf("-----------%s(%d)--end------------\n",__FUNCTION__, __LINE__)/*************************************.
2022-01-24 10:59:43
265
原创 笔记:指针数组与二级指针
首先来看一段代码#include <stdio.h>int main(){ char *a[8]; char **b; char *str1 = "111"; char *str2 = "222"; char *str3 = "333"; a[0] = str1; a[1] = str2; a[2] = str3;// b = a;// b = &a; b = &a[0];
2022-01-24 10:37:01
813
原创 水质参数总结
水质参数总结,持续更新中...水质分类Ⅰ类——主要适用于源头水、国家自然保护区; Ⅱ类——主要适用于集中式生活饮用水地表水源地一级保护区、珍稀水生生物栖息地、鱼虾类产卵场、仔稚幼鱼的索饵场等; Ⅲ类——主要适用于集中式生活饮用水地表水源地二级保护区,鱼虾类越冬场、洄游通道、水产养殖区等渔业水域及游泳区; Ⅳ类——主要适用于一般工业用水区及人体非直接接触的娱乐用水区; Ⅴ类——主要适用于农业用水区及一般景观要求水域。三类及以上水源可以作为饮用水源DO:溶...
2022-01-14 10:35:44
1764
原创 字节对齐问题:以指针方式uint32分包uint8_t数组
1、在windows系统用QT平台拆包uint8_t数组,没有出现字节对齐问题该方法把数据类型类比结构体,强制把uint8_t *指针转成uint32_t *,再用*得到32位数据,此过程需要考虑大小端模式,此处不做讨论。2、在某M0+平台,也用类似方法分包数组此时由于平台不一样,存在字节对齐的问题,字节不对齐访问,就会出现错误,如下:此处的buffer、circle_1pro都为uint8_t类型数组,数组在用强制转换时,均存在非法访问的错误,比如p...
2021-02-23 17:40:55
1634
原创 VScode小技巧-同时打开多个文件
有刚使用vscode的同学会遇到,打开多个文件时,会有原文件被覆盖的问题,这边有个小技巧可以了解下。在vscode打开文件如下仔细查看文件名,是带斜体的。右键该文件名会弹出菜单:此时点击“保持打开状态”,该文件名的斜体会消失,则该文件会一直保持打开,再打开新文件也不会被覆盖了还有个简单的方法,打开文件后双击该文件名,也可以实现文件保持打开。重要的事情说三遍:双击文件名、双击文件名、双击文件名...
2020-06-14 11:04:47
9039
原创 关于STM32库中超时函数tick溢出的分析
STM32的官方库文件stm32f1xx_hal.c部分摘录如下__IO uint32_t uwTick;/** * @brief This function is called to increment a global variable "uwTick" * used as application time base. * @note In the default implementation, this variable is incremented each 1
2020-05-20 10:53:07
5312
2
原创 结构体嵌套及定义方式
1,结构体定义一定义:typedef struct{ GPIO_TypeDef* port_x; //引脚组 uint32_t gpio_x; //引脚号}gpio_struct;typedef struct{ gpio_struct sda; //成员变量会有内存分配 gpio_struct scl; uint16_t data;}nixie_tube_struct;申明结...
2020-05-11 13:32:08
2868
原创 Keil存储区的调试记录
1,const修饰的变量存储在RO-data区,初始化的全局变量在RW-data区;KEIL版本:5.27;平台:STM322,在main.c文件中定义如下如上,arry[100],temp[100],string[]为常量,在RO-data区;temp1为初始化的全局变量在RW-data区3,只是在main.c中定义了以上变量,不做任何使用,编译不会分配任何空间4,若在main.c中调用任何变量则该文件中的同类型的变量都会被编译并分配空间(即调用一个co...
2020-05-11 13:24:44
1111
原创 git实用指令总结
持续更新中git rm -r --cached dir/ #停止跟踪文件的所有文件gitcheckout. #本地所有修改的。没有的提交的,都返回到原来的状态gitstash #把所有没有提交的修改暂存到stash里面。可用gitstashpop回复。gitreset--hardHASH #返回到某个节点,不保留修改。gitreset--softHASH #返回到某个节点。保留修改查看用户配置git config user.name...
2020-05-11 11:23:58
216
原创 STM32公用中断源时的中断分配
以STM32l0xx为例多外部中断共用中断源时,要通过判断中断请求状态来分配中断stm32l0xx的寄存器如下单个中断时处理如下多个中断时处理如下通过__HAL_GPIO_EXTI_GET_IT()函数来分辨中断请求,并请中断和回调函数,无需使用系统的中断函数HAL_GPIO_EXTI_IRQHandler();stm32f1系列如下使用通过状态查询来响应中断...
2020-05-11 11:15:17
720
原创 STM32串口空闲中断
以stm32f030x8为例1、空闲中断是接收数据后出现一个byte的高电平(空闲)状态,就会触发空闲中断.并不是空闲就会一直中断,准确的说应该是上升沿(停止位)后一个byte,如果一直是低电平是不会触发空闲中断的(会触发break中断)。2、寄存器描述...
2020-05-11 11:03:27
2095
F429的分散加载示例
2022-03-04
数据结构c语言版-严蔚敏
2019-03-14
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人