单片机C语言申请固定地址的变量

int8 *pRStut1 = ADDR1 ; //申请一个8位指针变量 变量名为pRStut1int16 *pRStut2 = ADDR2 ; //申请一个16位指针变量 变量名为pRStut2uint8 RStu1 _at_ ADDR1 ; //申请一个8位变量 变量名为RStu1uint16 RStu2 _at_ ADDR2 ; //申请一个16位变量 变量名为RStu2DEF_8BIT_REG_AT(RStu1,ADDR1); //申请一个8位变量 变量名为RStu1DEF_16BIT_REG_AT(RStu2,ADDR2); //申请一个16位变量 变量名为RStu2...

http://www.eeworld.com.cn/mcu/2018/ic-news112042054.html 发布时间: 2018-11-20



菜鸟福利!STM32学习之uCGUI移植详解

以下内容大多是网上资源,我只做一些修改和结合,为的是能够方便更多的和我一样的菜鸟们搞懂GUI的移植。第一部分:在UCGUI移植之前在移植之前,首先要了解在网上下的UCGUI 3.98源码的文件结构是。UCGUI 3.98源码中有三个文件夹:1)“tool文件夹”是用来使用一些uCgui的上位机程序,基本都是字体和模板查看之类的.2)“sample文件夹”下面是已经别人帮你写好了很多有用的东西,像跟操作系统有关的GUI_X或者一些模板(后面我们会用到的自己定义的Demo),或者是gui配置.后面再一一详细叙说这个文件夹的功能.3)“Start文件夹”里面,这是我们最主要的文件夹.里面就包含了uC...
关键词: STM32 uCGUI移植

http://www.eeworld.com.cn/mcu/2018/ic-news112042044.html 发布时间: 2018-11-20



STM32如何移植uCGUI,看这里!

第一部分:在UCGUI移植之前在移植之前,首先要了解在网上下的UCGUI 3.98源码的文件结构是。UCGUI 3.98源码中有三个文件夹:1)“tool文件夹”是用来使用一些uCgui的上位机程序,基本都是字体和模板查看之类的.2)“sample文件夹”下面是已经别人帮你写好了很多有用的东西,像跟操作系统有关的GUI_X或者一些模板(后面我们会用到的自己定义的Demo),或者是gui配置.后面再一一详细叙说这个文件夹的功能.3)“Start文件夹”里面,这是我们最主要的文件夹.里面就包含了uCGUI的源代码,uCGUI的作者把源代码放进vc里面进行编译了(当然,这是用标准C语言写的程序,所以...
关键词: STM32 uCGUI

http://www.eeworld.com.cn/mcu/2018/ic-news112042037.html 发布时间: 2018-11-20



STM32中AHB总线、APB2总线、APB1总线这些是什么

 一直不明白有STM32中AHB总线、APB2总线、APB1总线这些是是什么??所谓地址映射,就是将芯片上的存储器 甚至I/O等资源与地址建立一一对应的关系。如果某地址对应着某寄存器,我们就可以运用C语言的指针来寻址并修改这个地址上的内容,从而实现修改该寄存器的内容。正是因为头文件中有了对于各种寄存器和I/O端口的地址映射,我们才可以在51单片机程序中方便地使用P2^0 =0xFF; TMOD =0xFF等赋值句子对寄存器进行配置,从而控制单片机。其实地址总线就是就是用来存放地址的,Cortex-M3的地址映射也是类似的,Cortex-M3有32根地址线,所以它的寻址空间大小为2^3...

http://www.eeworld.com.cn/mcu/2018/ic-news112042028.html 发布时间: 2018-11-20



单片机C语言几种内存泄露总结

日常项目中碰到的内存泄露无非有以下几种:(1) 堆内存泄漏(Heap leak)。堆内存指的是程序运行中根据需要分配通过malloc,realloc new等从堆中分配的一块内存,再是完成后必须通过调用对应的 free或者delete 删掉。如果程序的设计的错误导致这部分内存没有被释放,那么此后这块内存将不会被使用,就会产生Heap Leak. 这是最常见的内存泄露。(2)系统资源泄露(Resource Leak).主要指程序使用系统分配的资源比如 Bitmap,handle ,SOCKET等没有使用相应的函数释放掉,导致系统资源的浪费,严重可导致系统效能降低,系统运行不稳定如果您创建一个可接...

http://www.eeworld.com.cn/mcu/2018/ic-news112042024.html 发布时间: 2018-11-20



真干货!从51到stm32开发入门

 本来只是路过,写详细一点。我看楼主浮躁得不得了。现在什么都不要做了,先去看几遍《不要做浮躁的嵌入式工程师》这篇文章,想清楚了,再动手吧。我做了个实例,不用ST的库来点LED,解答你的问题我的 KeilMDK 3.5我的STM32板子奋斗版是 ,IC 是 STM32F103VET6调试工具 JLINK V8LED 接在 PB5 ,高电平点亮既然楼主说一定懂C语言了,那么对于下面我的问题,不查百度,完全靠自己,懂多少?然后查了百度之后又能懂多少?(一)新建 keil 工程,IC选择 ST 公司的 STM32F103VE,keil提示是否copy 启动文件,选择是。这...
关键词: 51 stm32 开发入门

http://www.eeworld.com.cn/mcu/2018/ic-news111942011.html 发布时间: 2018-11-19



C51语言编程:单片机与 PC 串口通信程序

单片机接收PC机发来的指令信号,然后单片机又向PC机发送字符串。具体要求如下:当接收指令信号为:'go',单片机向PC机发送字符串:WELCOME TO CHINA!;当接收指令信号为:'who',单片机向PC机发送字符串:MY NAME IS LIMING;当接收指令信号为:'home',单片机向PC机发送字符串:YINGYONGKEXUEXUEYUAN。PC机上的串口调试软件,会在窗口显示出单片机送回来相应字符串;如果接送的字符串不正确,单片机不响应。采用C语言。题目链接:http://zhidao.baidu.com/question/28...

http://www.eeworld.com.cn/mcu/2018/ic-news111942007.html 发布时间: 2018-11-19



初学单片机时总结的想法及一些程序

 一、单片机编程总结1、要养成总结的好习惯,总结不仅是对自己学习的一个总结,还是对学习过程的一个回顾与加深,还可避免第二次犯错。2、编写程序之前先要有一个对该项目熟悉的了解,做到心中有数,列一个大致框架。仔细推敲该怎么布局,怎样布局最合理,该步骤很重要。要分析先做哪个模块,具体到该模块的具体步骤,各个函数怎么命名,与其他模块的衔接等。最好拿张纸记下重要过程。3、对于c语言的模块化编程,要先分好各个模块,一个模块一个模块的编程,确定一个顺序,按顺序来,该模块成功之后再编写下一个。对于头文件,当该模块编写好之后再编写该模块的头文件。4、出现警告不要忽视,说明该程序一定有不合理之处,要弄清...
关键词: 初学 单片机时 程序

http://www.eeworld.com.cn/mcu/2018/ic-news111942006.html 发布时间: 2018-11-19



高手总结的一些硬件设计经验

 1:什么是二极管的正偏?在p节加正电压,而n节加负电压。即为正偏。正偏是扩散电流大大增加,反偏使漂移电流增加。但是漂移电流是由于少子移动形成的,所以有反向饱和电流!2:一般低频信号,电阻线的粗细是为了流多少电流,而粗细带来的电阻大小不计,因为铜线本身电阻很小,当然特殊情况例外!3:MOS管是依靠多子电子的一种载流子导电的,与晶体三极管的多子与少子一起参与导电的情况不一样。它是一种自隔离器件,不需要设置晶体三极管中的隔离岛,节省心片面积,适合超大规模电路。它的特点是 压控!即控制端几乎不需要电流,容易集成。4:如何判断三极管的 cbe 极?以及如何判断mos管的gdsa 直接查资料,...
关键词: 硬件设计 经验

http://www.eeworld.com.cn/mcu/2018/ic-news111942004.html 发布时间: 2018-11-19



STM32单片机之ADC学习经验总结

 因为公司的产品上需要使用AD来检测电池电压,要求不是很高,突然想用下DMA+ADC+TIM,以前以为很简单,实际使用中让我觉得很惭愧,遇到的问题让我一下子蒙了,不停的查资料,不停的测试,终于一个一个的问题都解决了,同时对STM32的ADC有了新的认识,并且打算再闲暇时间内将STM32的资源尽量的实践下。我用的是STM32F4 来调试ADC3+DMA+TIM1(单通道),首先我先查看了下DMA的资料,之后参考官方提供的ADC3+DMA很快可以正常读取数据,之后我直接添加定时器触发AD转换,结果失败,我开始查资料看手册,逐渐对这三者之间的关系有了一个认识首先定时器产生触发信号,AD检测...
关键词: STM32 单片机 ADC

http://www.eeworld.com.cn/mcu/2018/ic-news111942010.html 发布时间: 2018-11-19



STM32之启动文件详解

 在嵌入式应用程序开发过程里,由于使用C语言编程,基本很少涉及到机器底层寄存器的执行过程,一般都会直接在main函数里开始写代码,似乎main成为了理所当然的起点,尽管从C程序的角度来看程序都是直接从main函数开始执行。然而,MCU上电后,是如何寻找到并执行main函数这一问题却很自然的被忽略了!事实上微控制器是无法从硬件上去定位main函数的入口地址,因为使用C语言作为开发语言后,变量/函数的地址便由编译器在编译时自行分配,因此main函数的入口地址在编译后便不一定是一个绝对地址。MCU上电后又是如何寻找到这个入口地址呢?以前接触无论是PIC、AVR、MSP430或是51过程中都...
关键词: STM32 启动文件

http://www.eeworld.com.cn/mcu/2018/ic-news111941986.html 发布时间: 2018-11-19



51单片机内核的中断基础知识

 51内核的最基础的中断源请求有外部中断、定时器中断和串口中断,这也是学习和开发者最长用的。当然还有其他的中断源,比如ADC、SPI、PWM等。以外部中断0为例,在编程中常使用的方式为:void INT0()interrupt 0 using 1{……}在这里特别做上笔记:其中前面的void INT0() 只是代表一个普通没有形参的函数而已,函数名写成什么都是可以的,这个到不重要。那么后面的就一个一个词的扣把:(2-1-i-c-中国-电子网,防抓取)其中 interrupt n 组成一组,n用来指明中断号,在函数后使用了interrupt关键字后,就会自动的生成中断向量,51内核中断...
关键词: 51单片机 内核 中断

http://www.eeworld.com.cn/mcu/2018/ic-news111941974.html 发布时间: 2018-11-19



老兵戴辉:华为海思的麒麟手机芯片是如何崛起的?

日前,在集微网首发了《老兵戴辉:华为芯片事业是如何起家的?》。从1991年开始,为了增加自家通信系统的竞争力,华为走上开发ASIC(专用芯片)之路。但费尽心力搞出了这么好的芯片设计平台,光是给自己用,未免太浪费。巨大的消费电子芯片市场诱惑着华为,于是海思半导体得以诞生,声名远扬的手机麒麟芯片也几经磨难后,横空出世。本文就来讲述这中间崎岖曲折的往事。本文也介绍了展讯、国微、格科、艾为、汇顶、中星微、炬力、瑞芯微等的故事。第一章 海思成立,主攻消费电子芯片2004年,成立了全资子公司海思半导体,内部称为“小海思”。独立核算,独立销售。对系统芯片的研发以及公共平台,仍在母公司体下,内部称为“大海思”...
关键词: 华为

http://www.eeworld.com.cn/xfdz/2018/ic-news110490788.html 发布时间: 2018-11-04



STM32学习笔记之USB虚拟串口描述符简介

Descriptor即描述符,是一个完整的数据结构,可以通过C语言等编程实现,并存储在USB设备中,用于描述一个USB设备的所有属性,USB主机是通过一系列命令来要求设备发送这些信息的。它的作用就是通过如问答节中的命令***作来给主机传递信息,从而让主机知道设备具有什么功能、属于哪一类设备、要占用多少带宽、使用哪类传输方式及数据量的大小,只有主机确定了这些信息之后,设备才能真正开始工作,所以描述符也是十分重要的部分,要好好掌握。标准的描述符有5种,USB为这些描述符定义了编号:1——设备描述符2——配置描述符3——字符描述符4——接口描述符5——端点描述符上面的描述符之间有一定的关系,一个设备...
关键词: STM32 USB 虚拟串口

http://www.eeworld.com.cn/mcu/2018/ic-news102341969.html 发布时间: 2018-10-23



STM32学习之:SPI读写串行Flash

24.1 SPI协议简介SPI协议是由摩托罗拉公司提出的通讯协议(Serial Peripheral Interface),即串行外围设备接口,是一种高速全双工的通信总线。它被广泛地使用在ADC、LCD等设备与MCU间,要求通讯速率较高的场合。学习本章时,可与I2C章节对比阅读,体会两种通讯总线的差异以及EEPROM存储器与FLASH存储器的区别。下面我们分别对SPI协议的物理层及协议层进行讲解。24.1.1 SPI物理层SPI通讯设备之间的常用连接方式见图 241。图 241 常见的SPI通讯系统SPI通讯使用3条总线及片选线,3条总线分别为SCK、MOSI、MISO,片选线为,它们的作用介...

http://www.eeworld.com.cn/mcu/2018/ic-news102141953.html 发布时间: 2018-10-21



STM32——关于printf重定向到串口的问题

简单地说:想在mdk 中用printf,需要同时重定义fputc函数和避免使用semihosting(半主机模式), 标准库函数的默认输出设备是显示器,要实现在串口或LCD输出,必须重定义标准库函数里调用的与输出设备相关的函数. 例如:printf输出到串口,需要将fputc里面的输出指向串口(重定向),方法如下: #ifdef __GNUC__ /* With GCC/RAISONANCE, small printf (option LD Linker->Libraries->Small printf     ...

http://www.eeworld.com.cn/mcu/2018/ic-news102141946.html 发布时间: 2018-10-21



ARM编程进阶之二 —— ATPCS与混合编程

完全使用汇编语言来编写程序会非常的繁琐,因此通常情况下,只是使用汇编程序来完成少量必须由汇编程序才能完成的工作,而其它工作则由C语言程序来完成。这样一来,我们实际上就是在进行汇编和C的混合编程,甚至同一个程序的汇编源文件和C源文件是由不同的程序员编写的。在这种情况下,要想使不同程序员编写的汇编代码和C代码能耦合的很好,则必须有一个双方都必须遵守的规则,这就是ATPCS规则。第一部分内容:ATPCS规则ATPCS(ARM-Thumb Produce Call Standard)是ARM程序和Thumb程序中子程序调用的基本规则,目的是为了使单独编译的C语言程序和汇编程序之间能够相互调用。这些基本...

http://www.eeworld.com.cn/mcu/2018/ic-news102141942.html 发布时间: 2018-10-21



用单片机玩PID控制—从理想PID控制至先进PID控制_2

2系统组成简介2.1MCS-51单片机其实,n多年前玩过Z80和MCS-48、MCS-51微处理器(单片机),不过那时候是纸上谈兵,最多也就是在纸上写一些汇编语句,根本没法实战,现在,随着在系统中编程(ISP)和在应用中编程(IAP)等概念的出现,极大的方便了程序的烧录,用C语言开发单片机,也极大的降低了开发难度,51单片机开发板的售价也很低,一般就百元以下,这些为玩51单片机提供了物理条件。需要提及的是,玩过汇编语言后,为以后玩S7-300/400PLC的语句表编程打下了一个很好的基础,如果可能,以后会写一篇用S7-300/400PLC玩转过程控制,这里先按下不表。2.1.1硬件2.1.1....

http://www.eeworld.com.cn/mcu/2018/ic-news102041923.html 发布时间: 2018-10-20



用STM32F407玩控制—不完全微分PID控制

常规pid算法有缺陷,主要有:1是当偏差发生突变时,微分作用仅在一个周期内起作用,这个也不合理,2是当输入PV值有噪声时,调节器输出波动大,这在前面的图中可以看到,这对机械执行机构不理,使执行机构容易坏,执行机构故障多,自然生产也就不稳定,所以工程上通常用不完全微分PID调节器,文献中有两种类型的不完全微分PID算法,一种是在常规PID算法后串一个一阶延滞环节(比如参见金以慧《过程控制》,即Gc(s)=Kc*(1+1/(Ti*s)+Td*s)/(Tf*s+1),这种不完全微分PID算法,与前面讲的常规pid算法加过程值(PV)滤波有点相近,仅在设定(SP)有变化的情况下,调节器输出不同,其余情...

http://www.eeworld.com.cn/mcu/2018/ic-news102041918.html 发布时间: 2018-10-20



用STM32F407玩控制—自适应模糊PID控制

自适应模糊PID控制的原理如图1所示,从图中可以看出对偏差和偏差变化率进行模糊推理,获得Δkp、Δki、Δkd,模糊控制器的PID参数实际值为:kp=kp0+qp*Δkp、ki=ki0+qi*Δki、kd=kd0+qd*Δkd,其中qp、qi、qd为比例因子,这是比较常见的一种计算方式,但在薛定宇的《控制数学问题的MATLAB求解》一书中讲了另外一种计算方式:kp(k)=kp(k-1)+γ(k)*Δkp、ki(k)=ki(k-1))+γ(k)*Δki、kd(k)=kd(k-1)+γ(k)*Δkd,显然这种计算方式更复杂,我们这里采用前者,为了进行模糊推理,需要确定模糊规则表和各个模糊变量的隶属...

http://www.eeworld.com.cn/mcu/2018/ic-news102041913.html 发布时间: 2018-10-20




<上一页 12345678910111213141516 下一页> 相关结果约9,811个