CosyOS 发表于 2024-6-10 17:55:15

本帖最后由 CosyOS 于 2024-6-10 17:59 编辑

凌云通 发表于 2024-6-10 14:38
首次尝试采用CosyII OS建立了一个项目,一共3个任务,运行后,发现经常性地复位、重启。
怀疑看门狗问题, ...
在滴答钩子中喂狗的确是一个好方法,这样喂狗周期就是滴答周期。
在说明文档中并未提及相关内容,但这确实是 CosyOS 的推荐方法。
按理来说,这样操作是不会有问题的,因为滴答钩子在每个系统滴答周期都会被及时调用。
我想可能的原因有两个(纯理论分析):
1、看门狗定时器溢出时间设置有误;
2、某个临界段(任务临界区 或 全局临界区)中,代码运行时间 > 看门狗定时器溢出时间。

可先把看门狗定时器溢出时间设置为最大值(n秒),看能否解决问题?
再介绍一下,你的系统滴答周期设置为多少,是1ms吗?
看门狗定时器溢出时间又是多少呢?
如果关掉看门狗,系统运行情况看似正常吗?



凌云通 发表于 2024-6-10 22:08:59


看门狗相关信息如下:
1. 在syscfg.h中
#define SYSCFG_SYSCLK                  24000000
#define SYSCFG_SYSTICKCYCLE            1000

2.在init_hook.c中
void init_hook(void)
{
WDT_CONTR = 0x27;    //使能看门狗,溢出时间约为8s
}

3.在tick_hook.c中
void tick_hook(void) MCUCFG_USING
{
if(s_sign_every.second) {
      s_sign_every.second = false;
      if(1) { /* 每秒钟执行一次(每秒,first tick)*/
         WDT_CONTR = 0x34; // 喂狗
}

凌云通 发表于 2024-6-10 22:10:10

1. 在syscfg.h中
#define SYSCFG_SYSCLK                  24000000
#define SYSCFG_SYSTICKCYCLE            1000

2.在init_hook.c中
void init_hook(void)
{
WDT_CONTR = 0x27;    //使能看门狗,溢出时间约为8s
}

3.在tick_hook.c中
void tick_hook(void) MCUCFG_USING
{
if(s_sign_every.second) {
      s_sign_every.second = false;
      if(1) { /* 每秒钟执行一次(每秒,first tick)*/
         WDT_CONTR = 0x34; // 喂狗
}

凌云通 发表于 2024-6-10 22:11:14

看门狗相关信息与代码如下(剔除之后,反而正常运行):

凌云通 发表于 2024-6-10 22:12:05

相关代码如下(剔除之后,反而正常)
1. 在syscfg.h中
#define SYSCFG_SYSCLK                  24000000
#define SYSCFG_SYSTICKCYCLE            1000

2.在init_hook.c中
void init_hook(void)
{
WDT_CONTR = 0x27;    //使能看门狗,溢出时间约为8s
}

3.在tick_hook.c中
void tick_hook(void) MCUCFG_USING
{
if(s_sign_every.second) {
      s_sign_every.second = false;
      if(1) { /* 每秒钟执行一次(每秒,first tick)*/
           WDT_CONTR = 0x34; // 喂狗
}

Yang.Lian 发表于 2024-6-10 22:13:16

凌云通 发表于 2024-6-10 22:10
1. 在syscfg.h中
#define SYSCFG_SYSCLK                  24000000
#define SYSCFG_SYSTICKCYCLE      ...

s_sign_every 是软件RTC的功能,你要启用软件RTC才行吧

不然直接这样也是很香
void tick_hook(void) MCUCFG_USING
{
   WDT_CONTR=0x34;
   // 其他代码

CosyOS 发表于 2024-6-10 23:22:32

对的,每秒钟...喂一次狗,需要开启软件RTC。
也可每滴答喂狗,就不需要软件RTC了。

STCWORM 发表于 2024-6-11 09:09:48

弱弱地问一下!OS 一般用于那些应用比较好!一般简单的任务似乎要再学一个东西有点耗时间!复杂的应用肯定是有好处的!
不知道这个上手快不?哪里可以完整学习?
谢谢!

STCWORM 发表于 2024-6-11 09:11:43

大家好 STC32G能做视频播放监控之类的吗?

CosyOS 发表于 2024-6-11 10:05:16

STCWORM 发表于 2024-6-11 09:09
弱弱地问一下!OS 一般用于那些应用比较好!一般简单的任务似乎要再学一个东西有点耗时间!复杂的应用肯定 ...

具体应用不好说,但一般RTOS适合应用在具有高实时性要求的实时控制现场。
CosyOS 具有良好的易用性,非常容易上手。
建议你先听一下讲座的第一课(在顶楼有视频回放),便会对 裸机与RTOS的区别、
CosyOS 的应用 有一个初步的了解。并能切实的体验到 CosyOS 的易用性。
页: 64 65 66 67 68 69 70 71 72 73 [74] 75 76 77 78 79 80 81 82 83
查看完整版本: 全局不关总中断的 RTOS,CosyOS-III-V1.2.0, 送 擎天柱-AI8051U转89C52核心板