当前位置: 首页 > news >正文

东莞网站页设计制作网站建设 公司 常见问题

东莞网站页设计制作,网站建设 公司 常见问题,北京 网站开发,网站建设不是一次性费用本教程基于韦东山百问网出的 DShanMCU-RA6M5开发板 进行编写#xff0c;需要的同学可以在这里获取#xff1a; https://item.taobao.com/item.htm?id728461040949 配套资料获取#xff1a;https://renesas-docs.100ask.net 瑞萨MCU零基础入门系列教程汇总#xff1a; ht…本教程基于韦东山百问网出的 DShanMCU-RA6M5开发板 进行编写需要的同学可以在这里获取 https://item.taobao.com/item.htm?id728461040949 配套资料获取https://renesas-docs.100ask.net 瑞萨MCU零基础入门系列教程汇总 https://blog.csdn.net/qq_35181236/article/details/132779862 第21章 事件链接控制器ELC 本章目标 了解ELC基本概念和RA6M5处理器的ELC模块学会使用RASC配置ELC链接不同外设并触发设备工作 21.1 ELC简介 21.1.1 ELC的特征 ELCEvent Link Controller事件链接控制器。它用于链接芯片上两个不同的外设通过外设A的某个中断事件触发外设B去执行某个动作这个过程是通过芯片内部硬件信号的连接完成的不需要占用CPU资源。因而ELC可以帮助开发者完成许多同步触发的工作而不会引起CPU资源的过多浪费。 ELC支持的事件类型多达219种。当产生了一个ELC事件的时候也可以触发激活DTC功能。 21.1.2 ELC的系统框图 ECL的系统框图如下图所示 事件控制器 ELC相关寄存器用户可以配置和观察这些寄存器来调试ELC。 ELC支持连接的事件并不是所有的中断事件都能够用于ELC只有框图中显示的这些中断事件可以。 1.1.1 支持的事件 ELC支持互相连接触发的外设模块见下表 外部中断IRQ触发定时器GPT开始计数定时器开始计数后当计数溢出事件产生时同步触发ADC转换和CTSU的测量模式串口中断触发DTC开启数据传输 这所有的触发操作都是无需CPU干预处理。 21.2 ELC模块的配置 21.2.1 配置ELC模块 ELC本身只是一个连接控制器不涉及双方设备的设置。具体模块的触发条件需要去设置该模块。因而在RASC中ELC的配置很简单只需要在FSP的“Stacks”中添加ELC的Stack即可无需额外配置如下图所示 击“New Stack”后在“System”中找到“Event Link Controller(r_elc)”添加ELC模块即可在用户代码里再去打开、使能它即可。 对于ELC的Stack配置只能设置它的名字使用默认值即可 21.2.2 配置信息解读 使用RASC配置ELC并生成代码后在common_data.c中生成一个elc_instance_t结构体类型的全局变量g_elc它包括ELC控制参数成员、ELC配置信息、ELC控制接口成员。代码如下 const elc_instance_t g_elc {.p_ctrl g_elc_ctrl,.p_api g_elc_on_elc,.p_cfg g_elc_cfg };g_elc_ctrlelc_instance_ctrl_t结构体类型表明ELC的状态原型如下 typedef struct st_elc_instance_ctrl {uint32_t open;void const * p_context; } elc_instance_ctrl_t;g_elc_on_elcELC的控制接口elc_api_t结构体指针指向g_elc_on_elc结构体。g_elc_on_elc在r_elc.c中实现 const elc_api_t g_elc_on_elc {.open R_ELC_Open,.close R_ELC_Close,.softwareEventGenerate R_ELC_SoftwareEventGenerate,.linkSet R_ELC_LinkSet,.linkBreak R_ELC_LinkBreak,.enable R_ELC_Enable,.disable R_ELC_Disable, };这些控制API将会在下一小节进行介绍讲解。 g_elc_cfgELC的控制配置信息它是elc_cfg_t结构体指针此结构体原型如下 typedef struct st_elc_cfg {elc_event_t const link[ELC_PERIPHERAL_NUM]; /// Event link register (ELSR) settings } elc_cfg_t;此结构体在elc_data.c中生成以本章外部中断触发定时器开始计数为例生成的列表内容如下 const elc_cfg_t g_elc_cfg {.link[ELC_PERIPHERAL_GPT_A] ELC_EVENT_ICU_IRQ6, /* ICU IRQ6 (External pin interrupt 6) */.link[ELC_PERIPHERAL_GPT_B] ELC_EVENT_ICU_IRQ1, /* ICU IRQ1 (External pin interrupt 1) */.link[ELC_PERIPHERAL_GPT_C] ELC_EVENT_NONE, /* No allocation */.link[ELC_PERIPHERAL_GPT_D] ELC_EVENT_NONE, /* No allocation */.link[ELC_PERIPHERAL_GPT_E] ELC_EVENT_NONE, /* No allocation */.link[ELC_PERIPHERAL_GPT_F] ELC_EVENT_NONE, /* No allocation */.link[ELC_PERIPHERAL_GPT_G] ELC_EVENT_NONE, /* No allocation */.link[ELC_PERIPHERAL_GPT_H] ELC_EVENT_NONE, /* No allocation */.link[ELC_PERIPHERAL_ADC0] ELC_EVENT_NONE, /* No allocation */.link[ELC_PERIPHERAL_ADC0_B] ELC_EVENT_NONE, /* No allocation */.link[ELC_PERIPHERAL_ADC1] ELC_EVENT_NONE, /* No allocation */.link[ELC_PERIPHERAL_ADC1_B] ELC_EVENT_NONE, /* No allocation */.link[ELC_PERIPHERAL_DAC0] ELC_EVENT_NONE, /* No allocation */.link[ELC_PERIPHERAL_DAC1] ELC_EVENT_NONE, /* No allocation */.link[ELC_PERIPHERAL_IOPORT1] ELC_EVENT_NONE, /* No allocation */.link[ELC_PERIPHERAL_IOPORT2] ELC_EVENT_NONE, /* No allocation */.link[ELC_PERIPHERAL_IOPORT3] ELC_EVENT_NONE, /* No allocation */.link[ELC_PERIPHERAL_IOPORT4] ELC_EVENT_NONE, /* No allocation */.link[ELC_PERIPHERAL_CTSU] ELC_EVENT_NONE, /* No allocation */ };第02行IRQ6触发ELC_GPTA类事件第03行IRQ1触发ELC_GPTB类事件 ELC_GPT_A~H是指ELC允许的GPT事件类型名称如下表所示 21.2.3 API接口及其使用 在上一小节已经了解到ELC的控制接口其原型是elc_api_t结构体如下 typedef struct st_elc_api {fsp_err_t (* open)(elc_ctrl_t * const p_ctrl, elc_cfg_t const * const p_cfg);fsp_err_t (* close)(elc_ctrl_t * const p_ctrl);fsp_err_t (* softwareEventGenerate)(elc_ctrl_t * const p_ctrl, elc_software_event_t event_num);fsp_err_t (* linkSet)(elc_ctrl_t * const p_ctrl, elc_peripheral_t peripheral, elc_event_t signal);fsp_err_t (* linkBreak)(elc_ctrl_t * const p_ctrl, elc_peripheral_t peripheral);fsp_err_t (* enable)(elc_ctrl_t * const p_ctrl);fsp_err_t (* disable)(elc_ctrl_t * const p_ctrl); } elc_api_t;本小节就对这些操作API进行一一介绍讲解。 打开ELC设备 fsp_err_t (* open)(elc_ctrl_t * const p_ctrl, elc_cfg_t const * const p_cfg);p_ctrlelc_ctrl_t结构体类型此结构体实际上是void类型实际会指向elc_instance_ctrl_t结构体全局变量g_elc_ctrlp_cfgelc_cfg_t结构体类型实际会指向elc_cfg_t全局常量g_elc_cfg open函数的主要功能就是将事件连接列表的设置值用来初始化ELC模块。可以参考以下代码来初始化ELC设备 fsp_err_t err g_elc.p_api-open(g_elc.p_ctrl, g_elc.p_cfg); if(FSP_SUCCESS ! err) {printf(Function:%s\tLine:%d\r\n, __FUNCTION__, __LINE__);return; }关闭ELC设备 fsp_err_t (* close)(elc_ctrl_t * const p_ctrl);关闭ELC函数实现的功能比较简单就是将代表ELC的状态成员变量设置为CLOSED并且失能ELC设备 /* Set state to closed */ p_instance_ctrl-open ELC_CLOSED;/* Globally disable the operation of the Event Link Controller */ R_ELC-ELCR ELC_ELCR_ELCON_DISABLE;使能和失能ELC功能 fsp_err_t (* enable)(elc_ctrl_t * const p_ctrl); fsp_err_t (* disable)(elc_ctrl_t * const p_ctrl);只有在使能了ELC的情况下外设模块的事件触发才能生效。而使能、失能ELC实际上就是对ELC的ELCR寄存器进行控制 /* Globally enable ELC function */ R_ELC-ELCR ELC_ELCR_ELCON_ENABLE;/* Globally disable ELC function */ R_ELC-ELCR ELC_ELCR_ELCON_DISABLE;设置事件链接 fsp_err_t (* linkSet)(elc_ctrl_t * const p_ctrl, elc_peripheral_t peripheral, elc_event_t signal);在初始化设置列表之后如果要额外添加事件可以使用这个API。支持的外设列表在r_elc_api.h中的elc_peripheral_t枚举中定义支持的事件信号类型在bsp_elc.h中的elc_event_t枚举定义。 用户可以参考以下代码使用这个函数 fsp_err_t err R_ELC_LinkSet(g_elc_ctrl, ELC_PERIPHERAL_DAC0, ELC_EVENT_ICU_IRQ10); if(FSP_SUCCESS ! err) {printf(Function:%s\tLine:%d\r\n, __FUNCTION__, __LINE__);return; }断开事件链接 fsp_err_t (* linkBreak)(elc_ctrl_t * const p_ctrl, elc_peripheral_t peripheral);断开连接只需要传入需要断开连接的设备序号即可。 件触发产生事件 fsp_err_t (* softwareEventGenerate)(elc_ctrl_t * const p_ctrl, elc_software_event_t event_num);ELC支持的软件触发事件只有两种在r_elc_api.h中定义的elc_software_event_t枚举类型里列出了这2种事件 typedef enum e_elc_software_event {ELC_SOFTWARE_EVENT_0, /// Software event 0ELC_SOFTWARE_EVENT_1, /// Software event 1 } elc_software_event_t;21.3 外部中断触发GPT启停 本实验会使用到按键外部中断、串口的printf和GPT请读者阅读前面的章节参考配置相关外设模块。 21.3.1 设计目的 使用两个外部中断来触发GPT定时器计数的开始和停止让用户了解ELC的使用方法。 21.3.2 模块配置 外部中断 外部中断在FSP的“Pins”中选好ICU的引脚后配置各自的Stack如下图示 本次实验选用的外部中断是IRQ1和IRQ6使用的引脚是P205和P000。通过ELC使用IRQ触发GPT计数是通过内部硬件的信号连接来实现的所以不需要使用外部中断的中断服务函数及其中断回调函数。 LC外设 在前文已经说明ELC的配置除了模块名称外并不需要做额外配置。 GPT定时器 GPT定时器的配置除了通道、周期值、计数类型等常规配置如下图所示 本章的实验还需要配置GPT模块的Input项中关于开启计数触发源和停止计数触发源的设置 对于开启触发源和停止触发源里面的可选项是一样的本次实验使用IRQ6触发定时器开始计数使用IRQ1触发定时器停止计数因而“Start Source”和“Stop Source”的配置如下图所示 21.3.3 驱动程序 外部中断 外部中断IRQ信号会直接链接触发GPT因而只需要在RASC中配置IRQ模块不需要在代码中初始化IRQ。 GPT初始化函数 对于GPT的初始化只需要调用open、enable函数指针 void GPTDrvInit(void) {{fsp_err_t err g_timer0.p_api-open(g_timer0.p_ctrl, g_timer0.p_cfg);if(FSP_SUCCESS ! err)printf(Function:%s\tLine:%d\r\n, __FUNCTION__, __LINE__);}{fsp_err_t err g_timer0.p_api-enable(g_timer0.p_ctrl);if(FSP_SUCCESS ! err)printf(Function:%s\tLine:%d\r\n, __FUNCTION__, __LINE__);} }瑞萨对于GPT的enable函数解释是“Enables external event triggers that start, stop, clear, or capture the counter.”也就是使能外部中断事件触发计数器的开始、停止、清除和捕获。 GPT中断回调函数和溢出等待函数 GPT的中断回调函数只是设置一个溢出标志值函数代码如下 static volatile bool gGPTOverflow false; /* Callback function */ void gpt_timer0_callback(timer_callback_args_t *p_args) {/* TODO: add your own code here */if(p_args-event TIMER_EVENT_CYCLE_END)gGPTOverflow true; }void GPTDrvWaitOverflow(void) {while(!gGPTOverflow);gGPTOverflow false; }ELC初始化函数 对于ELC的初始化只需要调用open、enable函数指针代码如下 void ELCDrvInit(void) {{fsp_err_t err g_elc.p_api-open(g_elc.p_ctrl, g_elc.p_cfg);if(FSP_SUCCESS ! err){printf(Function:%s\tLine:%d\r\n, __FUNCTION__, __LINE__);return;}}{fsp_err_t err g_elc.p_api-enable(g_elc.p_ctrl);if(FSP_SUCCESS ! err){printf(Function:%s\tLine:%d\r\n, __FUNCTION__, __LINE__);return;}} }21.3.4 测试程序 本次实验的测试程序比较简单每次GPT计数溢出后就计数一次串口将计数值打印代码如下 void ELCAppTest(void) {ELCDrvInit();UARTDrvInit();GPTDrvInit();printf(\r\nStart ELC Test!\r\n);uint32_t tick 0;while(1){GPTDrvWaitOverflow();printf(Tick: %d\r, (int)tick);} }21.3.5 测试结果 在hal_entry.c中的hal_entry()函数中调用测试函数将编译出来的二进制文件烧写到板子上运行。按下开发板的按键后就会触发开启定时器开始计数将开发板的P205引脚和GND短接后就会触发定时器停止计数 本章完
http://www.pierceye.com/news/3455/

相关文章:

  • 旅游网站建设的建议可以免费发布招聘网站
  • 通化市建设局网站公关做的好的网站
  • 专业网页制作网站推广公司外贸网站建设公司渠道
  • 南通网站建设贵吗网站建设备案书模板
  • 制作企业网站的新闻控制网站的大量访问
  • 58同城石家庄网站建设什么软件制作网站快
  • 响应式网站什么意思广州模板网站建设价格
  • 什么是网络营销?三门峡做网站优化
  • 网站界面建议wordpress 多站点 合集
  • 成都市建设厅官方网站网站备案授权书怎么填
  • 建一个网站 服务器机房托管价格画册设计报价明细表
  • 天圆地方建筑网站荆州市建设厅网站
  • 天津网站开发技术广东造价信息网
  • 百度网站建设的一般要素电商运营培训课程网站
  • 直播网站建设目的企业工商信息查询
  • org域名做商业网站手机网站模板 网址
  • 建网站申请wordpress上传主题提示要ftp
  • 厦门市同安区建设工程质量安全监督站网站网站建设与管理维护
  • 爱民网站制作微分销登录
  • 团购做的比较好的网站海外短视频平台
  • 做网站网页尺寸是多少悟空crm官网
  • 濮阳创建网站公司网站被百度收录
  • 做网站项目实例软件开发工程师就是程序员吗
  • 网站怎么做的qq邮件订阅315网站专题怎么做
  • wordpress直接上传视频网站免费网页制作模板
  • 河北建设厅注册中心网站首页湖南建设工程招标网
  • 新手做网站看什么书在建立网站站点的过程中
  • 北京怎么做网站加强门户网站建设与管理办法
  • 搭建网站需要做什么网站建设当中的技术解决方案
  • 天猫网站怎么做wordpress一键更新域名插件