<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[u012780337的专栏]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/u012780337</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; u012780337]]></copyright><item><title><![CDATA[KEIL4与KEIL5护眼配色方案]]></title><link>https://blog.youkuaiyun.com/u012780337/article/details/118028252</link><guid>https://blog.youkuaiyun.com/u012780337/article/details/118028252</guid><author>u012780337</author><pubDate>Fri, 18 Jun 2021 16:02:22 +0800</pubDate><description><![CDATA[https://download.youkuaiyun.com/download/u012780337/19714860?spm=1001.2014.3001.5501
]]></description><category></category></item><item><title><![CDATA[i++与i + 1]]></title><link>https://blog.youkuaiyun.com/u012780337/article/details/111501394</link><guid>https://blog.youkuaiyun.com/u012780337/article/details/111501394</guid><author>u012780337</author><pubDate>Mon, 21 Dec 2020 22:22:00 +0800</pubDate><description><![CDATA[#include &lt;stdio.h&gt;

int main(void)
{
	char i, j, num, a, b;
	i = 21; 
	j = 0;
	a = 0;
	b = 0;
	for (num = 0; num &lt; 5; num++)
	{
		
		//i++;先取i 本身的值，再进行求余运算； 再自加，最后赋值；把i % 10的结果赋给i;所以i 一直为0；
		//单行语句用i++; 表达式用i + 1或者++i; 
		i = (i++) % 10;
		print.]]></description><category></category></item><item><title><![CDATA[关于类型强制转换]]></title><link>https://blog.youkuaiyun.com/u012780337/article/details/110789268</link><guid>https://blog.youkuaiyun.com/u012780337/article/details/110789268</guid><author>u012780337</author><pubDate>Sun, 06 Dec 2020 23:30:27 +0800</pubDate><description><![CDATA[#include &lt;stdio.h&gt;

int main(void)
{
	unsigned int i = 0x2345;
	unsigned char j, t;
	
	j = (unsigned char)i &amp; 0x00FF;
	t = (unsigned char)i &gt;&gt; 8;
	printf("j = %x\n\r",j);
	printf("t = %x\n\r",t);
}


#include &lt;stdio.h&gt;

int main(void.]]></description><category></category></item><item><title><![CDATA[C语言简单的面试题]]></title><link>https://blog.youkuaiyun.com/u012780337/article/details/106697440</link><guid>https://blog.youkuaiyun.com/u012780337/article/details/106697440</guid><author>u012780337</author><pubDate>Thu, 11 Jun 2020 21:30:30 +0800</pubDate><description><![CDATA[#include &lt;stdio.h&gt;

int main(void)
{
    unsigned char p = 0;
    p++;
    printf("p = %d\r\n",p);
    if (++p &gt; 1)
    {
        printf("p = %d\r\n",p);
        p = 1;
    }
    p = (p == 1)?(1):(0);
    printf("p = %d\r\n",p);
	unsigned char P;.]]></description><category></category></item><item><title><![CDATA[程序计数器（PC ） 详解]]></title><link>https://blog.youkuaiyun.com/u012780337/article/details/105342122</link><guid>https://blog.youkuaiyun.com/u012780337/article/details/105342122</guid><author>u012780337</author><pubDate>Mon, 06 Apr 2020 12:57:17 +0800</pubDate><description><![CDATA[冯 ·诺伊曼计算机体系结构的主要内容之一就是“程序预存储，计算机自动执行”！处理器要执行的程序（指令序列）都是以二进制代码序列方式预存储在计算机的存储器中，处理器将这些代码逐条地取到处理器中再译码、执行，以完成整个程序的执行。为了保证程序能够连续地执行下去，CPU必须具有某些手段来确定下一条取指指令的地址。程序计数器（PC ）正是起到这种作用，所以通常又...]]></description><category></category></item><item><title><![CDATA[STM32HAL库中串口函数]]></title><link>https://blog.youkuaiyun.com/u012780337/article/details/103652728</link><guid>https://blog.youkuaiyun.com/u012780337/article/details/103652728</guid><author>u012780337</author><pubDate>Sun, 22 Dec 2019 13:46:17 +0800</pubDate><description><![CDATA[中断模式

1.中断接收。

1.1先看中断接收的流程（以 USART2 为例）

在启动文件中找到中断向量



USART2_IRQHandler

找到USART2_IRQHandler的函数定义





可以看到这里又转到另一个函数里去了，再找下去：



该函数的源码：




/**
  * @brief  This function handles UART interrupt...]]></description><category></category></item><item><title><![CDATA[C语言指针难吗？纸老虎而已，纯干货讲解]]></title><link>https://blog.youkuaiyun.com/u012780337/article/details/103467053</link><guid>https://blog.youkuaiyun.com/u012780337/article/details/103467053</guid><author>u012780337</author><pubDate>Mon, 09 Dec 2019 22:55:03 +0800</pubDate><description><![CDATA[https://mp.weixin.qq.com/s/VDR92wgSw7Lw-VvVijnN6g
]]></description><category></category></item><item><title><![CDATA[关于C语言中不允许在函数外部给全局变量赋值]]></title><link>https://blog.youkuaiyun.com/u012780337/article/details/103247082</link><guid>https://blog.youkuaiyun.com/u012780337/article/details/103247082</guid><author>u012780337</author><pubDate>Mon, 25 Nov 2019 22:18:59 +0800</pubDate><description><![CDATA[#include &lt;stdio.h&gt;

typedef struct
    {
        int r;
        int t;
        char y;
    }Tyep_T;

    Tyep_T tyep;
    Tyep_T *ptyep ;
    /* Tyep_T *ptyep (int a);这种操作属于声明部分不应称为语句，因为它不产生机器操...]]></description><category></category></item><item><title><![CDATA[为什么一定要对局部变量初始化，希望大家都避免这个错误！]]></title><link>https://blog.youkuaiyun.com/u012780337/article/details/102557963</link><guid>https://blog.youkuaiyun.com/u012780337/article/details/102557963</guid><author>u012780337</author><pubDate>Mon, 14 Oct 2019 22:13:43 +0800</pubDate><description><![CDATA[#include &lt;stdio.h&gt;

void fun(int a);

int main(void)
{
    fun(5);
    fun(6);
    fun(7);
}

void fun(int a)
{
    /*局部变量一定要初始化；因为单片机（系统）每次为它分配的是同一个内存区域，
    第一次调用fun()时，a = 5,那么flag = 0x01,此时...]]></description><category></category></item><item><title><![CDATA[HAL库UART按DMA方式发送和接收函数简析及测试]]></title><link>https://blog.youkuaiyun.com/u012780337/article/details/100640423</link><guid>https://blog.youkuaiyun.com/u012780337/article/details/100640423</guid><author>u012780337</author><pubDate>Sun, 08 Sep 2019 22:17:39 +0800</pubDate><description><![CDATA[个人感觉，做嵌入式，底层就是datasheet，顶层就是数理逻辑。
不管什么芯片，当我们遇到问题时，通过查阅datasheet或上官网基本上都能找到解决方法。然而，这些基本都是英文。所以，英文好对做研发是有很大益处的。不过好在有翻译工具，如：有道（我就是用有道划的）：
C语言虽然没有class，但有struct。我们可以多用struct。ST库和ucos中就包含许多struct。
程序结构多用状态...]]></description><category></category></item><item><title><![CDATA[关于IIC与SPI这两种通讯协议的详解]]></title><link>https://blog.youkuaiyun.com/u012780337/article/details/100100675</link><guid>https://blog.youkuaiyun.com/u012780337/article/details/100100675</guid><author>u012780337</author><pubDate>Tue, 27 Aug 2019 15:41:42 +0800</pubDate><description><![CDATA[IIC vs SPI现今，在低端数字通信应用领域，我们随处可见IIC (Inter-Integrated Circuit) 和 SPI (Serial Peripheral Interface)的身影。原因是这两种通信协议非常适合近距离低速芯片间通信。Philips（for IIC）和Motorola（for SPI） 出于不同背景和市场需求制定了这两种标准通信协议。IIC 开发于1982年，当时...]]></description><category></category></item><item><title><![CDATA[简单函数指针实例]]></title><link>https://blog.youkuaiyun.com/u012780337/article/details/98457401</link><guid>https://blog.youkuaiyun.com/u012780337/article/details/98457401</guid><author>u012780337</author><pubDate>Sun, 04 Aug 2019 12:29:33 +0800</pubDate><description><![CDATA[#include &lt;stdio.h&gt;
/*简单函数指针实例*/
void func1(void)
{
    printf("I am func1.\n");
}

int main(void)
{
    void (*pFunc1)();
    pFunc1 = func1;
    /*直接引用函数指针名*/
    pFunc1();
}



...]]></description><category></category></item><item><title><![CDATA[简单程序控制块概念说明]]></title><link>https://blog.youkuaiyun.com/u012780337/article/details/98456769</link><guid>https://blog.youkuaiyun.com/u012780337/article/details/98456769</guid><author>u012780337</author><pubDate>Sun, 04 Aug 2019 12:19:09 +0800</pubDate><description><![CDATA[/*简单程序控制块概念说明*/
#include &lt;stdio.h&gt;
#include &lt;string.h&gt;

typedef struct tcb
{
    char *code_name;
    int p;
    int v_num;
    void (*fun)(void);
}TCB;
/*功能函数1*/
void function_1(void)
{
...]]></description><category></category></item><item><title><![CDATA[if语句、if...else if语句和switch...case语句的区别和分析]]></title><link>https://blog.youkuaiyun.com/u012780337/article/details/95317608</link><guid>https://blog.youkuaiyun.com/u012780337/article/details/95317608</guid><author>u012780337</author><pubDate>Wed, 10 Jul 2019 11:19:13 +0800</pubDate><description><![CDATA[if语句、if else if语句和switch case语句都属于流程控制语句。

　　在只需要判断一个条件的时候，自然是使用if语句方便有效；但是当判断条件很多的时候，我们可以使用多个if语句或者if...else if语句或者switch case语句。

 对于这三者的选择，下面将做一些具体分析；对于后两者的选择，又将涉及到程序执行效率的问题。

　　if...else if语...]]></description><category></category></item><item><title><![CDATA[指针简单应用]]></title><link>https://blog.youkuaiyun.com/u012780337/article/details/94383264</link><guid>https://blog.youkuaiyun.com/u012780337/article/details/94383264</guid><author>u012780337</author><pubDate>Mon, 01 Jul 2019 11:04:47 +0800</pubDate><description><![CDATA[#include &lt;stdio.h&gt;

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;
...]]></description><category></category></item><item><title><![CDATA[NRF24L01一对多通信方法程序详解]]></title><link>https://blog.youkuaiyun.com/u012780337/article/details/90638629</link><guid>https://blog.youkuaiyun.com/u012780337/article/details/90638629</guid><author>u012780337</author><pubDate>Tue, 28 May 2019 14:26:52 +0800</pubDate><description><![CDATA[声明：看本文之前，请确保你可以用NRF24L01进行双向通信，否则看了也白看。

如果你还搞不通2个NRF24L01之间的通信，请看瑞生写的这两篇文章《新手如何快速搞通NRF24L01通信》和《NRF24L01中文资料_原理_程序详解》。

搞通了2个NRF24L01的互相通信，一对多实际上就非常容易了。你要记住，一对多通信，实际上同一时刻也是一对一通信。一次通信只需几个毫秒，如果一个和一个通信完...]]></description><category></category></item><item><title><![CDATA[C#中， for与 foreach遍历数组元素的区别]]></title><link>https://blog.youkuaiyun.com/u012780337/article/details/87821156</link><guid>https://blog.youkuaiyun.com/u012780337/article/details/87821156</guid><author>u012780337</author><pubDate>Wed, 20 Feb 2019 20:38:25 +0800</pubDate><description><![CDATA[
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Params_Array
{
    class Program
    {
        
        static void Main...]]></description><category></category></item><item><title><![CDATA[if的非零逻辑判断注意事项]]></title><link>https://blog.youkuaiyun.com/u012780337/article/details/87364914</link><guid>https://blog.youkuaiyun.com/u012780337/article/details/87364914</guid><author>u012780337</author><pubDate>Fri, 15 Feb 2019 15:30:46 +0800</pubDate><description><![CDATA[if的非零逻辑判断注意事项


]]></description><category></category></item><item><title><![CDATA[C#图形界面简单入门（WinForm )]]></title><link>https://blog.youkuaiyun.com/u012780337/article/details/85526817</link><guid>https://blog.youkuaiyun.com/u012780337/article/details/85526817</guid><author>u012780337</author><pubDate>Tue, 01 Jan 2019 11:13:50 +0800</pubDate><description><![CDATA[1、使用Visual Studio 2013创建新项目

2、创建一个主窗体和4个子窗体

3、创建一个数据库、一个表、一个存储过程

4、在配置文件里添加数据库连接字符串

5、真正的编码工作。

第一步：创建新项目，一张图片抵一万字！



第二步：创建4个子窗体，名称分别是formCommandProc.cs、formDataAdapterProc.cs、formXMLCreate.cs、f...]]></description><category></category></item><item><title><![CDATA[C#中Application.EnableVisualStyles（）与 Application.SetCompatibleTextRenderingDefault()的作用]]></title><link>https://blog.youkuaiyun.com/u012780337/article/details/85452988</link><guid>https://blog.youkuaiyun.com/u012780337/article/details/85452988</guid><author>u012780337</author><pubDate>Mon, 31 Dec 2018 11:10:19 +0800</pubDate><description><![CDATA[ 

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

当调用 EnableVisualStyles时，无需单独的清单...]]></description><category></category></item></channel></rss>