×

单片机入门:无需入门套件即可启动!使用软仿真器的开发方法资料下载

消耗积分:3 | 格式:pdf | 大小:422.53KB | 2021-04-07

分享资料个

使用微控制器时,是否认为必须使用硬件,例如入门套件等进行调试?我们将为您提供更好的解决方案。您可使用瑞萨的集成开发环境“e²studio”在PC上简单进行开发。 支持物联网的微控制器 至今,让我们谈一下微控制器的介绍与嵌入式编程。微控制器在诸多领域的程序处理控制中发挥着作用,如消费类电子,汽车和工业设备。从控制设备的核心到触摸屏用户接面和LCD显示等功能时,都在利用微控制器在后台操作。 目前,智能手机和智能电视与可运行1GHz以上的多核处理器的SoC(系统LSI)结合起来支持强大的OS操作系统,例如Linux等。然而,这并不意味着所有处理过程都可以通过类似强大系统(例如SoC)单独执行。在寻求软件灵活性的同时,也有很多不使用OS的情况下达到实时和低功耗的目的。例如,当从红外遥控器的接收部分进行信号处理(信号和噪音分离)和解码(控制信号再生)时,如果微控制器能够持续监视遥控器接收,则实时控制将更加可靠而不需由高性能SoC每隔几毫秒处理一次。 微控制器同样适用于最近热门的物联网。多数物联网设备的处理过程都是报告和指导性的类型。复杂的数据处理不是由物联网设备执行,而是由接收数据的云服务器在执行。对于物联网来说重要的是更低功耗和即时反应。在实际处理过程中,根据通用I/O端口的模拟输入或数字输入判断是否报告情况,再将数据发送到通信模块。此处理过程是微控制器最理想的操作。 尝试使用RL78、 瑞萨RL78族是一款具有良好声誉并易于使用的微控制器。此系列产品以16bit CPU为核心,将RAM,闪存,AD转换器,定时器,通用I/O端口和串行接口等集合为单一芯片。此外,芯片内置高速且精确的片上振荡器,不需要外部振荡器,只需极少数外部元件即可操作。除了以上基本功能之外,一些产品根据不同的应用配备不同的外围功能,例如响应各种需求的电机控制和无线设备控制。 集成开发环境有什么好处 集成开发环境“e²studio”中为RL78/G13提供多功能的处理程序。我们将利用此开发环境进行开发。集成开发环境能完整地实现编码指令,目标码链接,调试,仿真等的整合。在此之前,编译器,链接器,调试器和软仿真器等各自单独运作,开发人员必须设法管理它们之间的互相作用。尤其,把处理过程分成多个部分并开发每个部分的版本控制是一项繁琐的任务。有时,即使编写程序的人也会在查找最新版本或已被改变的位置上伤脑筋。在集成开发环境中,管理源程序会变得更简易。 也将使用调试器更有效地进行调试。使用此调试器不需要将函数printf插入源代码并不断检查变量值,可在源代码上指定断点,并在断点上检查所传递给该函数的变量值。会让您了解程序的处理过程,仿如亲身体验一样。这些好处是具有较低调试功能的Arduino是无法仿效的。 代码生成插件的简单开发 您是否由于缺乏对RL78系列产品的了解而不能有效运行程序感到很沮丧?别担心。瑞萨开发了 “代码生成插件”,此插件在设定参数下可自动生成C语言程序。代码生成插件可创建初始配置处理程序,包括微控制器引脚分配功能,也可生成所需要外围功能的配置程序,例如I/O和AD转换器。程序员可通过代码生成插件调用生成出来的I/O和外围功能等的函数。在使用微控制器之前需阅读硬件手册,但不必记住所有规程。将细节交给代码生成插件处理。接下来请尝试使用代码生成插件来分配函数并指定波形输出宽度。 与软仿真器结合操作 即使所有源代码都无编译错误地编写完成,但是程序并未完成。必须确定使用的硬件与生成程序的正常运行。尤其与微控制器实际操作尤其与微控制器实际操作行为有关的部分,例如设置和读取外围功能寄存器,必须通过连接硬件来确保它正准确必须通过连接硬件来确保它正准确地进行操作。但是正在开发中的硬件并不能保证可使用的。 这正是软仿真器展示其能力的地方。软仿真器使用软件方法虚拟地再实现目标微控制器或带有微控制器的电路板之功能。您可观察到来自微控制器I/O端口的信号类型。如使用板级软仿真器,电路板电路板板卡兼容输入(开关或音量)和输出(LED)也将由软件实现。由于软件运行,输出不会与目标硬件有相同的速度。然而,这足以观察并了解运行状态。软仿真器与e² studio无缝地连接。 使用软仿真器进行开发 使用e²studio中的软仿真器运行入门套件的示例程序。无需购买套件。入门套件的功能将被实现在软仿真器中。您只需要一台电脑即可运行示例程序而且不需使用RL78硬件。 请通过以下步骤体验e²studio的开发。 (1) 下载e²studio并安装到电脑上。 (2) 下载示例程序。 (3) 将示例程序导入e²studio。 (4) 生成方波输出代码,连接到软仿真器并观察输出。 (5) 修改程序并更改为LED闪烁程序。 (6) 连接到板级软仿真并检查预期运行状态。 以上1到6的操作过程的视频已发布在瑞萨网站上。有关操作细节请参阅以上解释和视频。接下来,将解释如何在e²studio环境中使用软仿真器。 (1) 安装e² studio 首先,准备好MyRenesas 的登录名和密码。如果您还未成为会员,请创建MyRenesas用户帐号。 您可通过以下URL下载最新版本的e²studio。 下载URL: 请下载IDE and Coding Tools e²studio installer (Web installer or Offline installer)。执行已下载程序并安装e²studio。安装过程中所需的指定设备系列,附加组件,用于RL78的编译器等,尽请参考 “RL78 e²studio设置”(视频1)。 视频1: RL78 e²studio 设置 (2)下载示例程序 接下来,下载示例程序。 “RL78代码生成器插件(视频2)” 中详细介绍了下载e²studio,设置,调试和使用软仿真器等一系列操作。本示例程序以特定频率闪烁板上的LED。通过在软仿真器上实现此操作,可在不使运用入门套件的情况下确认程序执行。 视频2: RL78代码生成器插件 您可通过以下URL下载示例程序。视频文件已压缩为ZIP格式。 下载URL: (相关链接: Code Generation Tool RL78 API Reference, RL78/G13 User’s Manual Hardware Edition) 解压文件后,您可从被命名为“an_r20an0399jj0100_rl78_programming”的文件夹中找到必要的数据。e²studio要求访问保存示例程序的文件夹。该文件夹还包含内置RL78电路板仿真数据。请将ZIP文件保存并提取到易于查找的地方再开始操作。但是,保存时请避免使用双字节字符来命名文件夹或路径名称。 (3) 导入示例程序 下载完,将要执行的程序导入e²studio。如图1所示指定要导入的程序的文件夹。 使用示例程序时,请指定文件夹“an_r20an0399ej0100_rl78_programming”。(视频2,01:16处有说明(“分钟:秒”格式))。 图1: 指定要导入的项目 (4) 方波输出代码并观察输出 首先使用代码生成器插件开发程序。使用代码生成器插件,只需要设置参数即可生成必要的代码。原始程序中配置方波的宽度设为100微秒,将它改为100毫秒,然后生成代码。 (视频2的02:52说明“方波输出设置”,此段展示更改脉冲宽度的操作。) 当新代码被生成后,将软仿真器连接到调试器并观察方波输出。视频2的03:13展示了e²studio的操作顺序。接下来,连接软仿真器到调试器后展示现时序图(图2:视频04:45)。 图2: 模拟器上显示的时序图(指定时钟类型为"msec." ,放大倍数为 "1/32") 图2中时序图设为观察以毫秒为单位变化的信号,并实现类似于逻辑分析仪的功能。也可以测量输出被打开/关闭时的周期。首先,中断(暂停)模拟和停止信号输出(图3)。之后,在时间图上用鼠标放置标记时,标记之间的时间会显示在图表中(请参照视频2 “04:48”时的操作)。 图3:按下暂停按钮暂停程序。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

评论(0)
发评论

下载排行榜

全部0条评论

快来发表一下你的评论吧 !

'+ '

'+ '

'+ ''+ '
'+ ''+ ''+ '
'+ ''+ '' ); $.get('/article/vipdownload/aid/'+webid,function(data){ if(data.code ==5){ $(pop_this).attr('href',"/login/index.html"); return false } if(data.code == 2){ //跳转到VIP升级页面 window.location.href="//m.lene-v.com/vip/index?aid=" + webid return false } //是会员 if (data.code > 0) { $('body').append(htmlSetNormalDownload); var getWidth=$("#poplayer").width(); $("#poplayer").css("margin-left","-"+getWidth/2+"px"); $('#tips').html(data.msg) $('.download_confirm').click(function(){ $('#dialog').remove(); }) } else { var down_url = $('#vipdownload').attr('data-url'); isBindAnalysisForm(pop_this, down_url, 1) } }); }); //是否开通VIP $.get('/article/vipdownload/aid/'+webid,function(data){ if(data.code == 2 || data.code ==5){ //跳转到VIP升级页面 $('#vipdownload>span').text("开通VIP 免费下载") return false }else{ // 待续费 if(data.code == 3) { vipExpiredInfo.ifVipExpired = true vipExpiredInfo.vipExpiredDate = data.data.endoftime } $('#vipdownload .icon-vip-tips').remove() $('#vipdownload>span').text("VIP免积分下载") } }); }).on("click",".download_cancel",function(){ $('#dialog').remove(); }) var setWeixinShare={};//定义默认的微信分享信息,页面如果要自定义分享,直接更改此变量即可 if(window.navigator.userAgent.toLowerCase().match(/MicroMessenger/i) == 'micromessenger'){ var d={ title:'单片机入门:无需入门套件即可启动!使用软仿真器的开发方法资料下载',//标题 desc:$('[name=description]').attr("content"), //描述 imgUrl:'https://'+location.host+'/static/images/ele-logo.png',// 分享图标,默认是logo link:'',//链接 type:'',// 分享类型,music、video或link,不填默认为link dataUrl:'',//如果type是music或video,则要提供数据链接,默认为空 success:'', // 用户确认分享后执行的回调函数 cancel:''// 用户取消分享后执行的回调函数 } setWeixinShare=$.extend(d,setWeixinShare); $.ajax({ url:"//www.lene-v.com/app/wechat/index.php?s=Home/ShareConfig/index", data:"share_url="+encodeURIComponent(location.href)+"&format=jsonp&domain=m", type:'get', dataType:'jsonp', success:function(res){ if(res.status!="successed"){ return false; } $.getScript('https://res.wx.qq.com/open/js/jweixin-1.0.0.js',function(result,status){ if(status!="success"){ return false; } var getWxCfg=res.data; wx.config({ //debug: true, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。 appId:getWxCfg.appId, // 必填,公众号的唯一标识 timestamp:getWxCfg.timestamp, // 必填,生成签名的时间戳 nonceStr:getWxCfg.nonceStr, // 必填,生成签名的随机串 signature:getWxCfg.signature,// 必填,签名,见附录1 jsApiList:['onMenuShareTimeline','onMenuShareAppMessage','onMenuShareQQ','onMenuShareWeibo','onMenuShareQZone'] // 必填,需要使用的JS接口列表,所有JS接口列表见附录2 }); wx.ready(function(){ //获取“分享到朋友圈”按钮点击状态及自定义分享内容接口 wx.onMenuShareTimeline({ title: setWeixinShare.title, // 分享标题 link: setWeixinShare.link, // 分享链接 imgUrl: setWeixinShare.imgUrl, // 分享图标 success: function () { setWeixinShare.success; // 用户确认分享后执行的回调函数 }, cancel: function () { setWeixinShare.cancel; // 用户取消分享后执行的回调函数 } }); //获取“分享给朋友”按钮点击状态及自定义分享内容接口 wx.onMenuShareAppMessage({ title: setWeixinShare.title, // 分享标题 desc: setWeixinShare.desc, // 分享描述 link: setWeixinShare.link, // 分享链接 imgUrl: setWeixinShare.imgUrl, // 分享图标 type: setWeixinShare.type, // 分享类型,music、video或link,不填默认为link dataUrl: setWeixinShare.dataUrl, // 如果type是music或video,则要提供数据链接,默认为空 success: function () { setWeixinShare.success; // 用户确认分享后执行的回调函数 }, cancel: function () { setWeixinShare.cancel; // 用户取消分享后执行的回调函数 } }); //获取“分享到QQ”按钮点击状态及自定义分享内容接口 wx.onMenuShareQQ({ title: setWeixinShare.title, // 分享标题 desc: setWeixinShare.desc, // 分享描述 link: setWeixinShare.link, // 分享链接 imgUrl: setWeixinShare.imgUrl, // 分享图标 success: function () { setWeixinShare.success; // 用户确认分享后执行的回调函数 }, cancel: function () { setWeixinShare.cancel; // 用户取消分享后执行的回调函数 } }); //获取“分享到腾讯微博”按钮点击状态及自定义分享内容接口 wx.onMenuShareWeibo({ title: setWeixinShare.title, // 分享标题 desc: setWeixinShare.desc, // 分享描述 link: setWeixinShare.link, // 分享链接 imgUrl: setWeixinShare.imgUrl, // 分享图标 success: function () { setWeixinShare.success; // 用户确认分享后执行的回调函数 }, cancel: function () { setWeixinShare.cancel; // 用户取消分享后执行的回调函数 } }); //获取“分享到QQ空间”按钮点击状态及自定义分享内容接口 wx.onMenuShareQZone({ title: setWeixinShare.title, // 分享标题 desc: setWeixinShare.desc, // 分享描述 link: setWeixinShare.link, // 分享链接 imgUrl: setWeixinShare.imgUrl, // 分享图标 success: function () { setWeixinShare.success; // 用户确认分享后执行的回调函数 }, cancel: function () { setWeixinShare.cancel; // 用户取消分享后执行的回调函数 } }); }); }); } }); } function openX_ad(posterid, htmlid, width, height) { if ($(htmlid).length > 0) { var randomnumber = Math.random(); var now_url = encodeURIComponent(window.location.href); var ga = document.createElement('iframe'); ga.src = 'https://www1.elecfans.com/www/delivery/myafr.php?target=_blank&cb=' + randomnumber + '&zoneid=' + posterid+'&prefer='+now_url; ga.width = width; ga.height = height; ga.frameBorder = 0; ga.scrolling = 'no'; var s = $(htmlid).append(ga); } } openX_ad(828, '#berry-300', 300, 250);