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

Z20K118库中寄存器及其库函数封装-WDOG库

1:看门狗控制和状态寄存器 (WDOG)

10个位域。 

1-1 

static inline ResultStatus_t WDOG_WaitConfigCompleted(void)

 等待看门狗配置更新完成。其他需要等待完成的库函数内部已经完成调用封装,用户无需使用,只需了解。1个位域。经典while计数循环等待,每次计数判断本寄存器标志位CFGUF是否置1,置1跳出循环表示配置更新完成。

1-2

ResultStatus_t WDOG_Init(const WDOG_Config_t *ptWDOGInitConfig)

看门狗初始化配置。配置本寄存器6个位域,再配置TMO(单位域)和WIN(单位域)的各1个位域, 本寄存器:1.是否进入测试验证WDOG功能。 2.4种时钟源选择 3.窗口阈值使能 4.在停止模式下使能 5.在等待模式下使能 6.在调试框架下使能,调试框架比正常框架多一个开关位。TMO寄存器:7.配置看门狗最大计数值 WIN寄存器:8.配置窗口看门狗窗口计数值。

1-3

ResultStatus_t WDOG_Enable(void)

使能看门狗。1个。

1-4

ResultStatus_t WDOG_Disable(void)

失能看门狗。1个。

1-5

FlagStatus_t WDOG_GetConfigAllowStatus(void)

读取看门狗是否可二次配置的信息。读取本寄存器CFGUA位,该位表示在不进行复位的情况下软件是否能重新配置看门狗。当其值为0时,看门狗初始化完不能再进行配置。其值为1时,若CNT寄存器成功写入解锁序列则可以重新配置看门狗。

1-6 

ResultStatus_t WDOG_ConfigAllowControl(ControlState_t allow)

配置看门狗能否二次配置。1个位域,根据参数设置CFGUA位 (参考1-5)。

1-7

ResultStatus_t WDOG_WindowModeControl(ControlState_t winEnable)

看门狗窗口阈值使能。配置1个位域。

ResultStatus_t WDOG_SetClockSource(WDOG_ClkSource_t clkSource)

设置看门狗时钟源。根据参数配置1个位域CLKS,4种时钟源选择。

1-9

ResultStatus_t WDOG_StopModeControl(ControlState_t cmd)

停止模式下使能看门狗。根据参数配置一个位域。

1-10

ResultStatus_t WDOG_WaitModeControl(ControlState_t cmd)

待机模式下使能看门狗。根据参数配置一个位域。  

1-11

ResultStatus_t WDOG_DebugModeControl(ControlState_t cmd)

调试框架下使能看门狗。根据参数配置一个位域。   

1-12

ResultStatus_t WDOG_SetTestMode(WDOG_TestMode_t testMode)

测试验证设置。根据参数配置一个位域TSTM。  该位域有多种配置,可单独使能4字节的CNT和TMO的任意字节进行比较,也可以全部使能,用于测试各字节WDOG功能是否正常。

1-13

WDOG_TestMode_t WDOG_GetTestMode(void)

获取测试模式的配置。 

1-14

FlagStatus_t WDOG_GetConfigCompletedStatus(void)

读取看门狗配置是否完成。1个。读取本寄存器CFGUF位。

1-15

FlagStatus_t WDOG_GetLockStatus(void)

读取看门狗的寄存器是否锁定。1个。读取本寄存器UNLKF位。 

1-16

IntStatus_t WDOG_GetIntStatus(WDOG_INT_t intType)

获取看门狗复位前中断标志位。 1个位域。参数虽然参数为2值枚举,但在本芯片的WDOG中只有一种中断,所以只有一种中断标志位,所以2个值都只能读取触发复位前中断。

1-17

ResultStatus_t WDOG_ClearIntStatus(WDOG_INT_t intType)

清除看门狗复位前中断标志位。1个。同1-16。

1-18

ResultStatus_t WDOG_IntMask(WDOG_INT_t intType, IntMask_t intMask)

遮罩复位前中断标志位。1个。根据intMask将标志位设0或者1。 

 2:看门狗计数寄存器(WDOG)

 1个位域,CNT。此寄存器用于读取看门狗计数器的值。只有在以下两种特殊情况才能进行写入操作:1.刷新序列:将寄存器的当前值置0。按顺序在本寄存器写入(0xA0C4B1D6, 0x1E0D0C7B)两个32位值,则硬件电路会将本寄存器的的值置0。2.解锁序列:将WDOG所有寄存器解锁。WDOG寄存器默认全部锁定。按顺序在本寄存器写入(0xB0D9A1C4, 0x1A1E3B0F)两个32位值,即可解锁WDOG所有寄存器。2种写入操作必须在32个时钟周期内完成,否则看门狗将会产生一次复位事件。配置操作需要在128个时钟周期内完成,128时钟周期后WDOG所有寄存器会再次锁定。

2-1  

static void WDOG_REFRESH_COUNT(void) 

汇编函数。刷新看门狗计数值,将其置0。解析如下:

ARM 架构要求 PUSH/POP 指令中寄存器列表按编号顺序书写(如 {R0,R1,R2}),但硬件实际执行时会自动按以下规则处理:PUSH: 先压入高编号寄存器(R12→R0),POP:先弹出低编号寄存器(R0→R12)。

 2-2

static inline void WDOG_UNLOCK_CONFIG(void)

 汇编函数。解锁看门狗计数器,使其可以重新配置。解析参考2-1。

2-3 

void WDOG_Refresh(void)

 刷新看门狗计数值。对2-1汇编函数的封装。 

2-4

uint32_t WDOG_GetCounter(void)

获取看门狗当前计数值。 

3:看门狗超时寄存器 (WDOG)

1个位域,用于配置看门狗计数器最大值。看门狗计数器CNT会实时与超时值TMO进行比较,一旦CNT达到TMO,则会产生一个复位事件。为了平衡一次测试的覆盖范围和时间,建议在任何测试模式下将TMO值设置为0XFFFFFFFF。 

3-1 

ResultStatus_t WDOG_Init(const WDOG_Config_t *ptWDOGInitConfig)

即1-2函数。 

3-2

ResultStatus_t WDOG_SetTimeoutValue(uint32_t timeoutValue)

设置看门狗超时值。根据配置1个位域。

3-3

uint32_t WDOG_GetTimeoutValue(void)

读取看门狗超时值。 

4:看门狗窗口寄存器 (WDOG)

1个位域,用于配置看门狗的窗口值。 仅当看门狗窗口功能开启(WDOG_CS[WINE]=1b)生效,当计数值大于窗口值WIN而小于超时值TMO时喂狗(刷新refresh)操作才能生效,否则产生复位事件。

4-1 

ResultStatus_t WDOG_Init(const WDOG_Config_t *ptWDOGInitConfig)

即1-2函数。

4-2

ResultStatus_t WDOG_SetWindowValue(uint32_t windowValue)

设置看门狗窗口值,根据参数配置1个位域。 

4-3

uint32_t WDOG_GetWindowValue(void)

读取看门狗窗口值。

X:中断通用函数

x-1 

void WDOG_InstallCallBackFunc(WDOG_INT_t intType, isr_cb_t *cbFun)

将用户的中断功能函数与系统的中断驱动处理函数连接。 

 x-2

void WDOG_DriverIRQHandler(void);

产生中断时进入本函数,通过X-1回调函数的连接调用用户的中断功能函数 

http://www.xdnf.cn/news/1231687.html

相关文章:

  • 深入 Go 底层原理(十):defer 的实现与性能开销
  • hcip---ospf知识点总结及实验配置
  • 淘宝获取商品SKU详情API接口操作指南
  • Python爬虫实战:研究SimpleCV技术,构建图像获取及处理系统
  • 注意点:不同对象(更准确地说,不同类型/类)的魔法方法(Magic Methods,也叫特殊方法,以双下划线`__`开头和结尾)通常是不一样的。
  • 字节Seed发布扩散语言模型,推理速度达2146 tokens/s,比同规模自回归快5.4倍
  • 深入 Go 底层原理(三):Goroutine 的调度策略
  • [论文阅读] 人工智能 + 软件工程 | GitHub Marketplace中CI Actions的功能冗余与演化规律研究
  • Text2SQL:如何通过自然语言直接获取数据,打破技术壁垒?
  • 【Android】通知
  • Docker 的网络模式
  • 红黑树(RBTree)
  • 【LeetCode 热题 100】(四)子串
  • 前端-移动Web-day3
  • 云环境K8s集群WebSocket连接失败解决方案
  • 【REACT18.x】使用vite创建的项目无法启动,报错TypeError: crypto.hash is not a function解决方法
  • 基于 LightGBM 的二手车价格预测
  • GaussDB having 的用法
  • 图像加密学习日志————论文学习DAY4
  • 分布式事务----spring操作多个数据库,事务以及事务回滚还有用吗
  • 机械臂的轨迹生成的多种方案
  • Jupyter notebook如何显示行号?
  • MFC 实现托盘图标菜单图标功能
  • NCV8402ASTT1G自保护N沟道功率MOSFET安森美/ONSEMI 过流过温保护汽车级驱动NCV8402ASTT1
  • 从基础功能到自主决策, Agent 开发进阶路怎么走?
  • 【计算机网络】Socket网络编程
  • Android 15 限制APK包手动安装但不限制自升级的实现方案
  • 断路器瞬时跳闸曲线数据获取方式
  • Javaweb————Apache Tomcat服务器介绍及Windows,Linux,MAC三种系统搭建Apache Tomcat
  • 嵌入式第十八课!!数据结构篇入门及单向链表