歡迎來(lái)到《圣博凱斯》變頻供水設(shè)備官網(wǎng)
精銳于專業(yè) / 卓然于品質(zhì) -- 20年專注于供水行業(yè),締造至臻品質(zhì) -- 服務(wù)熱線:0731-85783205 18932453205

西門(mén)子300plc編程語(yǔ)言_西門(mén)子300plc編程實(shí)例

00 .目錄文章目錄00 .目錄01 .窗口監(jiān)控概述02 .硬件設(shè)計(jì)03 .編程步驟04 .程序示例05 .測(cè)試結(jié)果06 .附錄07 .聲明

01 .窗口監(jiān)控介紹

窗口監(jiān)視(WWDG )通常用于監(jiān)視由于外部干擾或意外邏輯條件而導(dǎo)致的APP應(yīng)用程序脫離正常操作序列而出現(xiàn)的軟件故障。 除非倒計(jì)時(shí)計(jì)數(shù)器的值在T6位(WWDG-CR的第6位)為0之前刷新,否則看門(mén)狗電路在達(dá)到預(yù)設(shè)時(shí)間時(shí)將發(fā)生MCU復(fù)位。 在遞減計(jì)數(shù)器達(dá)到窗口配置寄存器(WWDG-CFR )的值之前,如果刷新7位遞減計(jì)數(shù)器值(控制寄存器),也會(huì)發(fā)生MCU復(fù)位。 這表明遞減計(jì)數(shù)器必須在有限的時(shí)間窗口中刷新。 他們的關(guān)系可以在圖12.1.1中說(shuō)明:

在圖12.1.1中,T[6:0]是WWDG_CR的后7位,W[6:0]是WWDG-CFR的后7位。 T[6:0]是窗口監(jiān)視的計(jì)數(shù)器,W[6:0]是窗口監(jiān)視的上窗口,并且下窗口的值是固定的(0X40 )。 當(dāng)窗口監(jiān)視的計(jì)數(shù)器刷新到頂部窗口值以外或低于底部窗口值時(shí),將發(fā)生復(fù)位。

上窗口值(W[6:0] )由用戶自行設(shè)置,根據(jù)實(shí)際要求設(shè)計(jì)窗口值,但請(qǐng)確保窗口值大于0X40。 否則,窗口就不存在了。

看門(mén)狗的超時(shí)公式如下。

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

其中:

Twwdg:WWDG超時(shí)時(shí)間(單位為毫秒)。

Fpclk1:APB1的時(shí)鐘頻率(單位為Khz ) )。

WDGTB:WWDG預(yù)分頻系數(shù)

T[5:0] :監(jiān)視窗口的計(jì)數(shù)器低6位

02 .硬件設(shè)計(jì)本實(shí)驗(yàn)使用的硬件資源如下:

1 )指示燈DS0和DS1

2 )窗口監(jiān)控

窗口監(jiān)視是STM32F4的內(nèi)部資源,僅通過(guò)軟件設(shè)置即可正常工作。

03 .編程步驟1) 使能 WWDG 時(shí)鐘

wdg與IWDG不同,IWDG有自己的32Khz時(shí)鐘,沒(méi)有啟用問(wèn)題。 WWDG使用的是PCLK1時(shí)鐘,因此必須首先啟用時(shí)鐘。

RCC _ AP B1 periphclockcmd (RCC _ AP B1 per iph _ wwdg,ENABLE ); //WWDG時(shí)鐘使能2) 設(shè)置窗口值和分頻數(shù)

設(shè)定窗口值的函數(shù)如下。

voidwwdg _ setwindowvalue (uint8_ twindowvalue; 該函數(shù)的一個(gè)條目參數(shù)是窗口值,很容易理解。

設(shè)定分頻數(shù)的函數(shù)如下。

voidwwdg _ set prescaler (uint 32 _ tw wdg _ prescaler; 此函數(shù)只有一個(gè)入口參數(shù):分頻值。

3) 開(kāi)啟 WWDG 中斷并分組

打開(kāi)WWDG中斷的函數(shù)如下。

WWDG_EnableIT (; //打開(kāi)窗口監(jiān)視中斷,然后配置中斷優(yōu)先級(jí),但這里不重復(fù)。 NVIC_Init ) )函數(shù)就可以了。

4) 設(shè)置計(jì)數(shù)器初始值并使能看門(mén)狗

這個(gè)步驟是由庫(kù)函數(shù)中的函數(shù)實(shí)現(xiàn)的。

voidwwdg_enable(uint8_tcounter ); 該函數(shù)在設(shè)定計(jì)數(shù)器初始值的同時(shí),啟用窗口監(jiān)視。

庫(kù)函數(shù)還提供了用于設(shè)置計(jì)數(shù)器值的獨(dú)立函數(shù)。

voidwwdg _ set counter (uint8_ t counter;5) 編寫(xiě)中斷服務(wù)函數(shù)

最后,還是為窗口監(jiān)視創(chuàng)建中斷服務(wù)函數(shù)。 用這個(gè)函數(shù)喂狗。 請(qǐng)快點(diǎn)喂狗。 否則,當(dāng)窗口看門(mén)狗計(jì)數(shù)器的值減少到0X3F時(shí),將引起軟復(fù)位。 在中斷服務(wù)函數(shù)中也清空狀態(tài)寄存器的EWIF位。

04 .程序示例wwdg.h

# ifndef _ wwdg _ h _ # define _ _ wwdg _ h _ # include ' sys.h ' /初始化函數(shù)voidwwdg_init(8tr、u8 wr、u32 //中斷處理# endif/* _ wwdg _ h _ */http://www.Sina.com /

# include ' wwdg.h ' # include ' led.h ' /保存wwdg計(jì)數(shù)器的設(shè)置值默認(rèn)為最多. u8 WWDG_CNT=0X7F; //初始化函數(shù)//tr計(jì)數(shù)器的值//wr窗口值//fprer預(yù)分頻值voidwwdg_init(U8tr、u8 wr、u32fp rer (nvic _ inittypedefnvic _ init strer 啟用WWDG時(shí)鐘RCC _ AP B1 periphclockcmd (RCC _ AP B1 per iph _ wwdg,啟用); //設(shè)置預(yù)分頻wwdg_setprescaler(FPrer ); //設(shè)置窗口值wwdg_setwindowvalue(wrwwdg_CNT )//啟用看門(mén)狗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; //清除早期喚醒中斷標(biāo)志位WWDG_ClearFlag (; //打開(kāi)早期喚醒中斷WWDG_EnableIT; //中斷處理函數(shù)voidwwdg_IRQHandler(void )//早期喚醒中斷標(biāo)志W(wǎng)WDG_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); //計(jì)數(shù)器值為7f,窗口寄存器為5f,分頻為8瓦時(shí)(1) {LED1=1; }05 .測(cè)試結(jié)果顯示,DS0點(diǎn)亮后立即熄滅,之后DS1繼續(xù)閃爍。 一秒鐘閃爍20次左右。

06 .附錄wwdg.c

URL:【STM32】STM32系列教程總結(jié)

07 .聲明本教程參考了正點(diǎn)原子《STM32 F4 開(kāi)發(fā)指南》

猜你喜歡

  • 歐姆龍plc軟件安裝教程_歐姆龍plc

    使用歐姆龍可編程控制器編程軟件CX-程序員簡(jiǎn)介我們打開(kāi)歐姆龍CX-P軟件,顯示如下圖。整體感覺(jué)清爽簡(jiǎn)約,但功能很強(qiáng)大。軟件屏幕從上到下分為標(biāo)題欄、菜單欄、工具欄、工程編程窗口和底部信息欄。我們點(diǎn)擊工具欄上的。圖標(biāo),可以新建一個(gè)項(xiàng)目;單擊工具欄中的。圖標(biāo),您可以打開(kāi)一個(gè)舊項(xiàng)目。工具欄圖標(biāo)的功能,只需將鼠標(biāo)放在圖標(biāo)上即可

  • 西門(mén)子300plc怎么編譯_西門(mén)子300plc編程實(shí)例

    00.目錄文章目錄00.目錄01.窗口監(jiān)控概述02.硬件設(shè)計(jì)03.編程步驟04.程序示例05.測(cè)試結(jié)果06.附錄07.聲明01.窗口監(jiān)控介紹窗口監(jiān)視(WWDG)通常用于監(jiān)視由于外部干擾或意外邏輯條件而導(dǎo)致的APP應(yīng)用程序脫離正常操作序列而出現(xiàn)的軟件故障。除非倒計(jì)時(shí)計(jì)數(shù)器的值在T6位(WWDG