- 博客(33)
- 资源 (1)
- 收藏
- 关注
原创 UcosII移植
文章目录UCOS移植前准备UCOS源码文件整理UCOS源码修改1. os_cpu_c.c2. os_cpu_c.asm3. os_cfg.h4. includes.h5. app_cfg.hucos移植UCOS移植前准备UCOS源码文件整理新建UCOS-II文件夹,并在uCOS-II目录下新建3个目录文件夹CORE、PORT、CONFIG。将源码Source文件夹下除os_cfg_c.h和os_dbg_r.c全部复制到移植工程目录下的CORE下将源码port->coterxM文件夹下
2021-09-06 15:29:37 1655 2
原创 IAR在包含了头文件后,使用库函数,仍然提示函数未定义
报错信息:Error[Li005]: no definition for “HAL_ETH_DMATxDescListInit” [referenced from E:\IAR\A_FileTransfer\LiwipNoos\EWARM\LiwipNoos\Obj\ethernetif.o]解决方案1. 要在#include "stm32f7xx_hal_conf.h"的相应库函数头文件打开2. 要在工程中添加相应的库函数文件问题在使用CubeMx创建工程时没有对eth以太网进行配置,后期在工
2021-09-05 23:35:06 3265
原创 hal库滴答定时器配置问题
在采用cubmux生成工程文件时,时钟采用的是外部晶振,由于事先没有选对板子的外部晶振,出现时钟频率不对(无法正确定时)的情况,后期对修改外部时钟频率是需要修改两个地方即可。1.main函数下的滴答定时器初始化函数,对于锁相环分频倍频的参数2.stm32f4xx_hal_conf.h文件中对外部时频率的初始化,改为所用板子实际的时钟频率在system_stm32f4xx.c文件中也有对外部时钟频率的初始化,但应该是stm32f4xx_hal_conf.h文件中对外部时钟频率的初始化在前,所以此
2021-08-19 13:16:37 475
原创 sourcetree安装
sourcetree安装https://cloud.tencent.com/developer/article/1369196git输入命令行 创建私钥{ssh-keygen -t rsa -C “youreamil如1234@qq.com”}
2021-07-04 09:55:37 268
原创 Android studio
JDK允许你使用java,允许你的应用运行在JVM上SDK允许你的应用运行在安卓上JDK全称为 Java Development Kit,翻译为「Java 软件开发工具包」,里面包含了 JRE,javac.exe,jar.exe,javap.exe,jps.exe 等等基础工具。JRE全称为 Java Runtime Environment,翻译为「Java 运行时环境」,包含了 JVM(Java 虚拟机),Java 基础类库。Java 程序想要运行起来所必要的软件环境。SDK全称为 Software
2021-06-04 12:02:04 184
原创 STM32——下载仿真
==STM32 BOOT0/BOOT1设置启动方式=====================================
2021-04-02 22:06:04 167
原创 keil添加新文件.c.h
文章目录添加文件到组中1.双击组名称2.点击快捷键添加头文件路径.h1.点击魔术棒快捷键2.头文件加./添加文件到组中1.双击组名称双击组名称,打开弹窗,然后选择相应的组中的新文件,在点击ADD2.点击快捷键点击快捷键,可以在弹窗中选择要添加文件的组,(也可以点击组下方的空白处,或上方的新建快捷键,可以新建组),然后选择要添加的文件点击确认添加头文件路径.h1.点击魔术棒快捷键2.头文件加./#include “./led/bsp_led.h”./表示当前工程目录...
2021-03-15 17:20:23 19894
原创 STM32学习笔记——SysTick(系统滴答定时器)
SysTick是一个24位的系统节拍定时器system tick timer,SysTick,具有自动重载和溢出中断功能,所有基于Cortex_M3处理器的微控制器都可以由这个定时器获得一定的时间间隔。SysTick—系统定时器有4个寄存器,在使用SysTick产生定时的时候,只需要配置前三个寄存器,最后一个校准寄存器不需要使用。SysTick 属于内核的外设,有关的寄存器定义和库函数都在内核相关的库文件core_cm3.h 中。中断优先级是将置位的数转换为2进制,如Systick默认为15.
2021-01-24 00:46:22 1752 1
原创 STM32学习笔记——中断
EXTI(External interrupt/event controller) —外部中断/事件控制器NVIC 是嵌套向量中断控制器编程思路1)初始化用来产生中断的GPIO 口。2)开启 AFIO 时钟3)初始化EXTI。4)NVIC配置。5)编写中断服务函数。1)初始化IO及EXTI配置注意开启AFIO时钟EXTI配置时要选择输入线(把相应的要发生中断的GPIO连接到EXTILine)GPIO_EXTILineConfig(KEY1_EXTI_PortSource,KEY
2021-01-23 21:42:00 366 1
原创 STM32学习笔记———名词释义
GPIO(General-purpose input/output)通用输入/输出AFIO(Alternate-function input/output)复用功能输入/输出Q:外部中断中为什么打开AFIO时钟?A:EXTI使用的时候除了开GPIO的端口时钟外,我们还打开了AFIO的时钟,这是因为等下配置EXTI信号源的时候需要用到AFIO的外部中断控制寄存器AFIO_EXTICRx,具体见《STM32F10X-中文参考手册》8.4章节AFIO寄存器描述记住一句话:AFIO时钟只有在开启了端口重映射
2021-01-22 16:53:57 540
原创 STM32BUG--按键检测,while后分号
while结尾不加分号,造成返回值出现问题,按键按下反应出现问题按键按下后,灯不发生反转,需要加个延时while(GPIO_ReadInputDataBit(GPIOx,GPIO_Pin) == KEY_ON) ;;;;;;;;;;;;;;;;分号uint8_t KEY_Scan(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin){if(GPIO_ReadInputDataBit(GPIOx,GPIO_Pin) == KEY_ON){ while(GPIO_Rea
2021-01-20 23:47:19 650
原创 STM32学习笔记——调库点灯
寄存器模板建立(参考指南)暂时空白新建相关.c .h文件bsp_led.cbsp_led.h.c文件demo/* 1.打开外设时钟 *//* 2.配置外设初始化结构体 *//* 3.调用外设初始化函数,把配置好的结构体成员写到寄存器里边 *///bsp board support package 板级支持包#include "./led/bsp_led.h"void LED_GPIO_Config(void){ GPIO_InitTypeDef GPIO_InitStruct;
2021-01-15 20:56:36 363 2
原创 STM32学习笔记——寄存器点灯
指南者 stm32f103VET6一. 查看原理图确定点亮 绿灯PB0即GPIOB0二.查看相应寄存器GPIOB 基地址为0X4001 0C00复位时钟总线为0X40021000三.寄存器配置1.时钟使能区别于51单片机,32要自行打开时钟控制,否则无法进行数据传输//打开APB2的时钟使能 //时钟 0X4002 1000 //GPIOB在位3 置1 *(unsigned int *)0X40021018 |= (1<<3); //(1<<3)等同0
2021-01-12 15:11:25 2218 1
原创 哈希表
哈希表(又名为是散列表)哈希表的设计主要是为了查找,为了对内存中的数据进行快速查找,它的查找时间复杂度是O(1)。设计一个哈希表的关键有三个:怎么控制哈希表的长度怎么设计哈希函数怎么处理哈希冲突哈希表大小哈希大小》装填因子 a = 总键值对数(下标占用数) / 哈希表总长度确保哈希表长度是一个素数,这样会产生最分散的余数,尽可能减少哈希冲突 设计好哈希表装填因子,一般控制在0.7-0.8确认我们的数据规模,如果确认了数据规模,可以将数据规模除以装填因子,根据这个结果来寻找一个可行
2020-10-10 08:56:25 144
原创 右移>>和无符号>>> 补码
位操作 &与、|或、~按位取反、^异或、<<左移、>>右移右移>> 正数高位补0,负数高位补1无符号右移>>> 不论正负,高位均补0无符号左移是不存在的,因为左移在低位补位,而低位没有正负数的概念,因此不存在无符号左移demo:右移负数:例如-4>>2(高位补1)首先写出-4的二进制数源码,因为是负数所以最高位为1 (负数的源码是负数的绝对值)1000 0100然后写出-4反码:保证符号位不变,其余位置取反
2020-10-08 11:41:18 408
原创 程序的内存分配
程序的内存分配一个由C/C++编译的程序占用的内存分为以下几个部分:1、栈区(stack):由系统自动分配和释放,存放函数的参数值,局部变量的值等。2、堆区(heap):一般由程序员分配和释放,若程序员不释放,程序结束时可能由系统回收。3、全局区/静态区(static):全局变量和静态变量的存储是放在一起的,初始化的全局变量和静态变量在一块区域;未初始化的全 局变量和未初始化的静态变量在相邻的另一块区域,程序结束后由系统释放。4、文字常量区:常量字符串就放在这里,程序结束后由系统释放。5、程序
2020-09-29 21:54:14 286
原创 算法--排序
算法int main(){ int i; int a[] = {4,2,9,16,13,15,14}; int n = sizeof(a)/sizeof(int); insertsort(a,n); printf("排序好的数组为:"); for (i = 0; i < n; i++) { printf(" %d", a[i]); } printf("\n"); system("pause"); return
2020-09-29 21:21:22 101
原创 linux文件服务站 --函数知识点
linux文件服务站项目–函数笔记》》linux文件服务站 --源码》》linux文件服务站 --项目问答popenopen:直接操作物理设备,比如磁盘、设备文件 一般设备/设备文件都通过open来操作fopen:则通过缓冲区来操作,读写都在缓冲区上。返回值为流的文件指针popen:应用场景:popen应用于执行shell命令,并读取此命令的返值,或者与执行的命令进行交互。会调用fork()产生子进程,然后从子进程中调用/bin/sh -c来执行参数command的指令 依照pope
2020-09-17 12:24:44 116
原创 树莓派的刷机与登录
文章目录一、树莓派刷机二、树莓派的登录方式1.HDMI视频线 连接到显示器2.串口方式登录一、树莓派刷机1.下载刷机镜像文件(3.5G)链接:https://pan.baidu.com/s/10RAv17qNZ4Wk5UyykHTDWA 提取码:l5mw2.准备一个tf卡(8G即可)及读卡器插入电脑3.解压文件 运行exe文件按步骤点击安装即可4.刷机打开上面安装的win32D—序号1标记的文件,注意选择要刷机的磁盘!!点击write,等待几分钟后即可完成刷机二、树莓派的登
2020-09-02 22:40:38 866 1
原创 LINUX进程间网络通信--SOCKET
网间通信进程通信的概念最初来源于单机系统。由于每个进程都在自己的地址范围内运行,为保证两个相互通信的进程之间既互不干扰又协调一致工作,操作系统为进程通信提供了相应设施,如UNIX BSD有:管道(pipe)、命名管道(named pipe)软中断信号(signal)UNIX system V有:消息(message)、共享存储区(shared memory)和信号量(semaphore)等.他们都仅限于用在本机进程之间通信。网间进程通信要解决的是不同主机进程间的相互通信问题(可把同机进程通信看作
2020-08-14 12:00:26 522
原创 创建c语言脚本测试代码
(1)创建一个test.c文件int main(int argc,char **argv){ int i; int number; //number测试次数 number = atoi(argv[1]);//atoi ASCI to int for(i=0;i<number;i++) { system("./a.out");//默认测试文件./a.out
2020-08-11 22:27:16 922
原创 LINUX线程API、互斥锁、条件变量
转载博文https://www.cnblogs.com/xiehongfeng100/p/4620852.html文章目录一、线程与进程二、线程API三、线程操作API1. 线程创建pthread_create2. 线程退出pthread_exit3. 线程等待pthread_join4. 线程ID获取pthread_self及比较5. 线程脱离四、demo线程创建一、线程与进程典型的UNIX/Linux进程可以看成只有一个控制线程:一个进程在同一时刻只做一件事情。有了多个控制线程后,在程序设计时可以
2020-08-09 20:14:58 232
原创 LINUX进程间通信(IPC)--共享内存
一、共享内存两个不同进程A、B共享内存的意思是,同一块物理内存被映射到进程A、B各自的进程地址空间。进程A可以即时看到进程B对共享内存中数据的更新,反之亦然。由于多个进程共享同一块内存区域,必然需要某种同步机制,互斥锁和信号量都可以。ipcs -m (查看共享内存)ipcrm -m shmid (删除共享内存)共享内存的特点:(1)共享内存就是允许两个不想关的进程访问同一个内存(2)共享内存是两个正在运行的进程之间共享和传递数据的最有效的方式(3)不同进程之间共享的内存通常安排为同一段物
2020-08-08 17:50:25 491
原创 LINUX进程间通信(IPC)--信号量
文章目录一、信号量简介二、信号量函数1.semget 创建/获取信号量2.semop 修改信号量值(p v)3.semctl 初始化、删除三、demo 父子进程的信号量一、信号量简介在对于临界区资源管理的过程中,多个程序同时访问一个共享资源经常容易引发一系列问题:如死锁,结果不唯一等等,使用信号量,来解决进程或线程间共享资源引发的同步问题。让多个进程通过特殊变量展开交互,一个进程在某一个关键点上被迫停止执行直至接收到对应的特殊变量值,通过这一措施,任何复杂的进程交互要求均可得到满足,这种特殊的变量就
2020-08-08 16:14:22 1188
原创 LINUX进程间通信(IPC)--消息队列
文章目录一、消息队列二、特点三、消息队列函数1.msgget2.msgsnd3.msgrcv4.msgctl删除消息队列四、demo消息队列的信息传输一、消息队列消息队列是消息的链表,存放在内核中并由消息队列标识符(msqid)表示。消息队列提供了一个从一个进程向另一个进程发送数据块的方法,每个数据块都可以被认为是有一个类型,接受者接受的数据块可以有不同的类型。二、特点消息队列独立于发送与接受进程。进程终止时,消息队列及其内容不会被删除,需要调用接口删除或使用命令删除消息队列是面向记录的,
2020-08-07 23:19:42 234
原创 LINUX进程间通信(IPC)--管道
一、无 名管道管道,通常指无名管道,是UNIX系统IPC最古老的形式特点:半双工(即数据只能在一个方向上流动),具有固定的读端和写端。它只能用于具有亲缘关系的进程之间的通信(也是父子进程或者兄弟进程之间)。它可以看成是一种特殊的文件,对于它的读写也可以使用普通的read、write 等函数。但是它不是普通的文件,并不属于其他任何文件系统,并且只存在于内存中。要点:1、#include // 头文件2、int fd[2]; // fd[0]:读端 / fd[1]:写端3、 pip
2020-08-07 19:05:26 215
转载 LINUX 进程间通信(IPC)
声明:本博文转载自https://www.cnblogs.com/CheeseZH/p/5264465.html旨在方便查询、个人学习,如有侵权请告知,马上删除。 进程间通信(IPC) 进程间通信(IPC,InterProcess Communication)是指在不同进程之间传播或交换信息。IPC的方式通常有管道(包括无名管道和命名管道)、消息队列、信号量、共享存储、Socket、Streams等。其中 Socket
2020-08-07 15:45:11 180
原创 基于Wemos的感应开盖垃圾桶
做过的一个小项目,基于Wemos的基础模块,利用超声波模块和舵机实现垃圾箱盖子的自动开合。目录一、成果展示二、硬件模块三、源代码四、笔记(1)void setup() //初始化(2)void loop()(3)Servo类函数 //(伺服)舵机一、成果展示制作完成后可通过移动电源供电使用,当垃圾桶前部指定范围内出现物体时,桶盖自动打开,此时可以将物品放入桶内,延时一定时间后,桶盖自动关闭。若垃圾桶前部指定范围内始终有物体存在,桶盖将保持打开状态。二、硬件模块义乌小商品 - - 迷你垃圾
2020-07-24 16:57:11 1270
原创 HELLO WORLD AND CSDN
HELLO WORLD AND CSDN用了这么久,一直是学习别人的博客,我也要开始自己的博客记录啦,日常学习笔记,知识点整理—come on!!!!!!!
2020-07-18 19:35:59 127
C、C++笔试面试宝典.pdf
2020-08-13
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人