| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189 |
- /*********************************************************************************************************
- * 模块名称:Sn74hc573.c
- * 摘 要:Key模块,进行独立按键初始化,以及按键扫描函数实现
- * 当前版本:1.0.0
- * 作 者:anycrying
- * 完成日期:2024年04月11日
- * 内 容:
- * 注 意:
- **********************************************************************************************************
- * 取代版本:
- * 作 者:
- * 完成日期:
- * 修改内容:
- * 修改文件:
- *********************************************************************************************************/
- /*********************************************************************************************************
- * 包含头文件
- *********************************************************************************************************/
- #include "gd32e23x_libopt.h"
- #include "Sn74hc573.h"
- #include "Relay.h"
- /*********************************************************************************************************
- * 宏定义
- *********************************************************************************************************/
- /*********************************************************************************************************
- * 枚举结构体
- *********************************************************************************************************/
- /*********************************************************************************************************
- * 内部变量定义
- *********************************************************************************************************/
- /*********************************************************************************************************
- * 内部函数声明
- *********************************************************************************************************/
- static void Config74hc573GPIO(void); //配置按键的GPIO
- /*********************************************************************************************************
- * 内部函数实现
- *********************************************************************************************************/
- /*********************************************************************************************************
- * 函数名称:Config74hc573GPIO
- * 函数功能:配置74hc573端口
- * 输入参数:void
- * 输出参数:void
- * 返 回 值:void
- * 创建日期:2024年04月11日
- * 注 意:
- *********************************************************************************************************/
- static void Config74hc573GPIO(void)
- {
- //使能RCU相关时钟
- rcu_periph_clock_enable(LK_74hc573_OE_RCU); //使能GPIOA的时钟
- rcu_periph_clock_enable(LK_74hc573_LE_RCU); //使能GPIOB的时钟
- rcu_periph_clock_enable(CHK_JLINK_RCU); //使能GPIOB的时钟
-
- gpio_mode_set(LK_74hc573_OE_IO, GPIO_MODE_OUTPUT, GPIO_PUPD_PULLUP, LK_74hc573_OE); //配置PF6为输出 控制573的使能
- gpio_output_options_set(LK_74hc573_OE_IO, GPIO_OTYPE_PP, GPIO_OSPEED_50MHZ, LK_74hc573_OE); //设置GPIO输出模式及速度
- //Disable_74hc573_Output;
-
- gpio_mode_set(LK_74hc573_LE_IO, GPIO_MODE_OUTPUT, GPIO_PUPD_PULLDOWN,LK_74hc573_LE); //配置锁存引脚为输出,输出低电平则保持缓存
- gpio_output_options_set(LK_74hc573_LE_IO, GPIO_OTYPE_PP, GPIO_OSPEED_50MHZ,LK_74hc573_LE); //设置GPIO输出模式及速度
-
- gpio_mode_set(CHK_JLINK_IO, GPIO_MODE_INPUT, GPIO_PUPD_PULLDOWN, CHECK_JLINK_IN); //配置PC14为上拉输入,检测有下载器接入
- BUFF_Data;
- }
- /*********************************************************************************************************
- * API函数实现
- *********************************************************************************************************/
- /*********************************************************************************************************
- * 函数名称:Init_74hc573
- * 函数功能:初始化74hc573模块
- * 输入参数:void
- * 输出参数:void
- * 返 回 值:void
- * 创建日期:2024年04月11日
- * 注 意:
- *********************************************************************************************************/
- void Init_74hc573(void)
- {
- Config74hc573GPIO(); //配置74HC573的GPIO
- }
- /*********************************************************************************************************
- * 函数名称:Write_74hc573
- * 函数功能:锁存输出数据
- * 输入参数:void
- * 输出参数:void
- * 返 回 值:void
- * 创建日期:2024年04月11日
- * 注 意:
- *********************************************************************************************************/
- void Write_74hc573(uint8_t Dev,uint16_t db)
- {
- uint16_t i = 0;
- uint16_t j = 0;
- uint16_t temp_d = 0x0000;
- uint16_t temp0 = 0x0000;
- uint16_t temp1 = 0x0000;
- // BUFF0_Data;
- // BUFF1_Data;
- // BUFF2_Data;
- // BUFF3_Data;
- temp_d = db;
-
- temp0 = temp_d & 0x0007;//低3位
- temp0 = temp0 << 6;//变成高3位
- temp0 = temp0 & 0x01c0;//高3位
-
- temp1 = temp_d & 0x01c0;//高3位
- temp1 = temp1 >> 6;//变成低3位
- temp1 = temp1 & 0x0007;//低3位
-
- temp_d &= 0x0038;//只保留中间3位
- temp_d |= temp0;
- temp_d |= temp1;
-
- switch(Dev)
- {
- case LK_Relay_D:
- {
-
- // gpio_port_write(Data_Output_IO,temp_d);
- // for(i = 0;i < delay_t;i++);
- // LOCK1_Data;
- // for(i = 0;i < delay_t;i++);
- // BUFF1_Data;
- // for(i = 0;i < delay_t;i++);
- // temp_d = temp_d << 8;
- // gpio_port_write(Data_Output_IO,temp_d);
- // for(i = 0;i < delay_t;i++);
- // LOCK0_Data;
- // for(i = 0;i < delay_t;i++);
- // BUFF0_Data;
- break;
- }
- // case LK_FalseLed_D:
- // {
- // gpio_port_write(Data_Output_IO,temp_d);
- // for(i = 0;i < delay_t;i++);
- // LOCK3_Data;
- // for(i = 0;i < delay_t;i++);
- // BUFF3_Data;
- // for(i = 0;i < delay_t;i++);
- // temp_d = temp_d << 8;
- // gpio_port_write(Data_Output_IO,temp_d);
- // for(i = 0;i < delay_t;i++);
- // LOCK2_Data;
- // for(i = 0;i < delay_t;i++);
- // BUFF2_Data;
- // break;
- // }
- default:
- {
- BUFF_Data;
- // BUFF0_Data;
- // BUFF1_Data;
- // BUFF2_Data;
- // BUFF3_Data;
- break;
- }
- }
-
-
-
- }
- /*********************************************************************************************************
- * 函数名称:Chk_Jlink_conn
- * 函数功能:检测有没有连接JLINK
- * 输入参数:void
- * 输出参数:bool
- * 返 回 值:bool
- * 创建日期:2024年04月11日
- * 注 意:
- *********************************************************************************************************/
- bool Chk_Jlink_conn(void)
- {
- if(gpio_input_bit_get(CHK_JLINK_IO,CHECK_JLINK_IN) == 0)
- {
- return false;
- }
- else
- {
- return true;
- }
- }
|