注册 登录
电子工程世界-论坛 返回首页 EEWORLD首页 频道 EE大学堂 下载中心 Datasheet 专题
dmzdmz666666的个人空间 https://home.eeworld.com.cn/space-uid-1103352.html [收藏] [复制] [分享] [RSS]
日志

【HC32F448测评】+ Hello World!!!

已有 426 次阅读2023-8-4 21:50 |个人分类:嵌入式

第二篇:Hello World!!!@DMZ 23.08.04

这篇主要介绍工程的创建和MCU的串口、按键和LED的使用。

首先作为一个个人开发者来说,选择微控制器这里混合信号IC还是模拟IC、数字IC,主要就关注硬实力还有软实力下。硬实力主要就是看芯片本身的性能,是不是足够好,是不是足够适合;另一方面软实力就包括生态,良好的生态就是让开发者开发起来事半功倍,不用反复踩别人踩过的坑了,像数据手册、用户手册、勘误表、各部分的使用注意事项、例程、SDK、驱动库应该是完整且易获得的,国产厂家的微控制器在硬实力上这些年慢慢向中高端走,性能越来越好,产品线越来越丰富,但距离国际大厂像意法半导体、恩智浦半导体、瑞萨半导体还有差距;在软实力上,一个典型的例子就是意法半导体的STM32系列,它本土化方面做的就很好,最常见的STM32F103系列中文资料一堆,很多英文资料官方都提供了中文版,同时跟国内的做开发板厂家,比如正点原子、野火科技、安富莱电子等合作,推出了很多本土化的教程,大大降低了普通个人开发者的使用门槛和开发难度,同时网络上资料非常多,各类的评估版、系统板也非常多,所以至少在中国,STM32的影响力还是非常大的;国产的微控制器在本土化上应该是有优势的,但是奇怪的是,有些MCU的半导体厂家要么资料还是英文的(搞不懂你国际化没问题,那也应该立足本土化,放眼国际化呀,可以中文英文都搞一个呀),要么资料就不全、要么资料还需要注册或者留言才能有机会看到,要么就干脆不给,搞起来神神秘秘的,说就是面向大客户或者公司,还要签订什么协议。

这方面小华半导体、雅特力科技啊就做的都很不错,它们的数据手册、用户手册、开发工具的使用手册均是原生中文的,而且提供全套的例程和SDK、驱动库、还有开发板对应的BSP,对我给人而言,手册看起来特别舒服直观,不需要翻译,程序写起来也很容易。而且之资料摆放的位置也很好找,可以很方便的下载。芯片在淘宝上也很容易买到,对于个人开发者来说,这几点直接让我无脑支持。

 

 

说回正事,这次的程序需要用到串口、LED和按键。需要用到的例程在HC32F448_DDL_Rev1.0.0\HC32F448_DDL_Rev1.0.0\projects\ev_hc32f448_lqfp80\examples\usart\usart_uart_int

但是我们要将这个usart_uart_int单独拎出来是无法编译通过的,因为里面缺少组件,就像下面这样

 

所以我们单独拎出来后,要将HC32F448_DDL_Rev1.0.0\HC32F448_DDL_Rev1.0.0\drivers这个里面的drivers复制到新文件夹里面,并新建一个子文件夹HARDWARE存放自己自定义的组件,如下图

进入工程以后记得点击下面两个图标并且修改对应drivers路径,这里我就不在赘述了。

 

例程usart_uart_int是RX和TX都是中断。这里我要修改为RX为中断,TX用printf实现。这里选择的串口是USART 2,因为自带的DAP电路支持虚拟串口,而它所连接的正是USART 2,正好方便调试。


我将USART相关的函数都放在了HARDWARE文件夹里的USART里,这样比较清晰。

首先是MY_USART_Init(void),这里是为了防止跟驱动库里的函数命名重复,才命名成MY_USART_Init,初始化的流程跟例程中的一致,就是配置GPIO、使能对应时钟、USART参数配置、使能RX TX的功能,如下图。

 

 
   

然后RX功能是通过中断实现的,配置如下图所示,包括一个ERROR中断和FULL中断,还有对应的回调函数。然后在FULL中断里面,我们设置将收到的数据重新发出去。

 

 
   
 
   

TX则通过主动发送,通过USART_GetStatus检测到USART的TX状态为空时,再将待发送的数据通过USART_WriteData写入USART,此时USART会将数据发送出去。同时,通过重定向fputc函数,printf就可以正常使用了。记得要加这个"stdio.h"头文件

 

 
   

其次是LED和按键,但其实官方的SDK已经给你弄好了的,就在ev_hc32f448_lqfp80这个子文件夹里。

首先是ev_hc32f448_lqfp80_tca9539.c这个C文件里包含LED0-LED2的初始化,因为这3个LED的IO是通过TCA9539芯片扩展的,然后用BSP_LED_Init();初始化;

ev_hc32f448_lqfp80.c这个C文件包含了按键KEY的初始化,用BSP_KEY_Init();初始化,然后通过BSP_KEY_GetStatus(BSP_KEY_1)来判断是否按下,按下状态则为SET。

因为LED3是单片机通过PA2直接控制的,所以这就涉及到了对GPIO口的初始化,设置为输出

 

 
   
 
   

最后对各模块进行初始化,这里我参照例程。

 

最后的效果是按下对应的按键,对应的LED会翻转,同时USART会发送"Hello World!!!@DMZ   This is KEY_1

 

 
   

看最后效果,测试成功。

 

 
   

本文来自论坛,点击查看完整帖子内容。

评论 (0 个评论)

facelist doodle 涂鸦板

您需要登录后才可以评论 登录 | 注册

热门文章