Hướng dẫn Bài 2 - Bắt đầu học ARM Cortex-M0 trên NU-LB_002 Board

Thảo luận trong 'Tutorial với ARM Cortex-M0 của Nuvoton'

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

  1. daotruongpro

    daotruongpro http://vtechpro.vn

    Tham gia ngày:
    4/9/12
    Bài viết:
    382
    Đã được thích:
    497
    Điểm thành tích:
    93
    Giới tính:
    Nam
    Nghề nghiệp:
    Kỹ sư Điện tử - Truyền thông
    Nơi ở:
    Hà Nội
    Nu-LB_002 là Board mà Công ty Nuvoton đã đầu tư cho khoa Điện tử của các trường Đại Học tại Việt Nam học tập và nghiên cứu về dòng MCU-32bit mới này.
    Nu-LB-NUC140_sm.
    Đây là Board có đầy đủ các giao tiếp ngoại vi nhất gồm cơ bản và nâng cao, với MCU NUC140 dòng MCU 32-bit mới nhất của Nuvoton.
    Khi các bạn đã có đầy đủ các công cụ như phân mềm phần cứng chúng ta hoàn toàn có thể biên dịch nạp chương trình vào KIT.
    -> Các công cụ cần thiết khi làm việc với dòng MCU này:
    1. Keil c cho ARM - Trình biên dịch
    Down tại đây: Keil Product Downloads chọn MDK-ARM
    2. Driver Nu-Link - Bao gồm tập tin thư viện cho MCU của Nuvoton, nạp, debug = Nu-Link
    Down tại đây:

    Nuvoton Technology Corp. 新唐科技 -
    Device Driver and Software Library

    1.
    3. Bộ thư viện phát triển cho dòng chip NUC1XX
    Down tại đây:

    Nuvoton Technology Corp. 新唐科技 -
    Device Driver and Software Library

    2.
    Sau khi có đầy đủ các công cụ rồi sao lại không bắt đầu biên dịch, nạp chương trình đầu tiên nhỉ !
    let's go! let's go !
    3. 4.
    5.
    Sau khi biên dịch chương trình xong thực hiện nạp chương trình nhấn vào biểu tượng Load Flash chờ hết 100% rồi chọn debug -> Run để mạch hoạt động hoặc nhấn nút Reset trên Board
    2013-09-25 10.25.17.
    ==> Finish.
    Các bạn có thể tải về toàn bộ các Project ở file đính kèm
    Mã:
    #include <stdio.h>
    #include "NUC1xx.h"
    #include "Driver\DrvSYS.h"
    #include "Driver\DrvGPIO.h"
    #include "LCD_Driver.h"
    #include "Seven_Segment.h"
    void delay_loop(void)
    {
    uint32_t i,j;
    for(i=0;i<3;i++)
    {
    for(j=0;j<60000;j++);
        }
    
    }
    
    /*----------------------------------------------------------------------------
      Interrupt subroutine
      ----------------------------------------------------------------------------*/
    static unsigned char count=0;
    static unsigned char loop=12;
    void TMR0_IRQHandler(void) // Timer0 interrupt subroutine
    {
        unsigned char i=0;
    TIMER0->TISR.TIF =1;
    count++;
    if(count==5)
    {
    DrvGPIO_ClrBit(E_GPC,loop);
    loop++;
    count=0;
    if(loop==17)
    {
    for(i=12;i<16;i++)
    {
    DrvGPIO_SetBit(E_GPC,i);
    }
    loop=12;
      }
    }
    }
    
    void Timer_initial(void)
    {
    /* Step 1. Enable and Select Timer clock source */
    SYSCLK->CLKSEL1.TMR0_S = 0;//Select 12Mhz for Timer0 clock source
        SYSCLK->APBCLK.TMR0_EN =1;//Enable Timer0 clock source
    
    /* Step 2. Select Operation mode */
    TIMER0->TCSR.MODE=1;//Select periodic mode for operation mode
    
    /* Step 3. Select Time out period = (Period of timer clock input) * (8-bit Prescale + 1) * (24-bit TCMP)*/
    TIMER0->TCSR.PRESCALE=0;// Set Prescale [0~255]
    TIMER0->TCMPR  = 1000000;// Set TICR(TCMP) [0~16777215]
    // (1/22118400)*(0+1)*(2765)= 125.01usec or 7999.42Hz
    
    /* Step 4. Enable interrupt */
    TIMER0->TCSR.IE = 1;
    TIMER0->TISR.TIF = 1;//Write 1 to clear for safty
    NVIC_EnableIRQ(TMR0_IRQn);//Enable Timer0 Interrupt
    
    /* Step 5. Enable Timer module */
    TIMER0->TCSR.CRST = 1;//Reset up counter
    TIMER0->TCSR.CEN = 1;//Enable Timer0
    
    TIMER0->TCSR.TDR_EN=1;// Enable TDR function
    }
    
    int main(void)
    {
    int i=0,j=0;
    /* Unlock the protected registers */
    UNLOCKREG();
      /* Enable the 12MHz oscillator oscillation */
    DrvSYS_SetOscCtrl(E_SYS_XTL12M, 1);
    
        /* Waiting for 12M Xtal stalble */
        SysTimerDelay(5000);
    
    /* HCLK clock source. 0: external 12MHz; 4:internal 22MHz RC oscillator */
    DrvSYS_SelectHCLKSource(0);
        /*lock the protected registers */
    LOCKREG();
    
    DrvSYS_SetClockDivider(E_SYS_HCLK_DIV, 0); /* HCLK clock frequency = HCLK clock source / (HCLK_N + 1) */
    
        for(i=12;i<16;i++)
    {
    DrvGPIO_Open(E_GPC, i, E_IO_OUTPUT);
        }
    
    Initial_pannel();  //call initial pannel function
    clr_all_pannal();
    
    print_lcd(0, "ARM Cortex-M0  ");
    print_lcd(1, "Program: TestKIT");
    print_lcd(2, "Author:        ");
    print_lcd(3, "    daotruongpro");
    Timer_initial();
    
    while(1)
    {
    for(i=0;i<9;i++)
    {
    for(j=0;j<4;j++)
    {
    close_seven_segment();
    show_seven_segment(j,i);
    delay_loop();
    }
    }
    }
    }
     

    Các file đính kèm:

    Last edited: 26/9/13
    suvinh92, yeuthichdientu, phungduchiep3 others thích bài này.
  2. xe đạp

    xe đạp Kỹ sư

    Tham gia ngày:
    13/9/12
    Bài viết:
    234
    Đã được thích:
    449
    Điểm thành tích:
    63
    Giới tính:
    Nam
    hic, trường e ko có cái này
     
  3. BuiBachTuanAnh

    BuiBachTuanAnh Quản trị viên Staff Member

    Tham gia ngày:
    6/5/12
    Bài viết:
    1,304
    Đã được thích:
    3,784
    Điểm thành tích:
    113
    Giới tính:
    Nam
    Nghề nghiệp:
    Kinh doanh
    Nơi ở:
    http://codientu.org
    daotruongpro em có biết chính xác 5 trường được tài trợ không?
     
  4. tiennam191

    tiennam191 Kỹ sư

    Tham gia ngày:
    24/8/12
    Bài viết:
    277
    Đã được thích:
    424
    Điểm thành tích:
    63
    Giới tính:
    Nam
    Nghề nghiệp:
    Viện Công Nghệ Điện Tử
    Nơi ở:
    LINH KIỆN ĐIỆN TỬ E - GROUP
    công nhận dùng thanh ghi vẫn là dễ cho lập trình nhất bạn nhỉ, cho dù là con ARM đi nữa. nhưng lập trình theo thư viện của ST thì có cái lợi là lập trình code nhanh. nhưng cái hại là nhanh nhưng ko chắc. nếu dùng thư viện thì mình cũng đọc hết các thanh ghi và phần cứng thì mới ốp code.
     
    daotruongprosgesvn thích bài này.
  5. daotruongpro

    daotruongpro http://vtechpro.vn

    Tham gia ngày:
    4/9/12
    Bài viết:
    382
    Đã được thích:
    497
    Điểm thành tích:
    93
    Giới tính:
    Nam
    Nghề nghiệp:
    Kỹ sư Điện tử - Truyền thông
    Nơi ở:
    Hà Nội
    Làm theo thanh ghi cũng có cái hay của nó bạn à, nhưng chỉ nên làm với dòng 4-bit, 8-bit thôi nên 16-bit như MSP430 hay ARM là hơi mệt đấy. Ngồi mà đếm bit thì vỡ mặt X_X. Mình thì hay làm theo thư viện ít làm theo thanh ghi lắm đôi khi thích đổi gió thôi!
    Làm theo thư viện sẽ mất ít thời gian hơn vì mỗi dòng chip có thư viện riêng cơ mà, :-bdlo gì
     
    yeuthichdientu thích bài này.
  6. daotruongpro

    daotruongpro http://vtechpro.vn

    Tham gia ngày:
    4/9/12
    Bài viết:
    382
    Đã được thích:
    497
    Điểm thành tích:
    93
    Giới tính:
    Nam
    Nghề nghiệp:
    Kỹ sư Điện tử - Truyền thông
    Nơi ở:
    Hà Nội
    Chắc chắn anh à. 5 Trường gồm:
    1. ĐHBK HN
    2. ĐH FPT
    3. UIT - ĐHQG TP.HCM
    4. HUTECH TP.HCM
    5. Đại học Cần Thơ.
     
    phungduchiepBuiBachTuanAnh thích bài này.
  7. daotruongpro

    daotruongpro http://vtechpro.vn

    Tham gia ngày:
    4/9/12
    Bài viết:
    382
    Đã được thích:
    497
    Điểm thành tích:
    93
    Giới tính:
    Nam
    Nghề nghiệp:
    Kỹ sư Điện tử - Truyền thông
    Nơi ở:
    Hà Nội
    Bạn học trường nào vậy?
     
  8. daotruongpro

    daotruongpro http://vtechpro.vn

    Tham gia ngày:
    4/9/12
    Bài viết:
    382
    Đã được thích:
    497
    Điểm thành tích:
    93
    Giới tính:
    Nam
    Nghề nghiệp:
    Kỹ sư Điện tử - Truyền thông
    Nơi ở:
    Hà Nội
  9. marketer182

    marketer182 Học sinh phổ thông

    Tham gia ngày:
    26/9/13
    Bài viết:
    4
    Đã được thích:
    2
    Điểm thành tích:
    1
    Giới tính:
    Nam
    Mình học UIT nhé.. hy vọng các bạn cùng nhau trao đổi về KIT Nuvoton140 này
     
  10. UITsteven

    UITsteven Sinh viên đại học

    Tham gia ngày:
    26/9/13
    Bài viết:
    81
    Đã được thích:
    55
    Điểm thành tích:
    18
    Giới tính:
    Nam
    Đang hóng con này để mua mà hiệ tại ở Việt Nam chưa có bán, Tula chỉ bán NUC120 :-s
     

Chia sẻ trang này