| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126 |
- /*********************************************************************************************************
- * 模块名称:Sn74hc595.c
- * 摘 要:通过Sn74hc595来扩展驱动故障指示灯
- * 当前版本:1.0.0
- * 作 者:anycrying
- * 完成日期:2024年04月06日
- * 内 容:
- * 注 意:
- **********************************************************************************************************
- * 取代版本:
- * 作 者:
- * 完成日期:
- * 修改内容:
- * 修改文件:
- *********************************************************************************************************/
- /*********************************************************************************************************
- * 包含头文件
- *********************************************************************************************************/
- #include "SysTick.h"
- #include "Sn74hc595.h"
- /*********************************************************************************************************
- * 宏定义
- *********************************************************************************************************/
- /*********************************************************************************************************
- * 枚举结构体
- *********************************************************************************************************/
- /*********************************************************************************************************
- * 内部变量定义
- *********************************************************************************************************/
- /*********************************************************************************************************
- * 内部函数声明
- *********************************************************************************************************/
- static void Config74hc595GPIO(void); //配置按键的GPIO
- /*********************************************************************************************************
- * 内部函数实现
- *********************************************************************************************************/
- /*********************************************************************************************************
- * 函数名称:Config74hc595GPIO
- * 函数功能:配置595的GPIO
- * 输入参数:void
- * 输出参数:void
- * 返 回 值:void
- * 创建日期:2024年04月06日
- * 注 意:
- *********************************************************************************************************/
- static void Config74hc595GPIO(void)
- {
- //使能RCU相关时钟
- rcu_periph_clock_enable(FAULT_74hc595_RCU); //使能GPIOA的时钟
-
- gpio_mode_set(FAULT_74hc595_IO, GPIO_MODE_OUTPUT, GPIO_PUPD_NONE, FAULT_74hc595_SHCLK); //配置PA11为输出,595移位时钟
- gpio_output_options_set(FAULT_74hc595_IO, GPIO_OTYPE_PP, GPIO_OSPEED_50MHZ, FAULT_74hc595_SHCLK); //设置GPIO输出模式及速度
- gpio_bit_reset(FAULT_74hc595_IO, FAULT_74hc595_SHCLK); //将FAULT_74hc595_SHCLK默认状态设置为低
-
- gpio_mode_set(FAULT_74hc595_IO, GPIO_MODE_OUTPUT, GPIO_PUPD_NONE, FAULT_74hc595_STCLK); //配置PA12为输出,595存储及输出时钟
- gpio_output_options_set(FAULT_74hc595_IO, GPIO_OTYPE_PP, GPIO_OSPEED_50MHZ, FAULT_74hc595_STCLK); //设置GPIO输出模式及速度
- gpio_bit_reset(FAULT_74hc595_IO, FAULT_74hc595_STCLK); //将FAULT_74hc595_STCLK默认状态设置为低
-
- gpio_mode_set(FAULT_74hc595_IO, GPIO_MODE_OUTPUT, GPIO_PUPD_NONE, FAULT_74hc595_DATA); //配置PA15为输出,595串行数据输入
- gpio_output_options_set(FAULT_74hc595_IO, GPIO_OTYPE_PP, GPIO_OSPEED_50MHZ, FAULT_74hc595_DATA); //设置GPIO输出模式及速度
- gpio_bit_reset(FAULT_74hc595_IO, FAULT_74hc595_DATA); //将FAULT_74hc595_DATA默认状态设置为低
- L_SHCLK;
- L_STCLK;
- }
- /*********************************************************************************************************
- * API函数实现
- *********************************************************************************************************/
- /*********************************************************************************************************
- * 函数名称:Init_74hc595
- * 函数功能:初始化74hc595模块
- * 输入参数:void
- * 输出参数:void
- * 返 回 值:void
- * 创建日期:2024年04月06日
- * 注 意:
- *********************************************************************************************************/
- void Init_74hc595(void)
- {
- Config74hc595GPIO(); //配置74HC573的GPIO
- }
- /*********************************************************************************************************
- * 函数名称:Fault_display
- * 函数功能:故障灯指示函数
- * 输入参数:unsigned char da。8位数,从低到高分别对应1~8路指示灯,x位为1时,灯这亮;0时,灯灭
- * 输出参数:void
- * 返 回 值:void
- * 创建日期:2024年04月06日
- * 注 意:
- *********************************************************************************************************/
- void Fault_display(unsigned char da)
- {
- unsigned char i = 0;
- unsigned char temp_d0 = 0x00;
- unsigned char temp_d1 = 0x00;
- temp_d0 = da;
-
- L_SHCLK;
- L_STCLK;
- for(i = 0;i < 8;i++)
- {
- temp_d1 = temp_d0 >> i;//数据左移i位
- if((temp_d1 & 0x01) > 0)//低位先出
- {
- H_DATA;
- }
- else
- {
- L_DATA;
- }
- DelayNus(1);//延时1uS
- H_SHCLK;
- DelayNus(1);//延时1uS
- L_SHCLK;
- }
- DelayNus(1);//延时1uS
- H_STCLK;
- DelayNus(1);//延时1uS
- L_STCLK;
- }
|