- 博客(34)
- 资源 (21)
- 收藏
- 关注
原创 STM32 ADS8365 高精度 ADC 采集方案
硬件原理图(实际上可以6路输入,这里4路)数据手册中关键点数据手册在这里下载https://www.alldatasheetcn.com/ADS8365.c/****************************************----------------------------- * | PB.12: (ADS8365_nEOC) PA9 ...
2020-04-26 23:31:44 2616 4
原创 STM32 LCD12864 原理和实现代码
硬件原理图LCD12864.c你主要看每个功能函数是如何实现的/**************************************** * 按照自己的硬件电路图来设置 * -------------------------- * | PB.09: (LCD_BLK) | * | PC.06: (LCD_RST) ...
2020-04-26 14:09:47 1443 3
原创 STM32之GPIO的CRL、CRH、IDR、ODR、BSRR、BRR、LCKR寄存器
STM32中控制GPIO状态的一共有7个寄存器,分别是CRL、CRH、IDR、ODR、BSRR、BRR、LCKR。调用即可看到选项
2020-04-25 22:32:16 7681
转载 STM32 GPIO 配置之ODR, BSRR, BRR 详解
用stm32 的配置GPIO 来控制LED 显示状态,可用ODR,BSRR,BRR 直接来控制引脚输出状态.ODR寄存器可读可写:既能控制管脚为高电平,也能控制管脚为低电平。管脚对于位写1 gpio 管脚为高电平,写 0 为低电平BSRR 只写寄存器:[color=Red]既能控制管脚为高电平,也能控制管脚为低电平。对寄存器高 16bit 写1 对应管脚为低电平,对寄存器低16bit写1对应管...
2020-04-25 22:15:39 2682
原创 STM32的GPIO八种工作模式
typedef enum { GPIO_Mode_AIN // 模拟输入 GPIO_Mode_IN_FLOATING // 浮空输入 GPIO_Mode_IPD // 下拉输入 GPIO_Mode_IPU // 上拉输入 GPIO_Mode_Out_OD // 开漏输出 GPIO_Mode_Out_PP // 推挽输出 GPIO_Mode_AF_OD // 复用开漏...
2020-04-25 20:39:59 887
原创 CODEIF_变量取名
网址https://unbug.github.io/codelf/大部分开发者都或多或少遇到过变量命名的烦恼,如果命名不规范,不仅会影响开发的效率,而且对后面维护的同学来说也是一个不小的挑战,因为他要去揣摩你这个变量的含义。“计算机科学里两件最难的事:缓存失效和命名。” Codelf通过搜索在线开源平台Github, Bitbucket, Google Code, Codeplex, Sou...
2020-04-22 15:26:36 32296
原创 约瑟夫问题、约瑟夫环
约瑟夫问题(有时也称为约瑟夫斯置换,是一个出现在计算机科学和数学中的问题。在计算机编程的算法中,类似问题又称为约瑟夫环。又称“丢手绢问题”.)问题来历据说著名犹太历史学家 Josephus有过以下的故事:在罗马人占领乔塔帕特后,39 个犹太人与Josephus及他的朋友躲到一个洞中,39个犹太人决定宁愿死也不要被敌人抓到,于是决定了一个自杀方式,41个人排成一个圆圈,由第1个人开始报数,每报数...
2020-04-21 17:13:55 305
原创 PID控制的原理以及C代码实现
数字式 PID 控制算法可以分为位置式 PID 和增量式 PID 控制算法(常用)位置式 PID 算法:由于计算机控制是一种采样控制,它只能根据采样时刻的偏差计算控制量,而不能像模拟控制那样连续输出控制量量,进行连续控制。增量式 PID 算法:所谓增量式 PID 是指数字控制器的输出只是控制量的增量 ∆uk 。当执行机构需要的控制量是增量,而不是位置量的绝对数值时,可以使用增量式 PID 控制...
2020-04-21 13:04:21 1157 1
原创 写中断程序要注意哪些方面
与每类I/O设备相关的进程都有一个靠近内存底部的地址,称作中断向量。 它包括中断服务程序的入口地址。当中央处理器正在处理内部数据时,外界发生了紧急情况,要求CPU暂停当前的工作转去处理这个紧急事件。处理完毕后,再回到原来被中断的地址,继续原来的工作,这样的过程称为中断。实现这一功能的部件称为中断系统,申请CPU中断的请求源称为中断源,单片机的中断系统一般允许多个中断源,当多个中断源同时向CPU请...
2020-04-21 10:13:34 4239
原创 精选嵌入式软件开发面试笔试题
/************************Chapter1 语法类***********************/1 .volatile作用?应用场合举3例volatile修饰的变量表示这个变量可能会被意想不到的改变,对该变量的操作将不作优化,用到该变量时都从这个变量的原始地址读取,而不是用保存在寄存器里的备份。Volatile常用在:1). 硬件寄存器(如:状态寄存器)。...
2020-04-17 16:47:27 737
原创 UART、USART、IIC、SPI
UART与USART都是单片机上的串口通信,他们之间的区别如下:首先从名字上看:UART:universal asynchronous receiver and transmitter通用异步收/发器[Bus Signal] TX , RXUSART:universal synchronous asynchronous receiver and transmitter通用同步/异步收/发...
2020-04-15 11:27:25 907 1
原创 C++中setw()函数
setw(n)给后面的值赋予n个位置。setw(n)如果n是大于你后面紧跟的那个的字符串个数的时候,就在前面补空格。如果n是小于那个字符个数,就按照默认的输出。主要作用是设置对齐方式举例#include <iostream>using namespace std; #include <iomanip>using std::setw; int main (...
2020-04-14 16:11:49 562
原创 C++中的局部变量和全局变量细微之处
1、在程序中,局部变量和全局变量的名称可以相同,但是在函数内,局部变量的值会覆盖全局变量的值。2、当局部变量被定义时,系统不会对其初始化,您必须自行对其初始化。定义全局变量时,系统会自动初始化为下列值:...
2020-04-11 20:38:37 234
原创 C/C++中函数声明
必须先声明再使用这样是合法的:void f(){ //程序 } int main(){ f();}void f();int main(){ f();}void f(){ }这样就是非法的int main(){ f();}void f(){ }"函数定义...
2020-04-11 14:05:04 1576
原创 C++中cout后面输出时加endl和不加endl的区别
endl就是end line的意思,也就是“结束此行”,实际上有两个操作1 换行2 对缓冲流进行冲刷,使得流中所有剩余字符被写入输出序列。其实作用说白了就是加<<endl后会有一个换行。下次再用cout输出字符时就会在下一行开始输出,如果不加,就会跟在当前行的最后输出。...
2020-04-10 23:32:30 4903
原创 用C语言实现大小端的判断
联合体方法#include<stdio.h>int main(){ union w { int a; char b; }c; c.a = 1; if(c.b == 1) printf("小端存储\n"); else printf("大端存储\n"); return 0; }结果指针方法#include <...
2020-04-10 18:35:50 257 1
原创 C语言_多个文件共用一个变量_关键字extern的应用
main.c//第一个文件main.c#include <stdio.h>extern int a; //全局变量声明 int main(){ printf("%d\n",a+1);}two.c//另一个文件sub.cint a=3; //变量定义
2020-04-10 13:54:09 562
原创 C语言的关键字
c的关键字共32个数据类型关键字(12)char,short,int,long,float,double,unsigned,signed,union,enum,void,struct控制语句关键字(12)if,else,switch,case,default,for,do,while,break,continue,goto,return存储类关键字(5)auto,extern,regi...
2020-04-08 15:42:27 133
转载 死锁是什么,死锁的原因有哪些?死锁的四个必要条件是什么?如何解开死锁?
死锁: 指多个进程在运行过程中因争夺资源而造成的一种僵局,当进程处于这种僵持状态时,若无外力作用,它们都将无法再向前推进。死锁的原因有两个:a. 竞争资源系统中的资源可以分为两类:(1)可剥夺资源,是指某进程在获得这类资源后,该资源可以再被其他进程或系统剥夺,CPU和主存均属于可剥夺性资源;(2)不可剥夺资源,当系统把这类资源分配给某进程后,再不能强行收回,只能在进程用完后自行释放,如...
2020-04-08 15:34:47 576
原创 volatile关键字
一个是防止变量在其它地方被改变,而cash里没有改变,所以要求每次都要读取内存。一个是防止编译器优化,编译器感觉你这个变量不会有变化,但是实际在其它线程或硬件会改变它,所以要每次从内存读,你编译器就不要优化。volatile大体两个作用:1防止编译器优化,编译器判断你的变量在某一段内没有变化。2.你别的地方,如中断,其它线程,并行的硬件把变量改了,比如从0加到1,但是我不知道,我读出来的还...
2020-04-08 15:28:53 150
原创 static关键字
在C语言中,static有下3个作用:函数体内的static变量的作用范围为该函数体,不同于auto变量,该变量的内存只被分配一次,以为其值在下次调用时仍维持上次的值(该变量存放在静态变量区);在模块内static全局变量可以被模块内所有函数访问,但不能被模块外其他函数访问。(注意,只有在定义了变量后才能使用。如果变量定义在使用之后,要用extern 声明。所以,一般全部变量都会在文件的最开始...
2020-04-08 15:25:27 191
原创 memcpy()函数
定义void * memcpy ( void * destination, const void * source, size_t num );将source指向的地址处的 num 个字节 拷贝到 destination 指向的地址处。注意,是字节。题目int main() { int a[10] = { 0,1,2,3,4,5,6,7,8,9 }; memcpy(a + 3, a,...
2020-04-08 15:20:38 2476
原创 整数自动转换原则
void foo(void){ unsigned int a = 6; int b = -20; (a+b > 6) ? puts("> 6") : puts("<= 6");}这无符号整型问题的答案是输出是 “>6”。原因是当表达式中存在有符号类型和无符号类型时所有的操作数都自动转换为无符号类型。因此-20变成了一个非常大的正整数,所以该表...
2020-04-08 13:09:23 293
原创 printf()重入和性能上的问题
这个概念在嵌入式操作系统中比较重要,由于存在任务的调度,它实时系统,可剥夺型内核中是危险的,如同一个安静的水雷。可能会被触发,也可能安然无恙。由于它运行结果的不可预期性,会使系统带来隐患。printf()经常有重入解释:不可重入函数不可以在它还没有返回就再次被调用。例如printf,malloc,free等都是不可重入函数。因为中断可能在任何时候发生,例如在printf执行过程中,因此不能在中...
2020-04-08 13:07:22 652
原创 strcat、strcpy、strcmp、strlwr、strupr的C语言实现以及简单用法
strcat 字符串的嫁接(连接)#include "stdio.h" char *strcat(char *str1, char *str2){ if((str1==NULL)||(str2==NULL)) throw "Invalide arguments!"; char *pt = str1; while(*str1!='\0') str1++; while(*str2!='...
2020-04-07 18:53:15 824
转载 C++中结构体与类的区别(struct与class的区别)
C++中的struct对C中的struct进行了扩充,它已经不再只是一个包含不同数据类型的数据结构了,它已经获取了太多的功能。struct能包含成员函数吗? 能!struct能继承吗? 能!!struct能实现多态吗? 能!!!既然这些它都能实现,那它和class还能有什么区别?最本质的一个区别就是默认的访问控制:默认的继承访问权限struct是public的,class是priva...
2020-04-07 18:14:34 310
原创 #define宏的边际效应
在C语言和C++中,#define宏进行的字符替换中,要注意边际效应:#define N 2+3我们预想的N值是5,我们这样使用N,int a = N/2; //我们预想的a的值是2.5,可实际上a的值是3.5原因在于在预处理阶段,编译器将 a = N/2处理成了 a = 2+3/2;这就是宏定义的字符串替换的“边缘效应”因此要如下定义:#define N (2+3)边际效应要用括号去完善...
2020-04-06 10:19:13 913
原创 C++中public、protected及private用法
1.类的一个特征就是封装,public和private作用就是实现这一目的。所以:用户代码(类外)可以访问public成员而不能访问private成员;private成员只能由类成员(类内)和友元访问。2.类的另一个特征就是继承,protected的作用就是实现这一目的。所以:protected成员可以被派生类对象访问,不能被用户代码(类外)访问。三种访问权限public:可以被任意实体...
2020-04-06 09:59:27 444
原创 迷途指针
编程中一种很难发现的错误是迷途指针。迷途指针也叫悬浮指针、失控指针,是当对一个指针进行delete操作后——这样会释放它所指向的内存——并没有把它设置为空时产生的。而后,如果你没有重新赋值就试图再次使用该指针,引起的结果是不可预料的。如果程序崩溃算都算走运了。这就如同一家水果公司搬家了,但你使用的仍然是它原来的电话号码。这可能不会导致什么严重的后果——也许这个电话号码是放在一个无人居住的房子...
2020-04-05 09:50:59 212
原创 函数指针和指针函数
指针函数定义指针函数,简单的来说,就是一个返回指针的函数,其本质是一个函数,而该函数的返回值是一个指针。声明格式为:*类型标识符 函数名(参数表)看看下面这个函数声明:int fun(int x,int y);这种函数应该都很熟悉,其实就是一个函数,然后返回值是一个 int 类型,是一个数值。接着看下面这个函数声明:int *fun(int x,int y);这和上面那个函数...
2020-04-03 20:50:21 133
原创 写一个宏定义不用大于号小于号和if,判断正整数a,b的大小
写一个宏定义,不用<,>号和?号,判断正整数a,b的大小解答三元运算符define max(a,b) (((long)(a-b)) & 0x80000000)?b:a0x80000000 的二进制是:1000 0000 0000 0000 0000 0000 0000 0000(第一位是符号位,所以此数是负数)如果a-b是正数,那根据二进制数的表示, 分为符...
2020-04-03 20:24:28 1433 3
OV12870-Product-Specification-COB_Version-2-0_CEAC.PDF
2020-09-13
P24C64E appilcation note V1.1.pdf
2020-06-29
P24C64E_DataSheet_Rev.1.2_EN_客户.PDF
2020-06-29
Hi3559V200 4K Mobile Camera SoC 用户指南1.pdf
2020-06-28
Source Inight配置文件.zip
2020-06-08
DSP数字信号处理实验箱(TMS320F2812资料)(LED、LCD、ADC、UART实验程序OK).rar
2019-10-17
Understand 5.0.960 translations&注册机.rar
2019-09-11
Understand-5.0.960-Windows-64bit.exe
2019-09-11
岗位说明书-190124最新版(2).xlsx
2019-07-18
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人