自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 三周从STM32入门linux学习笔记

u-boot编译步骤:解压缩 tar -xjf u-boot-1.1.6.tar.bz2打补丁 patch -p1 < ../u-boot-1.1.6_jz2440.patch配置 make 100ask24x0_config编译 make

2021-05-04 13:23:48 272

原创 Makefile函数

foreach:$(foreach var,list,text)例子:A = a b cB = $(foreach f, $(A), $(f).o)all:@echo B = $(B)执行结果:filter: #在text中取出附和patten格式的值fileter-out:#在text中取出不符合patten格式的值$(filter pattern…,text)$(filter-out pattern…,text)例子:A = a b cB = $(foreach f, $.

2021-04-05 12:14:47 173

原创 Makefile基本规则

make [目标]若没有目标,默认第一个目标1.通配符:$@ 表示目标$< 表示第一个依赖文件$^ 表示所有依赖文件2.假想目标:.PHONY: 不会被文件影响3.及时变量、延时变量、export简单变量(及时变量):...

2021-04-05 11:29:56 144

原创 gcc常用选项

编译过程:预处理、编译、汇编、连接-v:查看gcc编译器的版本,显示gcc执行时的详细过程gcc -v:查看gcc编译器的版本-E:只预处理,不会编译、汇编、链接gcc -E -o hello.i hello.c-S:只编译,不会汇编、链接gcc -S -o hello.s hello.i-c:编译和汇编,不会连接gcc -c -o hello.o hello.c-o:连接gcc -o hello hello.o后缀名语言种类后期操作.c

2021-04-04 19:57:07 301

原创 一点基本的汇编指令

1.LDR(load):读内存命令LDR r0, [r1] //假设r1的值是x,读取地址x上的数据(四个字节),保存到r0中2.STR(store):写内存命令STR r0, [r1] //假设r1的值是x,把r0的值写到地址x(四个字节)上3.B:跳转4.MOV:移动MOV r0, r1 //吧r1的值赋给r05.LDR(伪指令,他会被拆分为几条真正的RAM指令)LDR r0, =0x12345678 //r0 = 0x123456786.add、sub:add r0, r

2021-04-04 16:44:16 134

原创 STM32 DMA配置过程库函数操作

DMA全称Direct Memory Access(直接存储器访问)。主要功能就是将一个地址空间复制到另一个地址空间,作用就是为CPU减负DMA配置过程1.使能DMA时钟2.初始化DMA通道参数3.使能串口DMA发送,串口DMA使能函数4.使能DMA1通道,启动传输5.查询DMA传输状态6.获取/设置通道当前剩余数据量//DMA_CHx:DMA通道CHx//cpar:外设地址//cmar:存储器地址//cndtr:数据传输量void MYDMA_Config(DMA_Channel_

2021-03-30 18:41:40 1227

原创 STM32 ADC转换库函数操作

初始化ADC步骤:1.使能GPIOA、ADC1时钟2.配置ADCCLK时钟6分频或者8分频3.初始化GOIOA4.初始化ADC15.使能ADC16.使能复位校准、开启AD校准获取ADC转换结果:1.配置规则通道2.使能指定的ADC1的软件启动功能3.等待转换结束4.返回ADC1转换获取的结果adc.c:#include "adc.h"#include "delay.h"//ADC初始化void Adc_Init(void){ GPIO_InitTypeDef GPIO_

2021-01-30 13:08:04 1073

原创 Python列表简单介绍及简单应用(三)

列表推导式ord函数将字符转换为ASCALL码提取二层列表中的第二个值提取对角线的值二层列表用列表推导式创建列表推导式可在后面加if条件语句。列表推导式先执行for语句再执行if语句再执行前面的...

2021-01-26 14:59:32 70

原创 Python列表简单介绍及简单应用(二)

二维列表下图两个存储方式不同,第一个方法可行,第二个方法不可行具体存储方式:深拷贝

2021-01-25 22:18:39 88

原创 Python列表简单介绍及简单运用(一)

创建列表arr = [1, 2, 3, 4, 5]切片:列表的增删改查只能删除找到的第一个元素,如果不存在则会报错删除下标为2的元素删除所有元素替换多个元素查找有多少个3或4查找绿巨人的索引值把绿巨人替换成神奇女侠从第三个位置开始找到第九个位置,返回找到4的位置...

2021-01-25 21:44:05 74

原创 STM32通用定时器输入捕获库函数操作

配置定时器void TIM_Cap_Init(u16 arr, u16 psc){ GPIO_InitTypeDef GPIO_InitStrue;//初始化GPIO结构体 TIM_TimeBaseInitTypeDef TIM_TimeBaseInitStrue;//初始化TIM结构体 TIM_ICInitTypeDef TIM_ICInitStrue;//初始化输入捕获结构体 NVIC_InitTypeDef NVIC_InitStrue;//初始化NVIC分组结构体 RCC_APB1

2021-01-24 17:44:44 308

原创 STM32通用定时器PWM库函数操作

GPIO_InitTypeDef GPIO_InitStrue;//GPIO初始化结构体 TIM_TimeBaseInitTypeDef TIM_TimeBaseInitSture;//定时器初始化结构体 TIM_OCInitTypeDef TIM_OCInitStrue;//PWM初始化结构体 RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_TIM1, ENABLE);//使能GPIOA、TIM1时钟 GPIO_In

2021-01-24 11:50:39 267

原创 STM32通用定时器库函数操作

void TIM3_Int_Init(u16 arr, u16 psc){ TIM_TimeBaseInitTypeDef TIM_TimeBaseInitSture;//定时器初始化结构体 NVIC_InitTypeDef NVIC_InitStrue;//中断优先级设置结构体 RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE);//初始化时钟 TIM_TimeBaseInitSture.TIM_Prescaler = psc;//预分

2021-01-23 16:06:08 890

原创 java匿名内部类

匿名内部类特点:匿名内部类是没有名称的内部类,没办法引用它们。必须在创建时,作为new语句的一部分来声明并创建他们的实例匿名内部类不许继承一个类或者实现一个接口,所有父类是抽象类,则匿名内部类必须实现其所有抽象方法abstract class Demo1{ abstract void printInfo();}interface Demo2{ abstract void interprint();}public class Test { public static void mai

2021-01-18 17:55:17 66

原创 java内部类

内部类:将一个类定义在另一个类的内部,这个类称之为内部类public class Outer{ class Inner{ }}内部类的主要特点:内部类可以很好的实现隐藏,可以使用protected private修饰符内部类可以直接访问外部类的所有成员,包括私有成员外部类不能直接访问内部类的成员,必须首先建立内部类的对象才能访问成员内部类:成员内部类属于外部类的实例成员,成员内部类可以有public private default protected权限修饰符。在成员内部类中访问外部

2021-01-18 17:46:01 70

原创 java接口

接口语法:interface 接口名{ //共有静态常量、抽象方法}接口特点:接口中只能存放静态常量和抽象方法java接口是对功能的拓展通过实现接口,java类可以实现多实现一个类可以同时继承一个父类并且实现多个接口接口与接口之间可以使用extends实现继承接口与抽象类的区别:抽象类和具体实现之间是一个继承关系,也就是如果采用抽象类的方式,则父类盒子类在概念上应该是相同的接口和实现类在概念上不要求相同,接口知识抽取相互之间没有关系的类的共同特征,而不去关注类之间的关系,他可以是没

2021-01-18 17:13:05 80

原创 java抽象类

抽象类:java中可以定义没有方法体的方法,该方法有子类来具体实现该没有方法体的方法我们称之为抽象方法,含有抽象方法的类我们称之为抽象类抽象方法特点:只有方法头没有方法体抽象方法用abstract修饰抽象方法代表一种不确定的操作或行为抽象方法不能被调用抽象类特点:定义中含有抽象方法的类叫做抽象类抽象类用abstract修饰抽象类代表一种抽象的对象类型抽象类不能被实例化抽象类中可以有具体方法,可以没有抽象方法abstract class Demo1{ abstract pub

2021-01-18 16:52:16 63

原创 java方法重写

方法重写:方法重写指子类可以根据需要对从父类继承来的方法进行改写,是多态机制的前奏注意点:重写方法必须和被重写方法具有相同的方法名称、参数列表和返回值重写方法不能比重写方法有更严格的访问权限父类中的私有方法不能被重写在子类重写的方法中继续调用父类被重写的方法可以通过super.函数名获取class Person{ String name; private String address; public void printInfo() { System.out.println("

2021-01-18 16:07:13 107

原创 java方法重载

class Student{ private int age; String name; double score; Student(){ System.out.println("构造方法一被调用"); } Student(int newage, String newname){ System.out.println("构造方法二被调用"); age = newage; name = newname; } Student(int newage, String n.

2021-01-18 15:48:39 71

原创 java构造方法

构造方法负责对象初始化工作,为对象的属性复合式的初始值语法规则:构造方法名与类名一致没有返回类型构造方法调用实例化对象时自动被调用class Student{ private int age; String name; double score; Student(int newage, String newname, double newscore){//构造方法 System.out.println("构造方法被调用"); age = newage; name = n

2021-01-18 15:43:46 70

原创 java继承之super关键字

class Person{ String name; String address; public Person(String name, String address) {//父类构造方法 this.name = name; this.address = address; System.out.println("父类构造方法被调用"); } public void eat() { System.out.println("人吃饭"); } public void drin.

2021-01-18 15:22:45 75

原创 STM32外部中断库函数操作

1.使能AFIO时钟RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE);2.中断线、中断初始化配置调用函数:void GPIO_EXTILineConfig(uint8_t GPIO_PortSource, uint8_t GPIO_PinSource)调用函数:void EXTI_Init(EXTI_InitTypeDef* EXTI_InitStruct)EXTI_InitTypeDef EXTI_InitStructure;GPIO

2021-01-01 14:54:04 1588

原创 STM32串口库函数操作

1.使能GPIOA与USART1RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1, ENABLE);2.初始化GPIOA的引脚9、10为串口调用函数:void GPIO_Init(GPIO_TypeDef* GPIOx, GPIO_InitTypeDef* GPIO_InitStruct)GPIO_InitTypeDef GPIO_Init1;G

2021-01-01 14:01:43 552 1

原创 STM32库函数按键操作

1.使能APB2对应时钟找到对应引脚使能IO口RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_GPIOC,ENABLE);关闭JTAG使能SWDGPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable, ENABLE);2.初始化IO口GPIO_InitStructure.GPIO_Pin = GPIO_Pin_15;//PA15GPIO_InitStructure.GPIO_

2021-01-01 13:42:47 375

原创 STM32库函数点灯操作

1.使能APB2时钟找到LED对应的IO口,使能对应的时钟调用函数:void RCC_APB2PeriphClockCmd(uint32_t RCC_APB2Periph, FunctionalState NewState)RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOD,ENABLE);2.初始化IO口调用函数:void GPIO_Init(GPI

2021-01-01 13:31:38 1042 1

原创 消息队列

文章目录一.主要流程1.ftok生成键值2.msgget创建消息队列3.msgsnd向队列里发送数据4.msgrcv向队列里读取消息5.msgctl删除消息队列二.函数用法及参数三.例子1.发送端2.接收端3.结果一.主要流程1.ftok生成键值2.msgget创建消息队列3.msgsnd向队列里发送数据4.msgrcv向队列里读取消息5.msgctl删除消息队列二.函数用法及参数1. key_t ftok(const char *pathname, int proj_id); 生成键值

2020-11-27 14:50:56 65

原创 管道通信

文章目录1.无名管道2.命名管道1.无名管道包含头文件#include <unistd.h>函数原型int pipe(int pipefd[2]);用法:创建无名管道,定义fd[2]fd[0]用来读fd[1]用来写例子:用fork创建进程,父进程写入要发送的字符串,子进程接受来自父进程的字符串int main(){ int fd[2]; int pid; char buf[128]; if(pipe(fd)

2020-11-26 16:15:48 217

原创 system(),popen()函数调用

文章目录1.system()2.popen()3.两个函数区别1.system()包含头文件:#include <stdlib.h>函数原型:int system(const char *command);作用:执行命令返回值:1.失败返回-12.当命令不能执行返回1273.命令执行成功返回进程状态值2.popen()包含头文件:#include <stdio.h>函数原型:FILE *popen(const char *command, cons

2020-11-26 14:54:01 266

原创 fork()函数调用方法

定义pidpid_t pid包含头文件#include <unistd.h>fork原型:pid_t fork(void);返回两个值,一个为0,另一个为非负数当返回值为0时进入子进程,返回值为非负数时进入父进程。例子如下:int main(){ char buff[100]; int child_pid; child_pid = fork(); if(child_pid == 0){

2020-11-26 13:24:27 265

原创 linux静态库、动态库的生成与使用

linux静态库、动态库的生成预创建1.静态库1.1 静态库的生成1.2 静态库的使用2.动态库2.1动态库的生成2.2动态库的使用1.静态库静态函数库,是在程序执行前(编译)就加入到目标程序中去了 ;优点: 运行快发布程序无需提供静态库,因为已经在app中,移植方便缺点:大1.1 静态库的生成格式xxxx.agcc calcufuncs.c -c 生成xxx.o文件ar rcs libcalcufunc.a calcufuncs.o xxx.o文件生成xxx.a静态库文件1.2 静

2020-11-17 17:19:47 67

空空如也

空空如也

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

TA关注的人

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