目录

1.实验目标

2.实验准备

3.硬件分析

4.关键代码

5.主流程图

6. 实验过程

1.实验目标

本次实验设置软件启动WDT,并设置约1秒触发一次WDT计数溢出中断,通过KEY2循环切换工作模式(正常模式、睡眠模式),正常模式LED1闪烁,睡眠模式LED2闪烁。

2.实验准备

硬件搭建:ZW-HC32F460-BZ标准版开发板1套

软件搭建:MDK5.22

3.硬件分析

板载4个LED功能指示灯,LED1、LED2、LED3、LED4分别对应PA5、PA6、PA7、PA8引脚。原理图如下所示。

从图中可以看出引脚输出低电平,对应LED灯被点亮;反之熄灭。

板载4个按键,KEY1、KEY2、KEY3、KEY4分别对应PB11、PE8、PE7、PH2引脚。

4.关键代码

WDT中断初始化函数

函数原型:   void Wdt_Nvic_Init(void)

功能说明:        WDT中断初始化

输入参数:   无

输出参数:   无

特殊备注:   无

void Wdt_Nvic_Init(void){stc_wdt_init_t stcWdtInit;stc_irq_regi_conf_t stcIrqRegiConf;/* configure structure initialization */MEM_ZERO_STRUCT(stcWdtInit);MEM_ZERO_STRUCT(stcIrqRegiConf);/* WDT structure parameters configure */stcWdtInit.enClkDiv = WdtPclk3Div1024;stcWdtInit.enCountCycle = WdtCountCycle65536;stcWdtInit.enRefreshRange = WdtRefresh0To100Pct;                //刷新计数区域0~100%stcWdtInit.enSleepModeCountEn = Enable;                                                    //stcWdtInit.enRequestType = WdtTriggerInterruptRequest;//中断请求WDT_Init(&stcWdtInit);/* Select Int source WDT */stcIrqRegiConf.enIntSrc = INT_WDT_REFUDF;/* Register WDT Int to Vect.No.006 */stcIrqRegiConf.enIRQn = Int006_IRQn;/* Callback function */stcIrqRegiConf.pfnCallback = &Wdt_IrqCallback;/* Registration IRQ */enIrqRegistration(&stcIrqRegiConf);/* Clear pending */NVIC_ClearPendingIRQ(stcIrqRegiConf.enIRQn);/* Set priority */NVIC_SetPriority(stcIrqRegiConf.enIRQn, DDL_IRQ_PRIORITY_DEFAULT);/* Enable NVIC */NVIC_EnableIRQ(stcIrqRegiConf.enIRQn);}WDT中断函数函数原型:   void Wdt_IrqCallback(void)功能说明:        WDT中断函数输入参数:   无输出参数:   无特殊备注:   无static void Wdt_IrqCallback(void){en_flag_status_t enFlagSta;Ddl_Delay1ms(2u);enFlagSta = WDT_GetFlag(WdtFlagCountUnderflow);/* WDT underflow interrupt */if (Set == enFlagSta){WDT_ClearFlag(WdtFlagCountUnderflow);/* Normal mode */if (0u == u8ExIntCnt){LedToggle(LED1);}/* Sleep mode */else{LedToggle(LED2);}}WDT_RefreshCounter();}

5.主流程图

6. 实验过程

【第一步:新建/配置工程】

参见2.2.3节,将工程模板复制到实验目录下,将工程名改为wdt_nvic。

勾选FWLibCfg.h配置中的CLK_EN、EFM_EN、GPIO_EN、PWC_EN、SRAM_EN、UTILITY_EN、EVENT_NMI_SWI_ENWDT_EN选项

【第二步:添加外部中断模块驱动】

本次配置与实验4外部中断实验一致,请自行操作。

【第三步:添加LED模块驱动】

LED驱动及配置与实验1跑马灯实验一致,请自行操作。

【第四步:添加WDT模块驱动】

将wdt_nvic.c和wdt_nvic.h复制到\实验14WDT中断实验\Hardware\Peripheral路径下,同时将wdt_nvic.c添加到工程中Hardware/Peripheral下。

【第五步:初始化编程】

1)添加wdt_nvic.h头文件

在main.c文件中先添加wdt_nvic.h头文件。

#include "wdt_nvic.h"

2)WDT中断初始化

在主函数main中添加WDT中断初始化函数。

Wdt_Nvic_Init();

【第六步:WDT定时中断功能编程】

 while (1){/* Sleep mode */if (1u == u8ExIntCnt){PWC_EnterSleepMd();__WFI();}}

这个变量(u8ExIntCnt)是按键2外部中断记录按键次数的,如果按键按下去一次,则HC32进入到睡眠模式,LED2闪烁。再按一次按键,外部中断会让HC32退出睡眠模式,u8ExIntCnt变量清零,HC32变为正常工作模式,LED1正常模式下闪烁。

【第七步:下载验证】

连接好硬件,编译下载运行该程序,正常工作状态下LED1闪烁,按下按键KEY2,进入睡眠模式,睡眠模式LED2闪烁,再按一次按键KEY2,回到工作状态后LED1闪烁。

华大HC32F460WDT中断实验相关推荐

  1. 华大HC32F460NMI中断实验

    目录 1 实验目标 2 实验准备 3 硬件原理 4 驱动代码 5 主流程图 6 实验过程 1 实验目标 本实验主要通过对外部中断的配置及编程,使用中断的方式实现KEY1控制LED1灯的功能. 2 实验 ...

  2. hal库开启中断关中断_「正点原子NANO STM32开发板资料连载」第十章 外部中断实验...

    1)实验平台:ALIENTEK NANO STM32F411 V1开发板 2)摘自<正点原子STM32F4 开发指南(HAL 库版>关注官方微信号公众号,获取更多资料:正点原子 第十章 外 ...

  3. 一起学mini2440裸机开发(十)--mini2440外部中断实验

    我今天一整天都在试着将TQ2440的那种处理中断的方法(即安装中断向量表)移植到MDK中的mini2440,但是一直没成功,这种方法一直没成功,后来又想,还是先从最简单的开始吧,就是不利用中断向量表, ...

  4. 32 串口波特率_「正点原子FPGA连载」第五章串口中断实验

    1)实验平台:正点原子达芬奇FPGA开发板 2) 摘自[正点原子]达芬奇之Microblaze 开发指南 3)购买链接:https://detail.tmall.com/item.htm?id=624 ...

  5. 单片机原理及其应用——单片机定时器中断实验(八段数码管依次显示0~9数字)

    目录 一.实验要求 二.知识要点 (一)单片机定时器/计数器 (二)相关的特殊功能寄存器 1.工作方式寄存器TMOD 2.定时器/计数器控制寄存器TCON (三)定时器/计数器的工作方式 1.工作方式 ...

  6. 微型计算机原理中断实验,微机原理实验---中断控制实验.doc

    微机原理实验---中断控制实验 深 圳 大 学 实 验 报 告 课程名称: 微机计算机设计 实验项目名称: 8259 中断控制实验 学院: 信息工程学院 专业: 电子信息工程 指导教师: 报告人: 学 ...

  7. [Keil][Verilog][微机原理] 流水灯、存储器、外部中断实验_北京邮电大学计算机原理与应用课程实验报告

    计算机原理与应用实验-流水灯.存储器.外部中断实验 1 实验一 流水灯实验 1.1 实验目的 掌握ARM开发工具的使用. 掌握基本IO的使用. 1.2 实验原理及内容 电路结构图 实现流水灯的电路结构 ...

  8. 计算机系统(1) 实验五 中断实验

    计算机系统(1) 实验五 中断实验 一.实验目的 二.实验背景及要求 (一)实验背景: (二)实验要求:实现三部分程序 1.用户程序: 2.键盘中断处理程序: 3.操作系统使能代码: 三.实验步骤 1 ...

  9. 51单片机 | 外部中断实验

    文章目录 一.外部中断介绍 二.外部中断配置 三.硬件设计 四.软件设计 五.实验现象    51 单片机外部中断有 2 个,外部中断 0 和外部中断 1,它们的使用方法是一样的,所以只要学会一个即可 ...

最新文章

  1. python 轨迹识别
  2. 泛海精灵的用户分析:补充【Song Xie】
  3. 解决Eclipse中文乱码
  4. SpringBoot 2.x 集成 Redis
  5. 【转】 CPU、MCU、MPU、DSP的区别和介绍
  6. TensorFlow11CNN和全卷积神经网络
  7. 【Python】一些容易忽略的知识点
  8. 浪潮服务器 NF 8460M4 的PM8060 RAID卡设置添加热备方法
  9. git使用总结(持续更新,个人总结记录使用)
  10. java gui介绍_IntelliJ IDE 开发Java GUI 入门
  11. 如何迈出客户拜访的第一步
  12. CAD2020软件安装教程【搬运】
  13. [渝粤教育] 天津师范大学 教育心理学(唐卫海) 参考 资料
  14. phpmywind调用方法大全
  15. 渗透测试-----ARP攻击
  16. 阿里面试官鬼得很,问我为什么他们阿里要禁用Executors创建线程池?
  17. opencv 泊松融合
  18. Anker推出Security SmartTrack卡,详谈苹果Find My技术
  19. 【 Kotlin 脚本编程Kotlin Scripting 】Linux Shell 脚本与Kotlin Scripting
  20. 圆上三点求圆心和半径

热门文章

  1. Solr笔记三:Solr数据源配置(JNDI、DIH)及定时重做索引
  2. Android多网络环境(wifi,mobile)下强制在某个网络(mobile)访问服务端以及适配
  3. 计算机如何防止应用被删除,为什么电脑上的软件被自动删了怎么办
  4. 71、基于STM32单片机的颜色识别感应传感器检测系统设计
  5. 撸啊撸,再次撸HashMap源码,踩坑源码中构造方法!!!每次都有收获
  6. 这世界其实挺美好的,能让我心碎
  7. 如何全自动下载知乎上的视频到本地
  8. input checkbox样式美化
  9. 智能硬件安全笔记(6.智能电视盒子安全分析方法)
  10. EWMA之——EWMA指数加权移动平均模型的Java实现