dsp28335关闭看门狗怎么关闭、
时间: 2024-01-14 13:02:35 浏览: 62
关闭dsp28335看门狗的方式为在程序中写入WDCR的值为0x00即可关闭看门狗,代码示例如下:
```
#include "DSP2833x_Device.h"
#include "DSP2833x_Examples.h"
void main(void)
{
InitSysCtrl(); //初始化系统控制器
DisableDog(); //关闭看门狗
//其他代码
}
void DisableDog(void)
{
EALLOW;
SysCtrlRegs.WDCR= 0x0068; //禁用看门狗
EDIS;
}
```
相关问题
dsp28335的看门狗程序及注释,并验证这套程序
DSP28335是德州仪器公司(TI)生产的一款数字信号处理器,其内置看门狗模块可以用于系统的故障监测和保护。
以下是一个DSP28335的看门狗程序及注释,您可以参考并验证该程序。
```c
#include "DSP2833x_Device.h" // DSP28335设备头文件
// 看门狗初始化函数
void InitWatchdog(void)
{
EALLOW;
SysCtrlRegs.WDCR= 0x0028; // 看门狗控制寄存器: 0x0028 开启看门狗,不允许中断,计数器重载值为 0x7FFF
EDIS;
}
// 喂狗函数
void ServiceDog(void)
{
EALLOW;
SysCtrlRegs.WDKEY = 0x0055; // 喂狗操作:写入 0x0055
SysCtrlRegs.WDKEY = 0x00AA; // 再次写入 0x00AA
EDIS;
}
// 主函数
void main(void)
{
InitWatchdog(); // 初始化看门狗
while(1)
{
ServiceDog(); // 喂狗
// TODO: 添加需要执行的代码
}
}
```
注释:
1. 在 `InitWatchdog` 函数中,使用 `SysCtrlRegs.WDCR` 寄存器初始化看门狗模块。具体地,`WDCR` 的最高位为 1 表示开启看门狗,第 5 位为 0 表示不允许中断,计数器重载值为 0x7FFF,即当计数器的值达到 0x7FFF 时就会触发看门狗中断。
2. `ServiceDog` 函数用于喂狗,每次执行该函数都会重置看门狗计数器,避免计数器到达重载值而触发看门狗中断。具体地,写入 0x0055 和 0x00AA 两个值表示喂狗操作,如果写入其他值,则会触发看门狗中断。
3. 在 `main` 函数中,先调用 `InitWatchdog` 函数对看门狗进行初始化,然后进入一个无限循环,每次循环都调用 `ServiceDog` 函数喂狗。在循环体中,可以添加需要执行的代码。
要验证该程序的正确性,可以通过以下两种方法:
1. 在程序中加入故障模拟代码,例如故意让程序陷入死循环或者让某个变量溢出等,观察是否会触发看门狗中断。如果中断触发了,说明看门狗模块正常工作。
2. 使用示波器观察看门狗输出引脚的电平变化,如果看门狗正常工作,该引脚的电平会周期性地变化。
希望能对您有所帮助!
请你写一套dsp28335的看门狗程序并调用程序使其正常运行
好的,下面是一套基本的DSP28335看门狗程序:
```c
#include "DSP2833x_Device.h"
#include "DSP2833x_Examples.h"
interrupt void WDOG_ISR(void);
void InitWatchdog(void)
{
EALLOW; // 使能写入保护模式
SysCtrlRegs.WDCR= 0x002F; // 禁用看门狗,设置最大时间间隔
SysCtrlRegs.WDCR= 0x0028; // 使能看门狗,设置时间间隔为2ms
EDIS; // 禁止写入保护模式
PieCtrlRegs.PIEIER1.bit.INTx7 = 1; // 使能看门狗中断
IER |= M_INT1; // 使能中断
}
interrupt void WDOG_ISR(void)
{
// 在这里编写看门狗中断服务程序
// 可以添加任何你想要的操作
// 但是记住一定要喂狗,否则会重启系统
// 喂狗的方式为写入任意值到WDCR寄存器
// 例如:SysCtrlRegs.WDCR = 0x002F;
// 这里我们仅仅清除中断标志位
PieCtrlRegs.PIEACK.all |= PIEACK_GROUP1;
}
void main(void)
{
InitSysCtrl();
InitWatchdog();
EINT; // 使能全局中断
ERTM; // 使能全局中断
while(1)
{
// 在这里添加主程序
// 例如,可以添加一些有用的任务
// 但不要忘记喂狗
SysCtrlRegs.WDCR = 0x002F;
}
}
```
这是一个基本的看门狗程序,它会在每2ms产生一个中断,你可以在中断服务程序中添加任何你想要的操作。在主程序中,你需要定期喂狗以防止系统重启。