51单片机怎样使用宏定义(第三章华大M0内核HC32L176)

目前单片机是以默认内部高速时钟在进行运行,此内部时钟RCH是8Mhz,我们在学习这篇端口操作时,先不进行系统时钟的配置。

我们先熟悉在单片机的IO口操作,等到我们讲解到定时器验证之后,再讲解单片机内部时钟配置,就有了可以验证,是否正确配置的手段和方法了。

3.1,端口操作流程,LED的点亮

我们选择的这款单片机HC32L176/HC32L196系列单片机是M0 内核,有很多的端口都是多种功能复用,所以在进行端口操作的时候,需要明确是否有复用功能。我们使用普通的端口功能过程,对下列寄存器进行讲解和配置。

第一步,配置GPIO时钟,这个时钟寄存器在芯片资料的系统控制器章节,如下图所示

51单片机怎样使用宏定义(第三章华大M0内核HC32L176)(1)

第二步,配置GPIO是数字端口还是模拟端口。使用的寄存器是下图中所示

51单片机怎样使用宏定义(第三章华大M0内核HC32L176)(2)

如何确定是数字端口还是模拟端口呢?如下图所示,ADC,LCD,OPA,DAC等都是模拟端口,如端口只有1/0逻辑电平的,就是数字端口,如PWM,按键输入,输出高低电平等。

下图单片机的时钟树结构,我们在学习STM32的时候,总结的经验就是时钟树非常重要,所以大家也要对这款有所了解,STM32对每个GPIOA-F都有单独的时钟控制,华大的这款,所有的GPIO只有这一个。大家区别一下。

51单片机怎样使用宏定义(第三章华大M0内核HC32L176)(3)

第三步,配置GPIO输入输出模式,如下图所示。

51单片机怎样使用宏定义(第三章华大M0内核HC32L176)(4)

还有复用功能的配置寄存器,因为有很多端口有其他功能,而且每个端口都有一个配置项,如ADC,串口等,可以根据你设计需要选择对应功能,注意LCM的端口复用配置是其他专用寄存器进行配置

51单片机怎样使用宏定义(第三章华大M0内核HC32L176)(5)

在上图中,我举例截图了PA的配置说明,每个端口的配置具体的复用说明会有差异,将PA02_SEL配置为00,就是普通端口,在截图当中的红色标注当中,如果将PA02_SEL配置为1,则是UART1_TXD引脚

51单片机怎样使用宏定义(第三章华大M0内核HC32L176)(6)

3.2,端口输入与输出配置初始化的代码,我们以PC13这个端口作为LED控制,配置一个输出代码。如下图所示,一般有两种写法,因为华大本身的.H文件对各个寄存器的位都有定义,有时候记不清想要配置的位的标号,所以为了方便和简单明了,将主要是以第二种写法进行讲解。

51单片机怎样使用宏定义(第三章华大M0内核HC32L176)(7)

为了能够方便调用LED的输出高电平和低电平,我们写入两个宏定义

51单片机怎样使用宏定义(第三章华大M0内核HC32L176)(8)

LED硬件,假设LED灯的正极直接接单片机的IO端口。

接下来就是完整的点亮一颗LED神灯,循环不断的控制LED引脚高低电平翻转,等同于学C语言的hello world,下图就是工程代码,添加了简单的延时函数,欢迎鉴赏。

51单片机怎样使用宏定义(第三章华大M0内核HC32L176)(9)

3.3,端口的操作控制,按键的输入采集,其实和输出差不多,只是将方向寄存器改为输入即可,我们使用PE02作为按键输入口,并定义一个宏。

硬件电路上,我们设定KEY默认上拉电阻,未按下时高电平,按下按键时,为低电平。

我们设计一段代码,进行按键和LED端口初始化后,按键按下,LED点亮,按键松开,LED灭

51单片机怎样使用宏定义(第三章华大M0内核HC32L176)(10)

欢迎大家关注我,谢谢大家!

,

免责声明:本文仅代表文章作者的个人观点,与本站无关。其原创性、真实性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容文字的真实性、完整性和原创性本站不作任何保证或承诺,请读者仅作参考,并自行核实相关内容。文章投诉邮箱:anhduc.ph@yahoo.com

    分享
    投诉
    首页