简单介绍一下使用的FT62F211-RB SOP8:
辉芒FT62F211是一款高性能、低功耗的8位微控制器(MCU),由辉芒科技(Holtek)公司推出。它采用了先进的CMOS工艺,具有丰富的外设和强大的功能,适用于各种嵌入式应用。
以下是辉芒FT62F211的一些主要特点和功能:
-
CPU核心:辉芒FT62F211采用了高性能的8位CPU核心,运行频率可达到20MHz,具有快速的指令执行能力。
-
存储器:该微控制器内置了4KB的闪存程序存储器,用于存储用户程序和数据。此外,还包括256字节的RAM用于数据存储。
-
外设:辉芒FT62F211提供了丰富的外设,包括多个定时器/计数器、PWM模块、UART串口通信接口、SPI和I2C总线接口、GPIO引脚等。这些外设可以满足各种应用的需求。
-
低功耗特性:辉芒FT62F211在设计上注重低功耗,具有多种省电模式和时钟管理功能,以最大程度地降低功耗并延长电池寿命。
-
宽电压工作范围:该微控制器支持宽电压工作范围,通常为2.4V至5.5V,适用于不同的供电条件。
-
外部晶振:辉芒FT62F211可以使用外部晶振或者内部RC振荡器作为时钟源,以满足不同应用的需求。
-
开发工具和支持:辉芒FT62F211提供了丰富的开发工具和软件支持,包括编译器、调试器、仿真器等,方便开发人员进行软硬件开发和调试。
引脚图如下:
下面是功能实现过程:
首先,打开辉芒的按键触摸工具软件 FMDTouchTool,配置按键并下载;
下载完成后点击左上角进入调试界面;
先调试不触摸,再调试触摸灵敏度;
最后可以进行效果验证,触摸按键查看波形。最后生成应用代码。
在生成代码的基础上添加如下代码:(开发环境:FMDIDE)
#define Brightness0_H 0 //亮度等级0 全灭
#define Brightness0_L 0
#define Brightness1_H 0 //亮度等级1 半亮
#define Brightness1_L 125
#define Brightness2_H 1 //亮度等级2 全亮
#define Brightness2_L 0
unsigned char ucKeySingle = 0; //按键标志位
unsigned char key_time=0; //按键按下次数
bit key_less_flag;
/*-------------------------------------------------
* 函数名: PWM_INITIAL
* 功能: PWM初始化函数 pa1产生38KHZ方波
* 输入: 无
* 输出: 无
--------------------------------------------------*/
void PWM_INITIAL(void)
{
T2CON0=0B00110001; //T2预分频1:4,后分频1:1
//BIT7: 0:无意义; 1:把PR2/P1xDTy缓冲值分别更新到PR2寄存器和P1xDTy_ACT
//BIT6~BIT3: 定时器2输出后分频比选择 0000:1:1;0001:1:2;……1:16
//BIT2:0:关闭定时器2;1:打开定时器2
//BIT1~0:定时器2预分频选择 00:1;01:4;1x:16
T2CON1=0B00000001; //T2时钟来自系统时钟,PWM连续模式
//BIT4: PWM模式选择 0:连续模式;1:单脉冲模式
//BIT3: 0:PWM模式;1:蜂鸣器模式
//Timer2时钟源选择:000:指令时钟;001:系统时钟;010:HIRC的2倍频;100:HIRC;101:LIRC
TMR2H=1; //定时器2计数寄存器
TMR2L=200;
PR2H=0; //周期=(PR2+1)*Tt2ck*TMR2预分频
PR2L=254; //100
P1BDTH = Brightness0_H; //脉宽=P1xDT*Tt2ck*TMR2预分频
P1BDTL = Brightness0_L; //初始化亮度0;
P1CDTH = Brightness0_H; //脉宽=P1xDT*Tt2ck*TMR2预分频
P1CDTL = Brightness0_L; //初始化亮度0;
P1OE=0B11000000; //P1B0输出使能,P1C0输出使能
//BIT7: 0:禁止P1C输出到管脚;1:允许P1C输出到管脚
//BIT6: 0:禁止P1B输出到管脚;1:允许P1B输出到管脚
//BIT5: 0:禁止P1D输出到管脚;1:允许P1D输出到管脚
//BIT3~BIT2: 故障下,[P1C]管脚的状态,只有当P1CALT为1时才有效 00=高阻 01=输出0 1x=输出1
//BIT1: 0:禁止P1A0N输出到管脚;1:允许P1A0N输出到管脚
//BIT0: 0:禁止P1A0输出到管脚;1:允许P1A0输出到管脚
P1POL=0B00000000; //P1A0高电平有效
//BIT7: 0:P1C高电平有效;1:P1C低电平有效
//BIT6: 0:P1B高电平有效;1:P1B低电平有效
//BIT5: 0:P1D高电平有效;1:P1D低电平有效
//BIT1: 0:P1A0N高电平有效;1:P1A0N低电平有效
//BIT0: 0:P1A0高电平有效;1:P1A0低电平有效
P1CON=0B00000000;
//BIT7:PWM1 重启使能位
//1 = 故障刹车时,P1BEVT位在退出关闭事件时自动清零,PWM1自动重启
//0 = 故障刹车时,必须用软件将P1BEVT清零以重启PWM1
//BIT6~0:PWM1死区时间设置
//P1DCn = 预定MPWM信号应转变为有效与PWM信号实际转为有效之间的T2CK周期数
TMR2IF=0; //清TIMER2中断标志
//TMR2IE=1; //使能TIMER2的中断
TMR2ON=1; //打开定时器2
PEIE=1; //使能外设中断
GIE=1; //使能全局中断
}
/*------------------------------------------------------------------------------------------
* 函数名: main
* 功能: 主函数
* 输入: 无
* 输出: 无
----------------------------------------------------------------------------------------------*/
void main(void)
{
SYS_INITIAL(); //系统初始?
key_time = 0;
DelayUs(250);
DelayUs(250);
WDT_INITIAL(); //WDT初始化
TOUCH_INITIAL(); //按键初始化
PWM_INITIAL();
//LED(); // Demo led 初始化
while(1)
{
CLRWDT();
TSC_Start(); //扫键
if(TSC_DataProcessing()==1)
{
ucKeySingle = TSC_GetSingle(); //生成有效按键
//LED_Scan(); // Demo led 有效按键提示
if(ucKeySingle==0)
{
//无按键按下
key_less_flag=0;
//无按键按下
}
else
{
//有按键按下
if(key_less_flag==0)
{
key_time++;
key_less_flag=1;
if(key_time>4)
{
key_time=0;
}
if(key_time==0)
{
P1BDTH = Brightness0_H;
P1BDTL = Brightness0_L; //赋值PWM值 PA4全灭
P1CDTH = Brightness0_H;
P1CDTL = Brightness0_L; //赋值PWM值 PA2全灭
}
else if(key_time==1)
{
P1BDTH = Brightness2_H;
P1BDTL = Brightness2_L; //赋值PWM值 PA4全亮
P1CDTH = Brightness0_H;
P1CDTL = Brightness0_L;
}
else if(key_time==2)
{
P1BDTH = Brightness1_H;
P1BDTL = Brightness1_L; //赋值PWM值 PA4半亮
P1CDTH = Brightness0_H;
P1CDTL = Brightness0_L;
}
else if(key_time==3)
{
P1BDTH = Brightness0_H;
P1BDTL = Brightness0_L;
P1CDTH = Brightness2_H;
P1CDTL = Brightness2_L; //赋值PWM值 PA2全亮
}
else if(key_time==4)
{
P1BDTH = Brightness0_H;
P1BDTL = Brightness0_L;
P1CDTH = Brightness1_H;
P1CDTL = Brightness1_L; //赋值PWM值 PA2半亮
}
}
//有按键按下
}
}
}
}
其他使用自动生成的代码即可。
生成编译后的校验和:
打开软件 FMDProgrammer,选择器件;浏览找到编译完成后的 .hex 文件。
然后就可以看到检验和了:即0x E0E2,程序也已经下载到烧录器的了,后续芯片烧录只需要按烧录器离线烧录程序就可。
绿灯为烧录成功。