OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 4066|回复: 3

在uscos-ii 2.91中加入了wwdg ,WWDG_Init(0x7f,0x5f,WWDG_Prescaler_8);就不正常,一开机就复位

[复制链接]

3

主题

8

帖子

0

精华

初级会员

Rank: 2

积分
52
金钱
52
注册时间
2015-9-2
在线时间
1 小时
发表于 2015-9-9 12:28:31 | 显示全部楼层 |阅读模式
5金钱
这是WWdg代码:

void WWDG_Init(u8 tr,u8 wr,u32 fprer)

RCC_APB1PeriphClockCmd(RCC_APB1Periph_WWDG, ENABLE);  //   WWDG时钟使能

WWDG_SetPrescaler(fprer);////设置IWDG预分频值

WWDG_SetWindowValue(wr);//设置窗口值

WWDG_Enable(tr); //使能看门狗 , 设置 counter .                  

WWDG_ClearFlag();

WWDG_NVIC_Init();//初始化窗口看门狗 NVIC

WWDG_EnableIT(); //开启窗口看门狗中断

//重设置WWDG计数器的值
void WWDG_Set_Counter(u8 cnt)
{
    WWDG_Enable(cnt);  
}
//窗口看门狗中断服务程序
void WWDG_NVIC_Init()
{
NVIC_InitTypeDef NVIC_InitStructure;
NVIC_InitStructure.NVIC_IRQChannel = WWDG_IRQn;    //WWDG中断
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 2;   //抢占2,子优先级3,组2
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1; //抢占2,子优先级3,组2
 NVIC_InitStructure.NVIC_IRQChannelCmd=ENABLE; 
NVIC_Init(&NVIC_InitStructure);//NVIC初始化
}

WWDG_Init(0x7f,0x5f,WWDG_Prescaler_8);//初始化时调用


//中断函数
void WWDG_IRQHandler(void)
{
u8 tr,wr;
OS_CPU_SR cpu_sr=0;
    OS_ENTER_CRITICAL(); /* Tell uC/OS-II that we are starting an ISR */
    OSIntNesting++;
    OS_EXIT_CRITICAL();
   
   wr=WWDG->CFR&0x7f;
   tr=WWDG->CR&0x7f; 
   if(tr<wr)WWDG_SetCounter(0x7F);; //只有TR小于WR才能喂狗  在窗口内
  WWDG_ClearFlag();
OSIntExit();         /* Tell uC/OS-II that we are leaving the ISR  */
}

在任务初始化后调用:WWDG_Init(0x7f,0x5f,WWDG_Prescaler_8);//初始化时调用
程序一上电就会不断复位,请问原子哥,在哪里更改一下,可以让ucos-ii 中加入 Wwdg不会复位?




正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2015-9-9 23:51:57 | 显示全部楼层
重点改WWDG_IRQHandler,你试试不加ucosii相关的东西,是不是可以正常运行下去
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

3

主题

8

帖子

0

精华

初级会员

Rank: 2

积分
52
金钱
52
注册时间
2015-9-2
在线时间
1 小时
 楼主| 发表于 2015-9-10 09:08:10 | 显示全部楼层
不加是ok的,加入了,就自动复位,main中代码如下:

int main(void)
{
RCC_Configuration();
SysTick_CLKSourceConfig(SysTick_CLKSource_HCLK_Div8);
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); //设置NVIC中断分组2:2位抢占优先级,2位响应优先级

delay_init(72);      //延时函数初始化
uart1_init(2400);
printf("hello\r\n");
while(1)

OSTimeDlyHMSM(0,0,0,100);
PAout(5)=!PAout(5);
}

OSInit();
 OSTaskCreate(TaskStart, //task pointer
(void *)0, //parameter
(OS_STK *)&TASK_START_STK[START_STK_SIZE-1], //task stack top pointer
START_TASK_PRIO ); //task priority
OSStart();
return 0;

}
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2015-9-10 23:02:43 | 显示全部楼层
回复【3楼】logan:
---------------------------------
wwdg比较奇葩,稍微改一下就出问题.调整下顺序吧.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-17 11:50

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表