国产(华大)单片机 hc32f460入门

您所在的位置:网站首页 pb3芯片 国产(华大)单片机 hc32f460入门

国产(华大)单片机 hc32f460入门

2024-07-04 13:07| 来源: 网络整理| 查看: 265

   最近闹芯片慌,黄牛各种炒作,芯片价格居高不下,暂时选择国产方案替代.

本次选用了华大 m4内核方案, hc32f460芯片,型号很多,64pin的 keta(该版本实际有货),100脚的petb(实际没货,开发板基本上都是这一款).

        

 上图中左边是 100管脚的hc32f640petb, 右边是64脚hc32f460keta.

  由于两个芯片系列相同仅管脚数量不同, 官方给力的例程 库函数等 基本上都是相同的.

   先拿着官方给的例子跑一下led实验.

   先看下电路图:

        

         上图为hc32f460petb板子的定义:

led  端口 PortC , 管脚  Pin13 (华大定义文件中是, 00 ,01 .....).

 该图是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 )

 修改以上配置后 选择全部编译.

 编译例程没什么问题,现在根据之前从原理图获取的端口和管脚,修改例程中的代码:

 修改后代码如下:

#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延迟实验演示



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3