<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[wolf19860612的专栏]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/wolf19860612</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; wolf19860612]]></copyright><item><title><![CDATA[PID参数调节过程]]></title><link>https://blog.youkuaiyun.com/wolf19860612/article/details/50198523</link><guid>https://blog.youkuaiyun.com/wolf19860612/article/details/50198523</guid><author>wolf19860612</author><pubDate>Sun, 06 Dec 2015 21:27:45 +0800</pubDate><description><![CDATA[STM32控制电机到一定位置，位置值用码盘读取
下面pid_ctrl_Daily1函数是PID调整的程序，然后在主程序中调用
//////  电机码盘 PID运算 ，用PID参数来实际控制角度，角度值为angle   ///////
double pid_ctrl_Daily1(double *array)
{
	//定义变量
	double ref = 0;//设置参数
	double fe]]></description><category></category></item><item><title><![CDATA[dsp仿真器可以连上而下载不了程序]]></title><link>https://blog.youkuaiyun.com/wolf19860612/article/details/50083089</link><guid>https://blog.youkuaiyun.com/wolf19860612/article/details/50083089</guid><author>wolf19860612</author><pubDate>Sun, 29 Nov 2015 12:24:36 +0800</pubDate><description><![CDATA[过程后面具体补充 问题是JTAG口的4接地了，而8/10/12没接地]]></description><category></category></item><item><title><![CDATA[指针数组与数组指针]]></title><link>https://blog.youkuaiyun.com/wolf19860612/article/details/49787937</link><guid>https://blog.youkuaiyun.com/wolf19860612/article/details/49787937</guid><author>wolf19860612</author><pubDate>Wed, 11 Nov 2015 22:46:23 +0800</pubDate><description><![CDATA[4.4.1.1、字面意思来理解指针数组与数组指针
(1)指针数组的实质是一个数组，这个数组中存储的内容全部是指针变量。
(2)数组指针的实质是一个指针，这个指针指向的是一个数组。
4.4.1.2、分析指针数组与数组指针的表达式
(1)int *p[5]; int (*p)[5]; int *(p[5]);
(2)一般规律：int *p;(p是一个指针)； int p[5];(p是一个数组]]></description><category></category></item><item><title><![CDATA[输入型参数（const）与输出型参数]]></title><link>https://blog.youkuaiyun.com/wolf19860612/article/details/49787567</link><guid>https://blog.youkuaiyun.com/wolf19860612/article/details/49787567</guid><author>wolf19860612</author><pubDate>Wed, 11 Nov 2015 22:31:39 +0800</pubDate><description><![CDATA[4.3.10.2、函数传参中使用const指针
(1)const一般用在函数参数列表中，用法是const int *p;（意义是指针变量p本身可变的，而p所指向的变量是不可变的）。
(2)const用来修饰指针做函数传参，作用就在于声明在函数内部不会改变这个指针所指向的内容，所以给该函数传一个不可改变的指针（char *p = "linux";这种）不会触发错误；而一个未声明为const的指针]]></description><category></category></item><item><title><![CDATA[C语言编程函数编写一般原则]]></title><link>https://blog.youkuaiyun.com/wolf19860612/article/details/49787063</link><guid>https://blog.youkuaiyun.com/wolf19860612/article/details/49787063</guid><author>wolf19860612</author><pubDate>Wed, 11 Nov 2015 21:57:29 +0800</pubDate><description><![CDATA[其实如果没有形参列表和返回值，函数也能对数据进行加工，用全局变量即可。
用全局变量来传参和用函数参数列表返回值来传参各有特点，在实践中都有使用。总的来说，函数参数传参用的比较多，因为这样可以实现模块化编程，
而C语言中也是尽量减少使用全局变量。
(全局变量传参最大的好处就是省略了函数传参的开销，所以效率要高一些；但是实战中用的最多的还是传参，如果参数很多传参开销非常大，通常的做法是把很多参数]]></description><category></category></item><item><title><![CDATA[DSP28335数组下标越界导致其他全局变量被窜改]]></title><link>https://blog.youkuaiyun.com/wolf19860612/article/details/49786833</link><guid>https://blog.youkuaiyun.com/wolf19860612/article/details/49786833</guid><author>wolf19860612</author><pubDate>Wed, 11 Nov 2015 21:38:42 +0800</pubDate><description><![CDATA[最近一直被这问题困扰，今天才解决。
程序是跑在DSP28335上的，是串口接收另外一款处理器发来的数据，处理后发送给其他设备。
发现有时有些全局变量无缘无故被改变，而程序还在正常运行。感觉很奇怪，找了好几天问题，
后来发现是串口接收在处理异常报文时有bug，导致里串口接收缓存数组越界，然后越界后就将其他的变量给改变了。
用STM32时也遇到过数组越界，但这时候处理器是进硬件错误中断里了，没]]></description><category></category></item><item><title><![CDATA[C 语言中结构体引用符号"."和"->"的区别]]></title><link>https://blog.youkuaiyun.com/wolf19860612/article/details/49430457</link><guid>https://blog.youkuaiyun.com/wolf19860612/article/details/49430457</guid><author>wolf19860612</author><pubDate>Mon, 26 Oct 2015 22:00:54 +0800</pubDate><description><![CDATA[当结构体是一个指针时要引用结构体的成员就用-> 而如果不是指针就用.]]></description><category></category></item><item><title><![CDATA[指针的数据类型的含义]]></title><link>https://blog.youkuaiyun.com/wolf19860612/article/details/49284567</link><guid>https://blog.youkuaiyun.com/wolf19860612/article/details/49284567</guid><author>wolf19860612</author><pubDate>Tue, 20 Oct 2015 22:19:55 +0800</pubDate><description><![CDATA[(1)指针的本质是：变量，指针就是指针变量
(2)一个指针涉及2个变量：一个是指针变量自己本身，一个是指针变量指向的那个变量
(3)int *p;定义指针变量时，p（指针变量本身）是int *类型，*p（指针指向的那个变量）是int类型的。
(4)int *类型说白了就是指针类型，只要是指针类型就都是占4字节，解析方式都是按照地址的方式来解析（意思是里面存的32个二进制加起来表示一个内存地址]]></description><category></category></item><item><title><![CDATA[a a[0] &a &a[0]的理解]]></title><link>https://blog.youkuaiyun.com/wolf19860612/article/details/49282961</link><guid>https://blog.youkuaiyun.com/wolf19860612/article/details/49282961</guid><author>wolf19860612</author><pubDate>Tue, 20 Oct 2015 21:11:08 +0800</pubDate><description><![CDATA[数组中几个关键符号（a a[0] &a &a[0]）的理解（前提是 int a[10]）
(1)这4个符号搞清楚了，数组相关的很多问题都有答案了。理解这些符号的时候要和左值右值结合起来，也就是搞清楚每个符号分别做左值和右值时的不同含义。
(2)a就是数组名。a做左值时表示整个数组的所有空间（10×4=40字节），又因为C语言规定数组操作时要独立单个操作，不能整体操作数组，所以a不能做左值；a做]]></description><category></category></item><item><title><![CDATA[位操作-在寄存器中的使用]]></title><link>https://blog.youkuaiyun.com/wolf19860612/article/details/49032021</link><guid>https://blog.youkuaiyun.com/wolf19860612/article/details/49032021</guid><author>wolf19860612</author><pubDate>Sat, 10 Oct 2015 22:58:52 +0800</pubDate><description><![CDATA[位与：（任何数，其实就是1或者0）与1位与无变化，与0位与变成0
位或：（任何数，其实就是1或者0）与1位或变成1，与0位或无变化
位异或：（任何数，其实就是1或者0）与1位异或会取反，与0位异或无变化



寄存器操作的要求（特定位改变而不影响其他位）
(1)ARM是内存与IO统一编址的，ARM中有很多内部外设，SoC中CPU通过向这些内部外设的寄存器写入一些特定的值来操控这个内部]]></description><category></category></item><item><title><![CDATA[栈的使用-局部变量的定义]]></title><link>https://blog.youkuaiyun.com/wolf19860612/article/details/49029741</link><guid>https://blog.youkuaiyun.com/wolf19860612/article/details/49029741</guid><author>wolf19860612</author><pubDate>Sat, 10 Oct 2015 21:11:43 +0800</pubDate><description><![CDATA[定义局部变量，其实就是在栈中通过移动栈指针来给程序提供一个内存空间和这个局部变量名绑定。因为这段内存空间在栈上，而栈内存是反复使用的（脏的，上次用完没清零的），所以说使用栈来实现的局部变量定义时如果不显式初始化，值就是脏的。如果你显式初始化怎么样？
C语言是通过一个小手段来实现局部变量的初始化的。
int a = 15; // 局部变量定义时初始化
C语言编译器会自动把这行转成：
int ]]></description><category></category></item><item><title><![CDATA[C语言学习-数据类型本质（表示一个内存格子的长度和解析方法）]]></title><link>https://blog.youkuaiyun.com/wolf19860612/article/details/49005755</link><guid>https://blog.youkuaiyun.com/wolf19860612/article/details/49005755</guid><author>wolf19860612</author><pubDate>Fri, 09 Oct 2015 20:53:54 +0800</pubDate><description><![CDATA[C语言中数据类型的本质含义是：表示一个内存格子的长度和解析方法。
数据类型决定长度的含义：我们一个内存地址（0x30000000），本来这个地址只代表1个字节的长度，但是实际上我们可以通过给他一个类型(int)，让他有了长度(4)，这样这个代表内存地址的数字(0x30000000)就能表示从这个数字(0x30000000)开头的连续的n(4)个字节的内存格子了(0x30000000 + 0x30]]></description><category></category></item><item><title><![CDATA[ROM、RAM、DRAM、SRAM和FLASH的区别]]></title><link>https://blog.youkuaiyun.com/wolf19860612/article/details/48949309</link><guid>https://blog.youkuaiyun.com/wolf19860612/article/details/48949309</guid><author>wolf19860612</author><pubDate>Wed, 07 Oct 2015 15:24:41 +0800</pubDate><description><![CDATA[ROM和RAM指的都是半导体存储器，ROM是Read Only Memory的缩写，RAM是Random Access Memory的缩写。
ROM在系统停止供电的时候仍然可以保持数据，而RAM通常都是在掉电之后就丢失数据，典型的RAM就是计算
机的内存。 


    RAM
  有两大类，一种称为静态RAM（StaticRAM/SRAM），SRAM速度非常快，是目前读写最快的存储设]]></description><category></category></item><item><title><![CDATA[冯诺依曼结构与哈佛结构学习]]></title><link>https://blog.youkuaiyun.com/wolf19860612/article/details/48949087</link><guid>https://blog.youkuaiyun.com/wolf19860612/article/details/48949087</guid><author>wolf19860612</author><pubDate>Wed, 07 Oct 2015 14:59:41 +0800</pubDate><description><![CDATA[冯诺依曼结构：数据与代码放在一起
哈佛结构：数据和代码分开存在
在S5PV210运行Linux中系统，运行应用程序时：这时候所有的应用程序的代码和数据都在DRAM，所以这种机构就是冯诺依曼结构；
在单片机中，我们把程序代码烧写到Flash（NorFlash）中，然后程序在Flash中原地运行，程序中所涉及到的数据（全局变量、局部变量）不能放在Flash中，必须放在RAM（SRAM）中，这种结]]></description><category></category></item><item><title><![CDATA[STM32 KEIL编译是提示Template.map file has been changed outside the editor, reload?]]></title><link>https://blog.youkuaiyun.com/wolf19860612/article/details/48948003</link><guid>https://blog.youkuaiyun.com/wolf19860612/article/details/48948003</guid><author>wolf19860612</author><pubDate>Wed, 07 Oct 2015 12:10:41 +0800</pubDate><description><![CDATA[keil每次编译报此提醒，
在keil中把Template.map打开了，关掉就好
如果找不到就点文件右上角的小三角，就可以看到了]]></description><category></category></item></channel></rss>