诚博娱乐 > 评测 > 评测列表 > MCU

Holychip   HC89F003   8位单片机   51   MCU   
  • 作者:杰杰
  • 来源:21ic
  • [导读]
  • 虽然16位单片机已经被超低功耗的32位单片机挤压的几乎要消失殆尽,而8位单片机却一直凭借轻盈小巧和价格低廉的优势占据市场。目前8位单片机皆根据各种各种特定应用而推出了不同的增强型,今天给大家评测的来自Holychip(芯圣)的HC89F003则是以引脚的重映射功能著称。虽然很多MCU均有重映射的功能,不过像HC89F003这样绝大多数引脚皆可重映射的并不多见。
while((CLKSWR&CLK_SYS_STA)!=CLK_RC44KHZ_FLAG);//等待晶振起振

return SUCCESS;

}

else

{//使用高频作为系统时钟

if((OscClock == CLK_OSC_32MHZ)&&(CLKDIV < CLK_CLKDIV_RESET_VALUE))return ERROR;//如果最终CPU时钟高于20M,则配置失败

CLKSWR = (CLKSWR&(~CLK_SYS_SEL))|CLK_RC32MHZ; //启动内部高频

while((CLKSWR&CLK_SYS_STA)!=CLK_RC32MHZ_FLAG); //等待高频晶振起振

OscClkBuf = CLKDIV;

CLKDIV = 2; //保证CPU工作在20M以下,

CLKSWR = OscClock|(CLKSWR&(~CLK_RC32M_DIV)); //设置RC32M分频系数

CLKDIV = OscClkBuf; //恢复CPU分频系数

return SUCCESS;

}

}

HC89F003 单片机系统时钟有 2 种时钟源可选:内部高频 RC 时钟(32 MHz)和内部低频 RC 时钟(44KHz)。其中,内部高频 RC 在-40°C ~+85°C 范围误差不超过 1%。选择后的系统时钟(如果选择的是内部高频 RC,则经 RC32M_DIV[1:0]分频后的时钟)记做 osc_clk,其频率为 F osc ,周期为 T osc ,

主要用于外设模块,osc_clk 可以进行 1-255 之间任意值的分频,分频后的时钟记做 CPU 时钟,其频率为 F cpu ,周期为 T cpu 。

CPU 最高可以运行在 20MHz 频率下,如果所选时钟源频率高于 20MHz,需要对其进行分频,使CPU 时钟频率等于或低于 20MHz。

内部低频 RC(RC44K)输出的时钟记做 wdt_clk,用于看门狗定时器的计数,也可以用于系统时钟;内部高频 RC(RC32M)输出的时钟记做 rc32m_clk,可以进行 1/2/4/8 分频。

holychip-15.png

系统初始化完成就能对芯片的引脚进行操作了。。。。

然后就是GPIO的初始化函数了,芯圣对我们还是很好的,已经集成库函数了,直接调用就OK。

一句代码的事情:

GPIO_Init(GPIOT0,GPIO_PIN_2,GPIO_MODE_IN_PU); //将P02端口设置为上拉电阻模式

库函数的使用方法很简单啊,假如我想让P00设置为推挽输出模式。。。

直接将 GPIO_PIN_2变为GPIO_PIN_0

GPIO_MODE_IN_PU变为GPIO_MODE_OUT_PP

GPIO_Init(GPIOT0,GPIO_PIN_0, GPIO_MODE_OUT_PP); //P00设置为推挽输出模式

/**

* @说明 对一组端口中的一个或多个IO设置模式

* @参数 GPIOx : 初始化的端口组(x:0-2)

* GPIOT0 //端口0组

* GPIOT1 //端口1组

* GPIOT2 //端口2组

* @参数 GPIO_PIN : 初始化的端口号

* GPIO_PIN_0 //选择端口0

* GPIO_PIN_1 //选择端口1

* GPIO_PIN_2 //选择端口2

* GPIO_PIN_3 //选择端口3

  • 本文系21ic原创,未经许可禁止转载!

网友评论