天天看點

國産(華大)單片機 hc32f460入門

   最近鬧晶片慌,黃牛各種炒作,晶片價格居高不下,暫時選擇國産方案替代.

本次選用了華大 m4核心方案, hc32f460晶片,型号很多,64pin的 keta(該版本實際有貨),100腳的petb(實際沒貨,開發闆基本上都是這一款).

國産(華大)單片機 hc32f460入門

 上圖中左邊是 100管腳的hc32f640petb, 右邊是64腳hc32f460keta.

  由于兩個晶片系列相同僅管腳數量不同, 官方給力的例程 庫函數等 基本上都是相同的.

   先拿着官方給的例子跑一下led實驗.

   先看下電路圖:

國産(華大)單片機 hc32f460入門

         上圖為hc32f460petb闆子的定義:

led  端口 PortC , 管腳  Pin13 (華大定義檔案中是, 00 ,01 .....).

國産(華大)單片機 hc32f460入門

 該圖是hc32f460KETA中led定義:

led  端口 PortB , 管腳  Pin04(華大定義檔案中是, 00 ,01 .....).

在官方提供的庫中找到例程: 相對路徑如下:

驅動庫及樣例\hc32f460_ddl_Rev2.1.0\example\ev_hc32f460_lqfp100_v2\gpio\gpio_output

keil5 mdk打開項目:

對于項目需要部分修改,直接編譯會出現問題(問題不描述了,直接修改)

1.  根據自己闆子修改petb或者keta (本次使用keta )

國産(華大)單片機 hc32f460入門
國産(華大)單片機 hc32f460入門
國産(華大)單片機 hc32f460入門
國産(華大)單片機 hc32f460入門
國産(華大)單片機 hc32f460入門
國産(華大)單片機 hc32f460入門

 修改以上配置後 選擇全部編譯.

國産(華大)單片機 hc32f460入門

 編譯例程沒什麼問題,現在根據之前從原理圖擷取的端口和管腳,修改例程中的代碼:

國産(華大)單片機 hc32f460入門
國産(華大)單片機 hc32f460入門

 修改後代碼如下:

#include "hc32_ddl.h"


/* LED0 Port/Pin definition */
#define  LED0_PORT        (PortB)
#define  LED0_PIN         (Pin04)

/* LED0~3 toggle definition */
#define  LED0_TOGGLE()    (PORT_Toggle(LED0_PORT, LED0_PIN))

/* 延遲時間擴大了10倍 */
#define  DLY_MS           (1000ul)


int32_t main(void)
{
    stc_port_init_t stcPortInit;

    /* configuration structure initialization */
    MEM_ZERO_STRUCT(stcPortInit);

    stcPortInit.enPinMode = Pin_Mode_Out;
    stcPortInit.enExInt = Enable;
    stcPortInit.enPullUp = Enable;

    /* 屏蔽swd調試 */
	PORT_DebugPortSetting(TDO_SWO | TDI | TRST, Disable);
    /* LED0 Port/Pin initialization */
    PORT_Init(LED0_PORT, LED0_PIN, &stcPortInit);

    while(1)
    {
        LED0_TOGGLE();
        Ddl_Delay1ms(DLY_MS);
    };
}
           

 上述代碼中 多了一句:

/* 屏蔽swd調試 */
	PORT_DebugPortSetting(TDO_SWO | TDI | TRST, Disable);
           

 原因可以從寄存機部分找到 PB4是複位管腳,  使用時需要先屏蔽調試(swd使用了TRST(即PB4))

不添加的情況會出現,代碼燒錄正常,led常亮,不閃爍.

編譯燒錄 看下實驗結果(稍後上傳):

100ul延遲示範

1000ul延遲實驗示範