跳转到主要内容
MCU加油站
Toggle navigation
首页
技术
新闻
下载中心
互动专区
视频
评测
活动
博客
登录
注册
技术
IAR-C中实现IO端口直接位定义操作的一个示例
IAR-C有着强大的软件仿真功能,但其中的寄存器位操作定义却十分烦琐,并且编译后生成的ASM代码冗余较多,针对该问题,版主自已定义一个位操作定义的方法,初学者可参考定义,并且该种方法可应用于所有寄存器位操作定义。 共实现置位--Set_Bit, 清位--Clr_Bit,取反位Com_Bit,测试位Test_Bit四种位操作功能,并且每条位操作定义仅需一条3字节的ASM指令序列即可,简便直接...
阅读详情
2016-08-15 |
IAR相关
,
仿真工具
精妙的单片机非阻塞延时程序设计
对于每个单片机爱好者及工程开发设计人员,在刚接触单片机的那最初的青葱岁月里,都有过点亮跑马灯的经历。从看到那一排排小灯按着我们的想法在跳动时激动心情。到随着经验越多,越来又会感觉到这个小灯是个好东西,尤其是在调试资源有限的环境中,有时会帮上大忙。 但对于绝大多数人,我们在最最初让灯闪烁起来时大约都会用到阻塞延时实现,会像如下代码的样子: while(1) { LED =OFF;...
阅读详情
2016-08-12 |
单片机
ARM中main()和__main() 的区别
当所有的系统初始化工作完成之后,就需要把程序流程转入主应用程序,即呼叫主应用程序。最简单的一种情况是: IMPORT main B main 直接从启动代码跳转到应用程序的主函数入口,当然主函数名字可以由用户随便定义。 在ARM ADS环境中,还另外提供了一套系统级的呼叫机制。 IMPORT __main B __main __main()是编译系统提供的一个函数,...
阅读详情
2016-08-12 |
ARM Cortex
说说KEIL、uVision、RealView、MDK、KEIL C51之间的关系区别
从接触单片机开始,我们就知道有一个叫KEIL的软件。 在开发单片机时,使用的是C语言或者汇编语言,我们知道,这两种语言都不能直接灌到单片机里面,执不执行暂且不说,光是代码的体积,就足以撑破整个单片机。所以,我们需要一个软件,把C语言或者汇编语言编译生成单片机可执行的二进制代码,而且它的体积也非常的小,足够存放在单片机的存储器里面。 KEIL公司(现在是ARM公司的一个公司)...
阅读详情
2016-08-12 |
Keil相关
单片机软件定时器的使用方法
作者:zhangren_ham 初学者在编写单片机程序时经常会用到延时函数,但是当系统逐步复杂以后(没有复杂到使用操作系统)延时会因为延时降低MCU的利用率,更严重的会影响系统中的“并行”操作例如一个既有按键又有蜂鸣器的系统中,如果要求按下按键发出不同的声音,每次发声时间在1秒-2秒之间, 如果用延时来做代码很简单: //蜂鸣器发出“哔-哔-哔”声音时间约1s void BeepFuction(...
阅读详情
2016-08-12 |
单片机
Proteus仿真软件在单片机设计中的应用
摘要:单片机应用技术所涉及到的实验实践环节比较多,而且硬件投入比较大。在具体的工程实践中,如果因为方案有误而进行相应的开发设计,会浪费较多的时间和经费。Proteus仿真软件很好的解决了这些问题,它可以象Protel一样画好硬件原理图与KEIL编程软件结合进行编程仿真调试。 1、引言 单片机在很多产品中得到广泛的应用,无论是51系列、AVR、还是PIC系列,他们各有各的特点,...
阅读详情
2016-08-11 |
仿真工具
,
Debug工具
IAR程序下载与运行方式
(一)程序固化后运行方式: 程序开始运行后需要将RW 和ZI段搬移到RAM中去,程序下载进Flash中以后,上电后是怎样将RW ZI断搬移到RAM中去的?注意IAR和ADS在进行完.s文件的初始化以后都不是直接跳转到main函数去执行,IAR是跳转到?main中而ADS是跳转到__main函数中,在这些函数中根据icf文件的配置,将RW和ZI段搬移到icf文件规定的RAM区域中。...
阅读详情
2016-08-11 |
IAR相关
IAR集成开发环境如何设置堆栈大小
GCC和IAR分配堆栈的方式不同,IAR先分配堆栈空间,相当于定义一个全局数组为堆栈空间,堆栈初始为堆栈空间最高地址;GCC不用先分配堆栈,自动把RAM剩余空间作为堆栈空间,堆栈初始为RAM最高地址。 初学者很容易忽视这个问题,造成程序跑飞而找不到问题的症结,我在用IAR For MSP430的时候没遇到过这个问题,因为MSP430的RAM比较大,IAR默认是80字节,足够一般程序使用。 ...
阅读详情
2016-08-11 |
IAR相关
Cortex-M0处理器的故障处理和功耗管理
一、故障处理 故障是异常的一个子集,见第2-19页的异常处理模型。在NMI或HardFault异常处理时发生的故障将会引起HardFault异常或导致锁定(Lockup)。故障包含:•执行一条SVC指令,该指令的优先级高于或等于SVCall。•缺少调试器连接时,执行BKPT指令。 • 在加载或存储数据时,系统产生总线错误。 • 执行XN存储区的指令。 •...
阅读详情
2016-08-11 |
Cortex-M0
浅析单片机ROM、RAM和FLASH的作用
常规上ROM是用来存储固化程序的,RAM是用来存放数据的。由于FLASH ROM比普通的ROM读写速度快,擦写方便,一般用来存储用户程序和需要永久保存的数据。譬如说,现在家用的电子式电度表,它的内核是一款单片机,该单片机的程序就是存放在ROM里的。电度表在工作过程中,是要运算数据的,要采集电压和电流,并根据电压和电流计算出电度来。电压和电流时一个适时的数据,用户不关心,它只是用来计算电度用,...
阅读详情
2016-08-10 |
单片机
单片机C程序编译、执行过程
1、编写C代码: 1)预编译代码 2)定义及声明变量 3)定义及声明函数 4)编写程序代码(主函数MAIN) 2、编译器编译: 1) 预处理 此时编译器会扫描一个一个的C源文件,如果发现#include了某个.h文件,则把整个.h文件包含进.c文件中,形成一个新的.c文件(实际的实现过程可能不是这样,但原理是这样的)。同时进行相关预处理指令的解释工作,譬如将宏替换成实际的值。 2)...
阅读详情
2016-08-10 |
单片机
,
C程序
,
编译
Cortex-M0处理器的异常处理模型
本节主要介绍Cortex-M0的异常处理模型。 1、异常的状态 每个异常都处于以下状态之一: 未激活(Inactive) 异常没有被激活也没有被挂起。 挂起(Pending) 异常正等待被处理器服务。 来自外设或软件的中断请求,能让相应中断变为挂起状态。 激活(Active) 异常正在被处理器服务,并且服务尚未结束。 注意:一个异常处理能中断另一个异常处理,在这种情况下,...
阅读详情
2016-08-10 |
Cortex-M0
MCU产品测试要领
一.MCU测试 1.mcu工作电压及电流 测试MCU工作电压是否在工作电压范围,电压过高会影响MCU的正常工作甚至烧坏,工作电压过低会影响MCU的外围电路驱动能力,甚至导致外围电路不能正常工作。 2. mcu静态电流 静态电流是衡量MCU性能的主要参数之一,静态电流越小越好,根据MCU规格书测试静态电流是否符合要求,一旦MCU有损坏的话,静态电流就会变大,会增加产品的静耗,...
阅读详情
2016-08-09 |
MCU
单片机嵌入式编程的五个注意事项
在单片机编程的过程中,如果一名设计者能够同时掌握多门编程语言,那么这名设计者肯定是一位非常优秀的人才。但是想要同时精通汇编、C语言、C++这三门语言实在是太难了,很多初学者在其中一门的学习中就已经到处碰壁,苦不堪言。本文特意为大家整理了拥有嵌入式编程领域多年工作经验的工程师意见,汇总成了一篇能够对嵌入式编程经验有着指导意义的注意事项,感兴趣的朋友快来看一看吧。 在单片机嵌入式编程中,...
阅读详情
2016-08-09 |
编程工具
Cortex-M0处理器的存储模型
本文将描述Cortex-M0设备的内存映射和内存访问行为。该处理器有一个固定的存储映射,它可以提供高达4GB的可寻址内存。存储映射图如下: 该处理器为处理器核外设寄存器保留了PPB地址范围,关于Cortex-M0处理器以及核外设的内容见《Cortex-M0处理器及其特性》 1、存储区、类型和属性 存储映射被分成多个区,每个区都有其存储类型,有些区还有附加属性。...
阅读详情
2016-08-09 |
Cortex-M0
‹‹
253 中的第 248
››