合泰杯(HT66F2390)两种方式点亮一个LED灯(基本原理和外设)

简要:

本文主要讲述,用两种方式点亮板子的一个LED灯,

并介绍相关的寄存器和硬件,了解板子的基本原理和简单外设(发光二极管)


正文:


第一种:
 

先将键帽移动至PH0与LED2一端



创立工程(相关文章之前有写,不会的可以往期查阅)
打开ESK-303的使用手册中看原理图

 


可知控制LED1/LED2的寄存器是PH0/PH1寄存器


1.了解相关的寄存器             (手册的下载之前有发过相关文章)

    1.看门狗定时器


为防止mcu复位,在代码开始之前,需要除能看门狗
代码例子 :

_wdtc=0b10101111; // 关闭看门狗计时器,避免它在程序运行时复位单片机

注意,合泰板子是以 _****(下划线加寄存器名称)命名

2.输入/输出端口
 

_pxgc是合泰gpio口的命名方式,使能0为输出,使能1为输入,

和51的P0 ,P1,P2相似,可近似理解
(这里的x可以是A,B,C,D,E,F,G,H)

 


合泰的输入输出寄存器资源极多,
我们主要用到输入输出端口控制寄存器

相关代码例子:

	_phc = 0x00000001;//对寄存器整体赋值
   	_ph0 = 1;         //对寄存器的某一位进行赋值

更多关于输入输出端口的寄存器和相关配置,可以自行查阅手册


 

2.点灯代码
 

#include "HT66F2390.h" // 包含HT66F2390单片机的头文件,用于访问特定的功能和寄存器

 //定义LED控制宏
#define LED  _phc   				// 将宏LED定义为对应控制端口PHC(用于控制GPIO的高低电平)
#define LED2  _ph0  				// 将宏LED2定义为对应PH0端口,用作LED的输出端口
#define LED1  _ph1  				// 将宏LED1定义为对应PH1端口,同样用作LED的输出端口

//void delay(unsigned long count); // 声明延时函数 10us

void main() // 主函数
{
    _wdtc=0b10101111;  				// 关闭看门狗计时器,避免它在程序运行时复位单片机
    LED = 0;                       //配置ph寄存器对应的io口为输出模式
   while(1)
   {
   	
   	_ph = 0x00000001;              //ph0为高电平
   //相同功能写法还有:_ph0 = 1;LED2 = 1;
   }
    
}
    
void delay(unsigned long count) 	//延时级别10us
{
    volatile unsigned long i;  
    for(i=0;i<count;i++) 
        asm("nop");
}
效果演示

第二种:


将键帽插回PH与I/O端


接线:

原理图:
 

依旧是在ESK-303手册中截图,可在合泰官网下载


代码:
#include "HT66F2390.h" // 包含HT66F2390单片机的头文件,用于访问特定的功能和寄存器

 //定义LED控制宏
#define LED  _phc   				// 将宏LED定义为对应控制端口PHC(用于控制GPIO的高低电平)

void delay(unsigned long count); // 声明延时函数 10us

void main() // 主函数
{
    _wdtc=0b10101111;  				// 关闭看门狗计时器,避免它在程序运行时复位单片机
    LED = 0;                       //配置ph寄存器对应的io口为输出模式
    while(1)
    {
    _ph0 = 0;                        //PH0低电平,导通 LED亮
    delay(50000);                    //延时500ms
    _ph0 = 1;                         //PH0为高电平,不导通 LDE灭
    delay(50000);
    
    }
    
}
    
void delay(unsigned long count) 	//延时级别10us
{
    volatile unsigned long i;  
    for(i=0;i<count;i++) 
        asm("nop");
}
效果演示:
 

HT66F2390 点灯演示

其他:

delay函数快捷生成

合泰 Uart HT66F2390 驅動庫的.C 和.H文件的生成通常需要根據該芯片的數據手冊和硬件接口來編寫。以下是簡單的模擬示例,實際情況下你可能需要参考官方文档或API: 首先,我们创建一个名为`HT66F2390_UART.h`的头文件 (Header File),它包含了函数声明: ```c // HT66F2390_UART.h #ifndef HT66F2390_UART_H #define HT66F2390_UART_H #include <stdio.h> #include <stdint.h> typedef struct { uint8_t* port_base; // UART端口地址 uint16_t baud_rate; // 波特率 } HT66F2390_uart_config; void init_uart(HT66F2390_uart_config* config); void send_data(uint8_t data); void receive_data(uint8_t* data, uint16_t size); #endif /* HT66F2390_UART_H */ ``` 接下来,我们创建一个名为`HT66F2390_UART.c`的源文件 (Source File),实现相应的功能: ```c // HT66F2390_UART.c #include "HT66F2390_UART.h" // 初始化UART void init_uart(HT66F2390_uart_config* config) { // 根据实际硬件配置初始化 // 这里假设通过GPIO设置波特率等 // ... } // 发送数据 void send_data(uint8_t data) { // 写入数据到UART发送缓冲区 // ... } // 接收数据 void receive_data(uint8_t* data, uint16_t size) { // 从UART接收缓冲区读取数据并存放到用户提供的缓冲区 // ... } // 示例如何使用这个库 int main(void) { HT66F2390_uart_config config = {UART_PORT_BASE, BAUD_RATE}; init_uart(&config); // 然后你可以通过send_data()和receive_data()来进行通信... return 0; } ``` 这只是一个基本框架,实际编写时要根据合泰Uart HT66F2390的具体硬件特性、中断机制以及驱动接口来调整。在完成之后,记得检查是否已包含必要的头文件,并确保所有操作都是安全的。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值