本帖最后由 Gavin3389 于 2021-9-18 09:49 编辑
有幸拿到HC的开发板,对于学习和了解一款开发板和芯片来讲,我觉得最值得信赖的应该还是官网。对于有开发经验的人来说,或许下载个例程,移植个程序家常便饭,可对很多学生朋友或者刚入门的开发者来说,
找资料,不一定是件容易的事。
借此机会,多接触下HC的片子,毕竟现在国产替代和发展之声越来越强,
自己也算是一名初学者吧,和大家一起从查找资料学起,进行评测。
一、看看如何找到自己需要的资料 当然是上官网了,官网做的还不错, http://www.hdsc.com.cn/Category83-1487
设计文件: 我不知道是用什么画的,反正不是AD好在原理图转换成了PDF,自己慢慢对应,不成问题。 开发工具用户手册: 对开发板做了简单的介绍,引导入门使用。 驱动库及样例: Template是空白的工程,为了用户自己开发,可以节省时间。(想的是真周到) ddl是官方的例程,很全面 ddl_help是帮助文档,配合例程,做参考用
这里注意下ddl例程, 我下载的是hc32f460_ddl_Rev2.1.0 例程在example文件夹下
里面又是两个文件夹
看到这,直接看V2啊,版本高,是不是坑比较少? 不 要看你板子上有个版本标识, 我的是V1.3 所以,开始直接选择V2的我,尴尬了好久,还想,这引脚也不对啊?是不是难道要自己引线验证?后来发现,原来是自己搞错了。这里需要自行对应开发板。 二、随便跑个例程看看 找个简单的gpio 前面的宏定义 /* LED0 Port/Pin definition */
#define LED0_PORT (PortE)
#define LED0_PIN (Pin06)
/* LED1 Port/Pin definition */
#define LED1_PORT (PortA)
#define LED1_PIN (Pin07)
/* LED2 Port/Pin definition */
#define LED2_PORT (PortB)
#define LED2_PIN (Pin05)
/* LED3 Port/Pin definition */
#define LED3_PORT (PortB)
#define LED3_PIN (Pin09)
/* LED0~3 toggle definition */
#define LED0_TOGGLE() (PORT_Toggle(LED0_PORT, LED0_PIN))
#define LED1_TOGGLE() (PORT_Toggle(LED1_PORT, LED1_PIN))
#define LED2_TOGGLE() (PORT_Toggle(LED2_PORT, LED2_PIN))
#define LED3_TOGGLE() (PORT_Toggle(LED3_PORT, LED3_PIN))
#define DLY_MS (300ul)
主函数 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;
/* LED0 Port/Pin initialization */
PORT_Init(LED0_PORT, LED0_PIN, &stcPortInit);
/* LED1 Port/Pin initialization */
PORT_Init(LED1_PORT, LED1_PIN, &stcPortInit);
/* LED2 Port/Pin initialization */
PORT_Init(LED2_PORT, LED2_PIN, &stcPortInit);
/* LED3 Port/Pin initialization */
PORT_Init(LED3_PORT, LED3_PIN, &stcPortInit);
while(1)
{
LED0_TOGGLE();
Ddl_Delay1ms(DLY_MS);
LED1_TOGGLE();
Ddl_Delay1ms(DLY_MS);
LED2_TOGGLE();
Ddl_Delay1ms(DLY_MS);
LED3_TOGGLE();
Ddl_Delay1ms(DLY_MS);
/* de-init if necessary */
//PORT_DeInit();
};
}
程序运行的效果是
四个不同颜色的led的流水灯,非常漂亮。
有了官网资料, 有了开发板, 可以慢慢的跑例程,熟悉华大环境和风格了。 单纯跑例程的话,也无所谓简单和复杂,关键是通过例程熟悉板子和配置。
三、吐槽一下,并且记录下踩的坑(亮点) 官网的资料很全,比较好找,分类也清晰,能看出来,也在定期维护和更新。 只是跑例程的话,很容易。 但是说实话,官网的资料,针对的是有一定基础的用户,比如已经参加工作,有开发经验的人。 是不是可以考虑,丰富下文件内容,把用户扩大,广大学生和初学者也包含进来,比如, 1、 在用户手册中,用实物照片替代丝印图进行资源说明 2、 开发环境的搭建,配置做些详细的讲解。 3、 对例程的设计思路,原理做些补充说明,让初学这快速的运用起来。 其实,很多内容已经做的很好了,再做细致一些,会有一大批站在门槛边缘的人进来,之所以ST用的人多,有很大的原因是教程详细丰富,跟手把手教学差不多了。
再说下,踩的坑(亮点) 就是dll_config文件,这个应该算是程序配置文件吧, 既是坑,又是亮点。 这个文件里,把每个外设,给设计了一个“开关”,初衷应该是打算裁剪用吧,类似于“文件系统”里的配置文件 如果,你只是单纯的跑例程,很可能忽略这里,一看程序跑起来,乐呵呵半天。 但是吧,要写一个自己的程序,就很可能入坑了, 也许会遇到“函数未定义的”错误,折腾一圈,路径也包含了,头文件也引用了,为啥不行? 原因也许就在这里,用每一个库函数的时候,都要把开关打开。 例如GPIO 需要让这个条件编译,成立。
小结下个人感受: 总体来说,资料比较全,也比较容易找到有自己的风格。 用户手册和配套的教程比较少,需要用户自己去理解。这个淘汰了一些虚假的喊学习口号的人,也挡住了一些真正想学,如不了门的人。 最后感谢华大和21ic提供这次评测机会,后面会逐步跑一跑自己移植的程序,非常期待国产芯片的崛起和腾飞。
|