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 的易用性。