单片机交流
直播中

的乏味而

12年用户 801经验值
私信 关注
[问答]

如何利用HT合泰单片机点亮第一个LED灯?

如何利用HT合泰单片机点亮第一个LED灯?

回帖(1)

王淑珍

2021-10-20 14:23:36
  经常听老工程师说:“点亮一个LED灯,你就学会了单片机。” 虽然这种说法有开玩笑的成分在里面,但也不是没有道理。因为点亮第一个LED灯,就意味着你学会了基本的IDE操作、芯片底层驱动的操作。这就跟写程序的第一句话“Hello world!”是一样的。   一、新建工程

1.启动HT-IDE3000






当电脑没有连接e-link时,打开HT-IDE3000就会弹出如下窗口:





当电脑连接了e-link,但使用的芯片不是仿真版本时,打开HT-IDE3000就会弹出如下窗口:





当电脑连接了e-link,同时使用的芯片为仿真版本时,打开HT-IDE3000就会弹出如下窗口:






以上几种情况点击确定或取消
(ps:弹出这个窗口并不影响编程)
2.建立工程

1.点击最上方菜单栏中的 “工程->新建”





2.弹出如下窗口。1:填写工程名;2:设置工程路径;3:选择MCU型号;4、选择编译器(ps:选择默认既可);5:确定选中MCU相关信息。点击Next进入下一步。





3.HT-IDE3000会默认创建一个新文件添加到工程中,下方为该文件的类型。若不需要创建新文件,取消勾选既可。点击Next进入下一步。





4.若在上一步中勾选了创建新文件,这一步就是填写该文件的名称。1:填写创建文件的名称;2:勾选可以添加外部文件。(ps:根据个人喜好填写名称和添加文件,我这里没有添加外部文件)点击Next进入下一步。




5.这里简单介绍一下左边框选的五个配置。1:工作电压(ps:用户填写);2:RC校准电压(ps:可以自动选择,也可以手动选择。)3:高速时钟选择(ps:选择HIRC或者外部XTAL);4:系统时钟选择(ps:8MHz、12MHz、16MHz);5:低速时钟选择(ps:选择外部RTC(一般为32.768kHz)或者内部LIRC(32kHz))。不同型号的MCU可能不同,但都是大同小异。点击OK进入下一步。





6.这里需要注意的地方是需要打开“未指定初值的全局变量/静态变量其默认为0”,其目的是防止程序出现内存泄露等。操作如下:点击编译选项->连接选项





在连接选项中勾选“未指定初值的全局变量/静态变量其默认为 0”。其他可以保持默认配置。点击确定保存配置。





7.到此新工程已经建立完成。关于HT-IDE3000的更多细节操作和说明,这里我就不做详细介绍了,因为这已经够用了。当然感兴趣或想更加深入了解的朋友,请戳这里,下载HT-IDE3000使用手册。----》HT-IDE3000使用手册





  二、点亮LED灯

1.了解I/O

1.我这里选择的是一款MUC为HT66F0185的开发板。在进行I/O操作之前,需要简单的了解一下合泰输入/输出引脚结构。以下是HT66F1085数据手册的截图。用户可以通过程序控制I/0的输入或者输出状态。所有I/O口都带有上拉电阻(ps:Type 30K@5V 60K@3V),并且PA口带有下降沿唤醒功能。





2.下图为HT66F1085的I/O相关寄存器。
“—”:未定义,读为“0”
PAWUn:PA 口引脚唤醒功能控制
0:除能
1:使能
PAPUn/PBPUn/PCPUn/PDPUn:输入 / 输出引脚上拉功能控制
0:除能
1:使能
PAn/PBn/PCn/PDn:输入 / 输出口数据位
0:数据 0
1:数据 1
PACn/PBCn/PCCn/PDCn:输入 / 输出引脚类型选择
0:输出
1:输入





3.关于I/O的介绍还有很多,我这里不做过多的解释。想要深入了解的朋友可以去官网下载该数据手册看看。——》HT66F0185数据手册下载
2.LED代码

我这里的开发板是PA3连接LED灯(ps:开发板连接的引脚和比较器输出公用,需要关闭比较器功能),所以控制的是PA3口。LED以500ms为间隔闪烁。
代码如下:

#include "HT66F0185.h"


/*******************************************************************************
* @fn                delayMs       
* @brief        延时函数
* @param        延时时间 单位为ms
* @return        无
*******************************************************************************/
void delayMs(unsigned long int ms){
       
        while(ms--)
                GCC_DELAY(2000);//主频8Mhz,执行一条指令为0.5us。一条指令周期等于四条机器周期——》 1/8Mhz * 4 = 0.5us
}


/*******************************************************************************
* @fn                main       
* @brief        主函数
* @param        无
* @return        无
*******************************************************************************/
void main(void)
{
        _wdtc = 0b10101000;//关闭看门狗。直接配置看门狗寄存器,0b代表二进制。
        _pac3 = 0;//设置PA3口为输出
        _cos=1;//设置pa3管脚为IO,而不是比较器输出
        while(1){
                _pa3 = 1;//设置PA3输出高电平 高电平为VDD
                delayMs(500);//延时500ms
                _pa3 = 0;//设置PA3输出低电平
                delayMs(500);//延时500ms       
               
        }
}

总结

  假如你已经完成了以上步骤,成功点亮了LED灯。那么恭喜你,已经入门了!!!我们下一章见!!!!
举报

更多回帖

发帖
×
20
完善资料,
赚取积分