本帖最后由 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版权协议,转载请附上原文出处链接及本声明。
|