加入星计划,您可以享受以下权益:

  • 创作内容快速变现
  • 行业影响力扩散
  • 作品版权保护
  • 300W+ 专业用户
  • 1.5W+ 优质创作者
  • 5000+ 长期合作伙伴
立即加入
  • 正文
  • 推荐器件
  • 相关推荐
  • 电子产业图谱
申请入驻 产业图谱

单片机中断这样配置,是不更简单?

06/02 10:25
1582
阅读需 7 分钟
加入交流群
扫码加入
获取工程师必备礼包
参与热点资讯讨论

微信公众号 | strongerHuang

一些小伙伴觉得单片机入门太难了,又要懂原理图、又要懂寄存器、还要学编程语言......

其实,现在入门比我们之前学习单片机要简单多了,我们那会儿网络还不这么发达,网上教程几乎很少,再次,就是现在各种配置工具,只需要动动鼠标就能创建工程,随便写两段代码,就能让单片机跑起来了。

即便是现在单片机寄存器越来越多、功能模块也越来越多,但现在工具越来越强了啊,不用你一步一步移植代码了。

这里结合瑞萨e2 studio工具,以及RA8D1单片机,配置一个按键中断给大家看看,你会发现其实很简单。

准备工作

开发RA8D1单片机需要提前安装好软件工具,还有准备好RA8板卡以及下载调试器

1、下载安装集成开发环境

开发瑞萨RA8系列单片机的工具有很多,常见的主要是:e2 studio一站式服务工具RASC + Keil,或RASC + IAR

推荐大家使用瑞萨官网的 e2 studio 一站式服务工具。

2、准备硬件板卡

本教程就使用瑞萨CPKCOR_RA8D1B评估板,这块板卡集成了J-link,我们只需要用一根线连接电脑即可下载调试。

e2s配置按键中断

e2 studio可以理解为包含单片机底层配置工具、编辑器、编译器、调试器等多种功能为一体的一站式服务工具,和其他一些MCU厂商的“可视化配置工具”类似,只需要动动鼠标,就能快速创建瑞萨单片机软件工程。

我们这里配置一个LED翻转(亮灭)+一个按键(Key)中断:按键按一次,LED翻转一下。

1、基于e2s快速创建软件工程模板

打开e2s,文件 -> 新建 -> 瑞萨C/C++项目 -> Renesas RA:

输入工程名称,比如我们输入RA8D1_KEY:

选择单片机型号,比如R7FA8D1BHEC:

选择Non-TrustZone项目工程:

选择Executable

选择【Bare Metal-Minimal】,然后点击完成,一个项目模板就创建好了。

2、配置LED+KEY中断

在【Pins】选项栏,选中LED引脚,我们这里PA01,配置为输出模式。

然后,在IRQ栏目下,选在对于的中断号,我们使用P008作为按键中断,这里就是IRQ12。

在【Stacks】选项栏,新增一个Stack ->Input -> External lRQ:

然后,设置对应属性:

3、添加代码实现按键中断功能

这里,我们只需要在自带的hal_entry.c源文件下添加少许代码,即可实现按键中断:按键KEY按下,LED翻转

 

#include "hal_data.h"
FSP_CPP_HEADERvoid R_BSP_WarmStart(bsp_warm_start_event_t event);FSP_CPP_FOOTER
/* 定义LED翻转 */#define LED_TOGGLE R_PORT10->PODR ^= 1<<(BSP_IO_PORT_10_PIN_01 & 0xFF)
/*******************************************************************************************************************//** * main() is generated by the RA Configuration editor and is used to generate threads if an RTOS is used.  This function * is called by main() when no RTOS is used. **********************************************************************************************************************/void hal_entry(void){    /* TODO: add your own code here */
    //中断初始化    R_ICU_ExternalIrqOpen(&g_external_irq12_ctrl, &g_external_irq12_cfg);    R_ICU_ExternalIrqEnable(&g_external_irq12_ctrl);
    while(1)    {    }#if BSP_TZ_SECURE_BUILD    /* Enter non-secure code */    R_BSP_NonSecureEnter();#endif}
/* 按键中断回调函数 */void key_external_irq_callback(external_irq_callback_args_t *p_args){    /* 判断中断通道 */    if (12 == p_args->channel)    {        LED_TOGGLE;   // 按键KEY按下,LED翻转    }}

实现效果:最后,这样配置,是不是相对以前那种一步一步移植代码更简单?

推荐器件

更多器件
器件型号 数量 器件厂商 器件描述 数据手册 ECAD模型 风险等级 参考价格 更多信息
CMR200T32768DZFT 1 Citizen Finedevice Co Ltd Parallel - Fundamental Quartz Crystal, 0.032768MHz Nom, SMD, 2 PIN

ECAD模型

下载ECAD模型
$0.77 查看
NC7SZ27P6X 1 Fairchild Semiconductor Corporation NOR Gate, LVC/LCX/Z Series, 1-Func, 3-Input, CMOS, PDSO6, 1.25 MM, EIAJ, SC-88, SC-70, 6 PIN
$0.26 查看
LTC6993HS6-4#WTRMPBF 1 Analog Devices Inc LTC6993HS6-4#WTRMPBF
$3.81 查看

相关推荐

电子产业图谱

作者黄工,从事嵌入式软件开发工作8年有余,高级嵌入式软件工程师,业余维护公众号『strongerHuang』,分享嵌入式软硬件、单片机、物联网等内容。