自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(54)
  • 资源 (4)
  • 问答 (2)
  • 收藏
  • 关注

原创 KEIL4与KEIL5护眼配色方案

https://download.csdn.net/download/u012780337/19714860?spm=1001.2014.3001.5501

2021-06-18 16:02:22 1179

原创 i++与i + 1

#include <stdio.h>int main(void){ char i, j, num, a, b; i = 21; j = 0; a = 0; b = 0; for (num = 0; num < 5; num++) { //i++;先取i 本身的值,再进行求余运算; 再自加,最后赋值;把i % 10的结果赋给i;所以i 一直为0; //单行语句用i++; 表达式用i + 1或者++i; i = (i++) % 10; print.

2020-12-21 22:22:00 628

原创 关于类型强制转换

#include <stdio.h>int main(void){ unsigned int i = 0x2345; unsigned char j, t; j = (unsigned char)i & 0x00FF; t = (unsigned char)i >> 8; printf("j = %x\n\r",j); printf("t = %x\n\r",t);}#include <stdio.h>int main(void.

2020-12-06 23:30:27 438

原创 C语言简单的面试题

#include <stdio.h>int main(void){ unsigned char p = 0; p++; printf("p = %d\r\n",p); if (++p > 1) { printf("p = %d\r\n",p); p = 1; } p = (p == 1)?(1):(0); printf("p = %d\r\n",p); unsigned char P;.

2020-06-11 21:30:30 249

原创 程序计数器(PC ) 详解

冯 ·诺伊曼计算机体系结构的主要内容之一就是“程序预存储,计算机自动执行”!处理器要执行的程序(指令序列)都是以二进制代码序列方式预存储在计算机的存储器中,处理器将这些代码逐条地取到处理器中再译码、执行,以完成整个程序的执行。为了保证程序能够连续地执行下去,CPU必须具有某些手段来确定下一条取指指令的地址。程序计数器(PC )正是起到这种作用,所以通常又...

2020-04-06 12:57:17 29404 3

转载 STM32HAL库中串口函数

中断模式1.中断接收。1.1先看中断接收的流程(以 USART2 为例)在启动文件中找到中断向量USART2_IRQHandler找到USART2_IRQHandler的函数定义可以看到这里又转到另一个函数里去了,再找下去:该函数的源码:/** * @brief This function handles UART interrupt...

2019-12-22 13:46:17 4844 1

转载 C语言指针难吗?纸老虎而已,纯干货讲解

https://mp.weixin.qq.com/s/VDR92wgSw7Lw-VvVijnN6g

2019-12-09 22:55:03 320

原创 关于C语言中不允许在函数外部给全局变量赋值

#include <stdio.h>typedef struct { int r; int t; char y; }Tyep_T; Tyep_T tyep; Tyep_T *ptyep ; /* Tyep_T *ptyep (int a);这种操作属于声明部分不应称为语句,因为它不产生机器操...

2019-11-25 22:18:59 2502

原创 为什么一定要对局部变量初始化,希望大家都避免这个错误!

#include <stdio.h>void fun(int a);int main(void){ fun(5); fun(6); fun(7);}void fun(int a){ /*局部变量一定要初始化;因为单片机(系统)每次为它分配的是同一个内存区域, 第一次调用fun()时,a = 5,那么flag = 0x01,此时...

2019-10-14 22:13:43 1017 1

转载 HAL库UART按DMA方式发送和接收函数简析及测试

个人感觉,做嵌入式,底层就是datasheet,顶层就是数理逻辑。不管什么芯片,当我们遇到问题时,通过查阅datasheet或上官网基本上都能找到解决方法。然而,这些基本都是英文。所以,英文好对做研发是有很大益处的。不过好在有翻译工具,如:有道(我就是用有道划的):C语言虽然没有class,但有struct。我们可以多用struct。ST库和ucos中就包含许多struct。程序结构多用状态...

2019-09-08 22:17:39 16749 7

翻译 关于IIC与SPI这两种通讯协议的详解

IIC vs SPI现今,在低端数字通信应用领域,我们随处可见IIC (Inter-Integrated Circuit) 和 SPI (Serial Peripheral Interface)的身影。原因是这两种通信协议非常适合近距离低速芯片间通信。Philips(for IIC)和Motorola(for SPI) 出于不同背景和市场需求制定了这两种标准通信协议。IIC 开发于1982年,当时...

2019-08-27 15:41:42 756

原创 简单函数指针实例

#include <stdio.h>/*简单函数指针实例*/void func1(void){ printf("I am func1.\n");}int main(void){ void (*pFunc1)(); pFunc1 = func1; /*直接引用函数指针名*/ pFunc1();}...

2019-08-04 12:29:33 141

原创 简单程序控制块概念说明

/*简单程序控制块概念说明*/#include <stdio.h>#include <string.h>typedef struct tcb{ char *code_name; int p; int v_num; void (*fun)(void);}TCB;/*功能函数1*/void function_1(void){...

2019-08-04 12:19:09 658

转载 if语句、if...else if语句和switch...case语句的区别和分析

if语句、if else if语句和switch case语句都属于流程控制语句。  在只需要判断一个条件的时候,自然是使用if语句方便有效;但是当判断条件很多的时候,我们可以使用多个if语句或者if...else if语句或者switch case语句。 对于这三者的选择,下面将做一些具体分析;对于后两者的选择,又将涉及到程序执行效率的问题。  if...else if语...

2019-07-10 11:19:13 1582

原创 指针简单应用

#include <stdio.h>typedef struct{ int start; int addr1; int data1; int addr2; float data2; int addr3; float data3; int checknum1; int checknum2; int end;} frame_t;frame_t Frame;...

2019-07-01 11:04:47 137

转载 NRF24L01一对多通信方法程序详解

声明:看本文之前,请确保你可以用NRF24L01进行双向通信,否则看了也白看。如果你还搞不通2个NRF24L01之间的通信,请看瑞生写的这两篇文章《新手如何快速搞通NRF24L01通信》和《NRF24L01中文资料_原理_程序详解》。搞通了2个NRF24L01的互相通信,一对多实际上就非常容易了。你要记住,一对多通信,实际上同一时刻也是一对一通信。一次通信只需几个毫秒,如果一个和一个通信完...

2019-05-28 14:26:52 5217 1

原创 C#中, for与 foreach遍历数组元素的区别

using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;namespace Params_Array{ class Program { static void Main...

2019-02-20 20:38:25 700

原创 if的非零逻辑判断注意事项

if的非零逻辑判断注意事项

2019-02-15 15:30:46 1409

转载 C#图形界面简单入门(WinForm )

1、使用Visual Studio 2013创建新项目2、创建一个主窗体和4个子窗体3、创建一个数据库、一个表、一个存储过程4、在配置文件里添加数据库连接字符串5、真正的编码工作。第一步:创建新项目,一张图片抵一万字!第二步:创建4个子窗体,名称分别是formCommandProc.cs、formDataAdapterProc.cs、formXMLCreate.cs、f...

2019-01-01 11:13:50 32893 6

原创 C#中Application.EnableVisualStyles()与 Application.SetCompatibleTextRenderingDefault()的作用

 1、publicstaticvoidEnableVisualStyles():此方法为应用程序启用可视样式。如果控件和操作系统支持视觉样式,则控件将以视觉样式进行绘制。若要使EnableVisualStyles生效,必须在应用程序中创建任何控件之前调用它;EnableVisualStyles 通常是 Main 函数的第一行。当调用 EnableVisualStyles时,无需单独的清单...

2018-12-31 11:10:19 4882 1

原创 初学者,应该注意的循环(这是一个无限循环)

#include &lt;stdio.h&gt;int main(){ unsigned int a = 10; unsigned int b = 3; while(a) { printf("a=%u\n\r",a); a = a - b; }}在计算机内部,负数是用补码(原码取反加1)表示的!程序中最后会出现...

2018-09-06 11:24:56 683

原创 字符串指针与字符数组

#include <stdio.h>int main(void){ char *p = "abcdefg"; //用字符指针时,字符串存于常量区 P存储的是字符串的首地址; char a[] = "abcdefg"; //因为char a[] 是在栈中建立的,编译器会为此开辟内存空间,

2017-08-30 17:56:27 303

原创 关于STM32标准外设库中的 USE_STDPERIPH_DRIVER, STM32F10X_MD

在用STM32开发项目中使用stm32标准外设库(STM32F10x Standard Peripherals Library)的时候,我们会在项目的选项(C/C++)中预定义两个宏定义:USE_STDPERIPH_DRIVER, STM32F10X_MD 1、 USE_STDPERIPH_DRIVER : to use or not the peripheral’s drivers in a

2017-08-17 21:16:29 600 2

转载 #define 宏名带参数

C语言允许宏带有参数。在宏定义中的参数称为形式参数,在宏调用中的参数称为实际参数,这点和函数有些类似。对带参数的宏,在调用中,不仅要宏展开,而且要用实参去代换形参。带参宏定义的一般形式为:define 宏名(形参列表) 字符串在字符串中含有各个形参。带参宏调用的一般形式为: 宏名(实参列表); 例如:define M(y) y*y+3*y //宏定义// Code k=M(5); //宏调

2017-02-24 11:15:26 3835

翻译 浅谈关于SRAM与DRAM的区别

在上体系结构这门课之前,我只知道DRAM用作内存比较多,SRAM用作cache比较多。在今天讲到内存技术时,我对于这两个基础概念有了更加完整的认识。这篇文章是我的听课心得,现在分享给各位,仅供参考,若有错误多多指正。  从名字上看,SRAM与DRAM的区别只在于一个是静态一个是动态。由于SRAM不需要刷新电路就能够保存数据,所以具有静止存取数据的作用。而DRAM则需要不停地刷新电路,否则内部的数据将

2017-01-08 17:45:12 3097

原创 关于Const及强制转换

一个简单实例

2017-01-01 17:26:57 1833

原创 关于C语言中的Sizeof()运算符

Sizeof()运算符 简介:使用方法与虽然与函数很像,但是它是C语言中的一个运算符! 作用:用于计算()中变量或者数据类型所占用的内存字节数。

2017-01-01 11:43:01 598

原创 C51LCD1602

/************************************** LCD1602上用两行显示两个字符串 *************************************/#include <reg52.h>#define uchar unsigned char#define LCD1602 P0sbit RS = P2^4;sbit RW = P2^5;sbit

2016-09-25 21:20:24 494

原创 #ifndef#define#endif的用法

ifndef#define#endif的用法头件的中的#ifndef,这是一个很关键的东西。比如你有两个C文件,这两个C文件都include了同一个头文件。而编译时,这两个C文件要一同编译成一个可运行文件,于是问题来了,大量的声明冲突。 还是把头文件的内容都放在#ifndef和#endif中吧。不管你的头文件会不会被多个文件引用,你都要加上这个。一般格式是这样的: ifndef <标识>define

2016-09-17 11:54:21 2384

原创 欢迎大神们来挑刺(关于C51串口通信)

/******************************* MCU通过串口向电脑发送一串字符串 *******************************/#include #define uchar unsigned char#define uint unsigned intbit g_TranEnd = 1; //发送完毕标志void Init

2016-09-04 11:52:20 368

转载 关于子网掩码

定义:子网掩码(subnet mask)又叫网络掩码、地址掩码、子网络遮罩,它是一种用来指明一个IP地址的哪些位标识的是主机所在的子网,以及哪些位标识的是主机的位掩码。子网掩码不能单独存在,它必须结合IP地址一起使用。子网掩码只有一个作用,就是将某个IP地址划分成网络地址和主机地址两部分。子网掩码是一个32位地址,用于屏蔽IP地址的一部分以区别网络标识和主机标识,并说明该IP地址是在局域网上,还是在

2016-09-02 08:32:22 385

原创 初学串口通信,有不足之处,还望大师们指正,辛苦了!

/*********************************** 电脑向MCU发一串字符后,原样返还电脑************************************/#include <reg52.h>#define uchar unsigned charbit g_NewRec = 0; //接收到数据标志bi

2016-09-01 22:27:59 647

原创 简单的串口通信

/********************************** MCU接收到电脑发来的数据加1返回电脑 **********************************/#include <reg52.h>void InitUart(); //串口通信初始化函数声明void main(){ InitUart(); while (

2016-09-01 14:56:16 449

原创 关于计算机与MCU通信及MAX232、CH340T与PL2303的区别

原理:单片机的TXD、RXD是TTL电平,所以你得万变不离其宗的将其它信号转成TTL电平,只有这样给单片机下载程序才有可能成功!其中CH340、PL2303等芯片是直接将USB信号转换为TTL电平或者TTL电平转换为USB信号,而MAX232等芯片是将TTL转换为RS232信号或者将RS232信号转换为TTL.MAX232:外围电路简单,但是占用pcb面积大,不美观 PL2303:水货多不稳定,外

2016-08-27 21:37:20 12981

原创 C#基本程序结构

这是一个基本程序结构!

2016-08-20 23:38:29 422

原创 C51中4X4键盘扫描(非反转法)

#include <reg52.h>#define uchar unsigned char#define uint unsigned intuchar KEYIN;void DelayMs(uint ms); //延时函数声明;uchar KeyPress(void); //按键按下检测函数声明;uchar KeyScan(vo

2016-08-09 07:55:01 648

原创 简单的使用定时器实现按键消抖,写得不好,望大家给指点一二。多谢了。

/******************************** 按独立按键使数码管加1********************************/ #include <reg52.h> #define uchar unsigned char sbit KEY = P1 ^ 0; //定义独立按键

2016-08-05 07:18:20 9229 1

原创 简单的独立按键控制继电器

/*************************** 独立按键控制继电器***************************/#include <reg52.h>#define uchar unsigned charsbit KEY = P1 ^ 0;sbit RelayEN = P0 ^ 0; //定义继电器开启信号void Timer0Init

2016-07-31 21:05:53 2021

原创 关于C51的IE(中断使能寄存器)的初级认识

对于C51中的IE的初级认识

2016-07-28 22:21:52 5897

原创 简单利用C51的Timer0实现倒计时(F-0)

/****************************用Timer0实现简单的1S倒计时*****************************/#include <reg52.h>#define uchar unsigned charvoid Timer0Init(); //定时器0初始化函数声明void SecProcess(); //倒计时处理函数声明v

2016-07-21 07:53:09 4721 2

KEIL完美配色方案.rar

自己编写代码用的keil配色,暗黑色主题

2021-06-18

超声定位系统说明.doc

超声定位系统主要包含两大部分,即被定位目标系统和定位辅助系统。被定位目标系统是指该系统所在位置需要通过超声定位系统被准确定位的系统。定位辅助系统是指为了获得被定位目标的准确位置坐标,而进行辅助测量的系统。

2020-04-17

SCM-6200 Technical Manual

SCM-6200 Technical Manual

2016-04-08

行列反转扫描法

行列反转扫描法在矩阵键盘中的应用及编程思想

2013-11-09

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

TA关注的人

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