打印
[其它]

HT合泰单片机入门教程(第二章 点亮第一个LED灯)

[复制链接]
344|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
妇女半边天|  楼主 | 2022-7-21 09:42 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 eltonchang2001 于 2022-7-21 11:55 编辑

前言
经常听老工程师说:“点亮一个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的更多细节操作和说明,这里我就不做详细介绍了,因为这已经够用了。



二、点亮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        
               
        }
}

————————————————
版权声明:本文为CSDN博主「猫想飞」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。


  

使用特权

评论回复

相关帖子

沙发
海滨消消| | 2022-8-15 15:53 | 只看该作者
点亮一个LED灯,你就学会了单片机

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

78

主题

124

帖子

0

粉丝