| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 嵌入式 -> 瑞萨e2studio(1)----DTC测试Data Transfer Controller&外部中断&Clock&低功耗模式 -> 正文阅读 |
|
[嵌入式]瑞萨e2studio(1)----DTC测试Data Transfer Controller&外部中断&Clock&低功耗模式 |
目录 目录 概述:本篇文章主要介绍如何使用e2studio对瑞萨单片机进行DTC功能测试,其中包含有外部中断,时钟树的配置,低功耗模式的简单应用。仅供入门使用,具体研究还需多看硬件设计手册。 A Data Transfer Controller (DTC) module is provided for transferring data when activated by an interrupt request. 当有中断发生时,会执行数据的搬运。 本文会持续更新,请关注。 硬件准备:首先需要准备一个开发板,这里我准备的是芯片型号R7FA2E1A92DFM的开发板EK-RA2E1。128KB flash,16KB Sram,4KB Data flash。 新建工程:?工程模板:?保存工程路径:芯片配置:本文中使用R7FA2E1A92DFM来进行演示。 工程模板选择:时钟资源配置:面对任何一款MCU,它的时钟树非常大关键,初学者应该花点时间把时钟树先理清楚,再去做其他的任务。E2stduio提供了图型化时钟配置界面,非常方便理解。 ?时钟默认配置,可以看到ICLK为系统时钟,为48MHz,外设时钟B为24MHz,外设时钟D是48MHz,在本例中不做修改。掌握时钟树对一款MCU的理解至关重要。 LED指示灯和按钮配置:P913,P914 ,P915驱动3个LED灯,P004接按钮S1。 ?外部中断设置:在Pins标签栏选择INPUT->ICU0,选择中断IRQ03:P004。 在Stack标签栏中,选择new stac->Drive->Input->外部中断驱动 r_icu。 注意选择通道3,修改一下名字,我个人不喜欢,也可以不修改。在本例中我不关注中断回调函数相关的内容,我只是想重点关注的是LPM模式和DTC数据传输部分,所以在这里对回调函数默认为NULL,不做修改。 ?LED设置:P913,P914,P915 三个LED灯配置为输出模式就可以了。然后点击生成, LPM模式设置:在stack标签栏中,选择new stac->Drive->Power->低功耗 r_lpm。 注意这里面关键的选项,唤醒源一定要选择IRQ03,也就是上面的中断源。这样系统中低功耗模式下,才能被按钮3触发欢喜。 DTC模式配置:在stack标签栏中,选择new stac->Drive->Transfer- 数据转移?r_dtc。 注意这里的配置,我理解的DTC就是不用CPU干预,就可以把数据从一个地址搬移到内存的另外一个地址,我现在想让数据从0x20004080转移到0x20004083。 值得注意到是,我在这个IDE中定义变量指定地址时,编译器并不理会我的指令,有知道的同学告诉我一下。 uint8_t P_Dest3 __attribute__((section(".ARM.__at_0x20004080"))) = 0xFF;//does't work 这个语句并不起作用,所以我为了测试,先去定义了4个变量,知道他们的地址,然后再测试的。这样做不合理,需要修改。 特别要注意的是,Interrupt Frequency选项,必须是After each transfer。不然中断无法唤醒,我也不知道为什么。? 编写测试代码:这下面的程序实现的时,按钮按一下,休眠一次,把Dest的值搬运一次给Dest3。? uint8_t P_Dest=0x06; //uint8_t P_Dest3 __attribute__((section(".ARM.__at_0x20004080"))) = 0xFF; void BlinkLed() 测试结果如下:可见,初始化时,PDest=6,PDest3=255。 只要按一PDest3就会和Pdest同步。在程序中并没有任何改变Pdest3的代码,Pdest3变量能变更的唯一原因就是DTC转移了数据。 我先记录到这儿,接下来继续完善。? |
|
嵌入式 最新文章 |
基于高精度单片机开发红外测温仪方案 |
89C51单片机与DAC0832 |
基于51单片机宠物自动投料喂食器控制系统仿 |
《痞子衡嵌入式半月刊》 第 68 期 |
多思计组实验实验七 简单模型机实验 |
CSC7720 |
启明智显分享| ESP32学习笔记参考--PWM(脉冲 |
STM32初探 |
STM32 总结 |
【STM32】CubeMX例程四---定时器中断(附工 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/26 10:00:48- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |