欢迎来到《圣博凯斯》变频供水设备官网
精锐于专业 / 卓然于品质 -- 20年专注于供水行业,缔造至臻品质 -- 服务热线:0731-85783205 18932453205

西门子300plc编程语言_西门子300plc编程实例

00 .目录文章目录00 .目录01 .窗口监控概述02 .硬件设计03 .编程步骤04 .程序示例05 .测试结果06 .附录07 .声明

01 .窗口监控介绍

窗口监视(WWDG )通常用于监视由于外部干扰或意外逻辑条件而导致的APP应用程序脱离正常操作序列而出现的软件故障。 除非倒计时计数器的值在T6位(WWDG-CR的第6位)为0之前刷新,否则看门狗电路在达到预设时间时将发生MCU复位。 在递减计数器达到窗口配置寄存器(WWDG-CFR )的值之前,如果刷新7位递减计数器值(控制寄存器),也会发生MCU复位。 这表明递减计数器必须在有限的时间窗口中刷新。 他们的关系可以在图12.1.1中说明:

在图12.1.1中,T[6:0]是WWDG_CR的后7位,W[6:0]是WWDG-CFR的后7位。 T[6:0]是窗口监视的计数器,W[6:0]是窗口监视的上窗口,并且下窗口的值是固定的(0X40 )。 当窗口监视的计数器刷新到顶部窗口值以外或低于底部窗口值时,将发生复位。

上窗口值(W[6:0] )由用户自行设置,根据实际要求设计窗口值,但请确保窗口值大于0X40。 否则,窗口就不存在了。

看门狗的超时公式如下。

twwdg=(40962^wdgTB) t[5:0]1)/Fpclk1;

其中:

Twwdg:WWDG超时时间(单位为毫秒)。

Fpclk1:APB1的时钟频率(单位为Khz ) )。

WDGTB:WWDG预分频系数

T[5:0] :监视窗口的计数器低6位

02 .硬件设计本实验使用的硬件资源如下:

1 )指示灯DS0和DS1

2 )窗口监控

窗口监视是STM32F4的内部资源,仅通过软件设置即可正常工作。

03 .编程步骤1) 使能 WWDG 时钟

wdg与IWDG不同,IWDG有自己的32Khz时钟,没有启用问题。 WWDG使用的是PCLK1时钟,因此必须首先启用时钟。

RCC _ AP B1 periphclockcmd (RCC _ AP B1 per iph _ wwdg,ENABLE ); //WWDG时钟使能2) 设置窗口值和分频数

设定窗口值的函数如下。

voidwwdg _ setwindowvalue (uint8_ twindowvalue; 该函数的一个条目参数是窗口值,很容易理解。

设定分频数的函数如下。

voidwwdg _ set prescaler (uint 32 _ tw wdg _ prescaler; 此函数只有一个入口参数:分频值。

3) 开启 WWDG 中断并分组

打开WWDG中断的函数如下。

WWDG_EnableIT (; //打开窗口监视中断,然后配置中断优先级,但这里不重复。 NVIC_Init ) )函数就可以了。

4) 设置计数器初始值并使能看门狗

这个步骤是由库函数中的函数实现的。

voidwwdg_enable(uint8_tcounter ); 该函数在设定计数器初始值的同时,启用窗口监视。

库函数还提供了用于设置计数器值的独立函数。

voidwwdg _ set counter (uint8_ t counter;5) 编写中断服务函数

最后,还是为窗口监视创建中断服务函数。 用这个函数喂狗。 请快点喂狗。 否则,当窗口看门狗计数器的值减少到0X3F时,将引起软复位。 在中断服务函数中也清空状态寄存器的EWIF位。

04 .程序示例wwdg.h

# ifndef _ wwdg _ h _ # define _ _ wwdg _ h _ # include ' sys.h ' /初始化函数voidwwdg_init(8tr、u8 wr、u32 //中断处理# endif/* _ wwdg _ h _ */http://www.Sina.com /

# include ' wwdg.h ' # include ' led.h ' /保存wwdg计数器的设置值默认为最多. u8 WWDG_CNT=0X7F; //初始化函数//tr计数器的值//wr窗口值//fprer预分频值voidwwdg_init(U8tr、u8 wr、u32fp rer (nvic _ inittypedefnvic _ init strer 启用WWDG时钟RCC _ AP B1 periphclockcmd (RCC _ AP B1 per iph _ wwdg,启用); //设置预分频wwdg_setprescaler(FPrer ); //设置窗口值wwdg_setwindowvalue(wrwwdg_CNT )//启用看门狗wwdg_enable(wwdg_CNT ); //中断nvic _ init struct.nvic _ IRQ channel=wwdg _ irqn; nvic _ init struct.nvic _ irqchannelcmd=enable; nvic _ init struct.nvic _ irqchannelpreemptionpriority=2; nvic _ init struct.nvic _ irqchannelsubpriority=2; nvic_init(nvic_initstruct; //清除早期唤醒中断标志位WWDG_ClearFlag (; //打开早期唤醒中断WWDG_EnableIT; //中断处理函数voidwwdg_IRQHandler(void )//早期唤醒中断标志WWDG_ClearFlag ); wdg_setcounter(wwdg_CNT; LED2=! LED2; } main.c

# include ' sys.h ' # include ' delay.h ' # include ' usart.h ' # include ' led.h ' # include ' BEP.h ' delay_init(168; LED_Init (; KEY_Init (; LED1=0; LED2=0; elay_ms(300; wdg_init(0x7f,0X5F,WWDG_Prescaler_8); //计数器值为7f,窗口寄存器为5f,分频为8瓦时(1) {LED1=1; }05 .测试结果显示,DS0点亮后立即熄灭,之后DS1继续闪烁。 一秒钟闪烁20次左右。

06 .附录wwdg.c

URL:【STM32】STM32系列教程总结

07 .声明本教程参考了正点原子《STM32 F4 开发指南》

猜你喜欢

  • 欧姆龙plc软件安装教程_欧姆龙plc

    使用欧姆龙可编程控制器编程软件CX-程序员简介我们打开欧姆龙CX-P软件,显示如下图。整体感觉清爽简约,但功能很强大。软件屏幕从上到下分为标题栏、菜单栏、工具栏、工程编程窗口和底部信息栏。我们点击工具栏上的。图标,可以新建一个项目;单击工具栏中的。图标,您可以打开一个旧项目。工具栏图标的功能,只需将鼠标放在图标上即可

  • 西门子300plc怎么编译_西门子300plc编程实例

    00.目录文章目录00.目录01.窗口监控概述02.硬件设计03.编程步骤04.程序示例05.测试结果06.附录07.声明01.窗口监控介绍窗口监视(WWDG)通常用于监视由于外部干扰或意外逻辑条件而导致的APP应用程序脱离正常操作序列而出现的软件故障。除非倒计时计数器的值在T6位(WWDG