Stair56E UART project

This commit is contained in:
2026-08-05 19:07:52 +08:00
parent 7ca1af130d
commit f5654b70cc
2500 changed files with 619007 additions and 282610 deletions
+90
View File
@@ -0,0 +1,90 @@
#include "Includes.h"
typedef unsigned int uint32_t;
#define __write_hw_reg32(reg,val) ((*reg) = (val))
#define CPR_CTLAPBCLKEN_GRCTL ((volatile unsigned *)(0x40000000 + 0x070))
#define CPR_RSTCTL_CTLAPB_SW ((volatile unsigned *)(0x40000000 + 0x100))
#define CPR_RSTCTL_WDTRST_MASK ((volatile unsigned *)(0x40000000 + 0x114))
#define WDT_CR ((volatile unsigned *)(0x40004000 + 0x00))
#define WDT_TORR ((volatile unsigned *)(0x40004000 + 0x04))
#define WDT_CRR ((volatile unsigned *)(0x40004000 + 0x0C))
/* ---------------------------------------------------------------------------------------------------
//看门狗计数器对应的初值
(0x0)00000x FFFF
(0x1)00010x 1FFFF
(0x2)00100x 3FFFF
(0x3)00110x 7FFFF
(0x4)01000x FFFFF
(0x5)01010x 1FFFFF
(0x6)01100x 3FFFFF
(0x7)01110x 7FFFFF
(0x8)10000x FFFFFF----约2S
(0x9)10010x 1FFFFFF----约5S
(0xA)10100x 3FFFFFF----约10S
(0xB)10110x 7FFFFFF----约20S
(0xC)11000x FFFFFFF
(0xD)11010x1FFFFFFF
(0xE)11100x3FFFFFFF
(0xF)11110x7FFFFFFF
----------------------------------------------------------------------------------------------------*/
/* ---------------------------------------------------------------------------------------------------
- 函数名称: xc_wdog_init
- 函数功能: 初始化看门狗
- 函数形参:看门狗计数器重装值
- 创建日期: 2019-04-22
----------------------------------------------------------------------------------------------------*/
void xc_wdog_init(uint32_t counter_value)
{
__write_hw_reg32(CPR_CTLAPBCLKEN_GRCTL,0x10001); //WDT_PCLK 时钟使能
__write_hw_reg32(CPR_RSTCTL_CTLAPB_SW,0x40000); //WDT 模块软复位
__write_hw_reg32(CPR_RSTCTL_CTLAPB_SW,0x40004);
__write_hw_reg32(CPR_RSTCTL_WDTRST_MASK,0x20);//屏蔽 WDT 引起的 M0 的软复位,不屏蔽 WDT 引起的系统的软复位
__write_hw_reg32(WDT_CR,0x7);// WDT 使能 ,M0 复位信号,维持4个 pclk 时钟周期,工作模式 0,直接产生复位信号送给 CPR
__write_hw_reg32(WDT_TORR,counter_value);
__write_hw_reg32(WDT_CRR,0x76); //重启计数器
}
/* ---------------------------------------------------------------------------------------------------
- 函数名称: xc_wdog_feed
- 函数功能: 喂看门狗
- 函数形参:无
- 创建日期: 2019-04-22
----------------------------------------------------------------------------------------------------*/
void xc_wdog_feed(void)
{
__write_hw_reg32(WDT_CRR,0x76); //重启计数器
}
extern void test_wdog(void)
{
uint8_t count=0;
xc_wdog_init(0xA);
//__write_hw_reg32(CPR_RSTCTL_WDTRST_MASK,0x3);//屏蔽看门狗复位
printf("wdog reset\n ");
while(1)
{
printf("WDT_CCVR=%d\n",*WDT_CCVR);
printf("WDT_STAT=%d\n",*WDT_STAT);
for(uint32_t i=0; i<0x120000; i++);
for(uint32_t i=0; i<0x120000; i++);
for(uint32_t i=0; i<0x120000; i++);
//不喂狗时可以测试几秒钟看门狗复位
if(5==count)
{
//xc_wdog_init(0xA);
//xc_wdog_feed();//此处不喂狗会引起系统复位
count=0;
}
else
{
count++;
}
}
}