toilet

Vuongbk - Bài 6: Chức năng Watchdog Timer (WDT) của KIT NUTINY - SDK - M051

Thảo luận trong 'Bài viết dự thi'

Đang xem chủ đề này ( Thành viên: 0, Khách: 0)

  1. Đăng 15/6/14 #1

    vuongbk Sinh viên đại học

    Số bài viết: 84
    Đã được thích: 58
    BÀI DỰ THI TÌM HIỂU KIT PHÁT TRIỂN CỦA NUVOTON


    - Họ và tên: Nguyễn Châu Vương

    - Nick diễn đàn: Vuongbk

    - Bài 6:Chức năng Watchdog Timer (WDT) của KIT NUTINY - SDK - M051

    Mục đích của WDT là để thực hiện một thiết lập lại hệ thống khi hệ thống chạy vào tình trạng không rõ. Điều này ngăn cản hệ thống treo trong một thời gian vô hạn. Bên cạnh đó, WDT hỗ trợ một chức năng của chip thức dậy từ power down mode.

    Nhìn chung, WDT có 4 chế độ:

    · WDT Interrupt
    · WDT Wakeup
    · WDT Restart

    · WDT Hold In ICE

    Trên đây là phần giới thiệu chung về WDT, chúng ta bước vào phần lập trình điều khiển trên Kit. Trước khi bắt đầu lập trình, chúng ta xem sơ đồ về cơ chế hoạt động của chức năng WDT trên CoX Peripheral Library.
    1.

    Bây giờ, Chúng ta thử ví dụ wake up và interrupt function: Nếu khởi động lại Tiner thời gian vượt quá thời gian chờ, sau đó WDT sẽ khởi động lại MCU.

    Chương trình chính:
    Mã:
    void Wakeup(void);
    int main(void)
    {
      //automatically added by CoIDE
      Wakeup();
      while(1)
      {
      }
    }
    
    Chương trình con Wakeup.c:
    Mã:
    #include"xhw_types.h"
    
    #include"xhw_memmap.h"
    
    #include"xhw_ints.h"
    
    #include"xhw_nvic.h"
    
    #include"xcore.h"
    
    #include"xdebug.h"
    
    #include"xhw_sysctl.h"
    
    #include"xsysctl.h"
    
    #include"xgpio.h"
    
    #include"xwdt.h"
    
    
    //*****************************************************************************
    
    //
    
    // Function protype.
    
    //
    
    //*****************************************************************************
    
    unsignedlong user_Callback( void *pvCBData, unsignedlong ulEvent,
    
      unsignedlong ulMsgParam, void *pvMsgData );
    
    
    //*****************************************************************************
    
    //
    
    //! \brief  Wdt wakeup example.
    
    //!
    
    //! \return None.
    
    //
    
    //*****************************************************************************
    
    void Wakeup(void)
    
    {
    
      //
    
      // Set WDT clock and interval time.
    
      //
    
      xWDTInit(xWDT_BASE, SYSCTL_PERIPH_WDG_S_INT10K, xWDT_INTERVAL_2_10T);
    
    
      //
    
      // Set WDT interrupt and initionalize callback.
    
      //
    
      xWDTIntCallbackInit(xWDT_BASE, user_Callback);
    
     
    
      //
    
      // Enable WDT wake up function.
    
      //
    
      xWDTFunctionEnable(xWDT_BASE, xWDT_WAKEUP_FUNCTION | xWDT_INT_FUNCTION);
    
      xIntEnable( xINT_WDT );
    
     
    
      //
    
      // Start WDT timer.
    
      //
    
      xWDTEnable( xWDT_BASE );
    
     
    
      //
    
      // Make chip enter into sleep state.
    
      //
    
      xSysCtlSleep();
    
     
    
      //
    
      // Interrupt wake up cpu.
    
      //
    
      xCPUwfi();
    
    
    }
    
    
    //*****************************************************************************
    
    //! \breif Wdt interrupt handler.
    
    //!
    
    //! \return None
    
    //
    
    //*****************************************************************************
    
    unsignedlong user_Callback( void *pvCBData, unsignedlong ulEvent,
    
      unsignedlong ulMsgParam, void *pvMsgData ) 
    
    {
    
      //
    
      // Restart wdt timer.
    
      //
    
      xWDTRestart();
    
     
    
      return 0;
    
    }
    
    Vì không có chương trình mô phỏng và chưa có Kit để kiểm tra nên các bạn tạm đọc Code tham khảo.

    Cảm ơn !

    Các file đính kèm:

    kimtinh thích bài này.
    #1
  2. Đăng 17/6/14 #2

    daotruongpro http://vtechpro.vn

    Số bài viết: 385
    Đã được thích: 502
    Bạn biên dịch chương trình trên IDE nào vậy, sao thư viện lạ quá???
    Khi code không có KIT thì bạn phải comment giải thích ở cuối câu lệnh thì người đọc mới có thể hiểu được.
    Comment tại cuối các file thư viện, chức năng làm gì, sử dụng hàm gì trong đó.
    VD:
    Mã:
    #include"xhw_nvic.h" // Thư viện khai báo ngắt
    #include"xdebug.h" // Thư viện hỗ trợ gỡ lỗi
    Bạn có thể trích thêm nguồn (nếu có)
    vuongbkkimtinh thích bài này.
    #2
  3. Đăng 17/6/14 #3

    vuongbk Sinh viên đại học

    Số bài viết: 84
    Đã được thích: 58
    sory các bạn ! gấp quá nên mình còn thiếu xót ! thanks daotruongpro !
    Mình biên dịch trên Coocox Coide ! thư viên thì mình đã nói trong bài giới thiệu trình biên dịch rồi mà!
    huunho thích bài này.
    #3
  4. Đăng 17/6/14 #4

    xaxa9ztb Kỹ sư

    Số bài viết: 207
    Đã được thích: 194
    em cũng thấy lạ, dù là phần mềm biên dịch nào đi nữa thì thư viện đều giống nhau hết
    vuongbk bạn lưu ý là CoIDE nó sắp xếp k đúng đâu nhé. ví dụ phần chip bạn chọn là nuvoton, nhưng đến phần driver bạn chọn thì thư viện nó viết k phải chỉ cho nuvoton nữa mà bao gồm tất cả các chip của các hãng khác như TI, ST.
    Mình k nhầm thì Thư viện bạn đang dùng là của STM32 rồi nhé, k phải của nuvoton
    Mã:
    #include"xhw_types.h"
    
    #include"xhw_memmap.h"
    
    #include"xhw_ints.h"
    
    #include"xhw_nvic.h"
    
    #include"xcore.h"
    
    #include"xdebug.h"
    
    #include"xhw_sysctl.h"
    
    #include"xsysctl.h"
    
    #include"xgpio.h"
    
    #include"xwdt.h"
    daotruongprokimtinh thích bài này.
    #4
  5. Đăng 17/6/14 #5

    xaxa9ztb Kỹ sư

    Số bài viết: 207
    Đã được thích: 194
    đây mới là thư viện của M051
    Screenshot - 6_17_2014 , 7_51_48 PM.
    daotruongpro thích bài này.
    #5
  6. Đăng 17/6/14 #6

    kimtinh Sinh viên cao đẳng

    Số bài viết: 20
    Đã được thích: 34
    mình cũng tạo thử project bàng colIDE thì thấy thư viện cửa M051 như sau
    Mã:
    #include <stdio.h>
    #include "DrvTIMER.h"
    #include "DrvUART.h"
    #include "DrvGPIO.h"
    #include "DrvSYS.h"
    daotruongproxaxa9ztb thích bài này.
    #6
  7. Đăng 18/6/14 #7

    daotruongpro http://vtechpro.vn

    Số bài viết: 385
    Đã được thích: 502
    Coocox IDE không có thư viện như của bạn đâu. Bạn cần xem lại.
    #7

Chia sẻ trang này