第一次提交
This commit is contained in:
177
Bsp/bsp_74hc595.c
Normal file
177
Bsp/bsp_74hc595.c
Normal file
@@ -0,0 +1,177 @@
|
||||
/*************************************************************************
|
||||
> File Name: 74hc595.c
|
||||
> Author: ma6174
|
||||
> Mail: ma6174@163.com
|
||||
> Created Time: 2023/9/20 17:48:24
|
||||
************************************************************************/
|
||||
|
||||
#include "bsp_74hc595.h"
|
||||
#include <stdlib.h>
|
||||
#include <stdio.h>
|
||||
#include <stdint.h>
|
||||
|
||||
|
||||
#define DS_MOS(a) if (a) \
|
||||
gpio_bits_set(GPIOB, GPIO_PINS_14);\
|
||||
else \
|
||||
gpio_bits_reset(GPIOB, GPIO_PINS_14)
|
||||
|
||||
#define SHCP_MOS(a) if (a) \
|
||||
gpio_bits_set(GPIOA, GPIO_PINS_8);\
|
||||
else \
|
||||
gpio_bits_reset(GPIOA, GPIO_PINS_8)
|
||||
|
||||
#define STCP_MOS(a) if (a) \
|
||||
gpio_bits_set(GPIOB, GPIO_PINS_15);\
|
||||
else \
|
||||
gpio_bits_reset(GPIOB, GPIO_PINS_15)
|
||||
|
||||
#define OE_MOS(a) if (a) \
|
||||
gpio_bits_set(GPIOB, GPIO_PINS_13);\
|
||||
else \
|
||||
gpio_bits_reset(GPIOB, GPIO_PINS_13)
|
||||
|
||||
#define MR_MOS(a) if (a) \
|
||||
gpio_bits_set(GPIOA, GPIO_PINS_7);\
|
||||
else \
|
||||
gpio_bits_reset(GPIOA, GPIO_PINS_7)
|
||||
|
||||
inline void ic_74hc595_delay(uint32_t num)
|
||||
{
|
||||
while(num --);
|
||||
}
|
||||
|
||||
void ic_74hc595_init(void)
|
||||
{
|
||||
gpio_init_type gpio_init_struct;
|
||||
|
||||
/* enable the led clock */
|
||||
crm_periph_clock_enable(CRM_GPIOA_PERIPH_CLOCK,TRUE);
|
||||
crm_periph_clock_enable(CRM_GPIOB_PERIPH_CLOCK,TRUE);
|
||||
|
||||
/* set default parameter */
|
||||
gpio_default_para_init(&gpio_init_struct);
|
||||
|
||||
/* configure the led gpio */
|
||||
gpio_init_struct.gpio_drive_strength = GPIO_DRIVE_STRENGTH_STRONGER;
|
||||
gpio_init_struct.gpio_out_type = GPIO_OUTPUT_PUSH_PULL;
|
||||
gpio_init_struct.gpio_mode = GPIO_MODE_OUTPUT;
|
||||
gpio_init_struct.gpio_pins = GPIO_PINS_8;
|
||||
gpio_init_struct.gpio_pull = GPIO_PULL_NONE;
|
||||
gpio_init(GPIOA, &gpio_init_struct);
|
||||
|
||||
gpio_init_struct.gpio_pins = GPIO_PINS_13 | GPIO_PINS_14 | GPIO_PINS_15;
|
||||
gpio_init(GPIOB, &gpio_init_struct);
|
||||
ic_74hc595_clean_0(32);
|
||||
}
|
||||
|
||||
//<2F><>λ<EFBFBD>Ĵ<EFBFBD><C4B4><EFBFBD>ij<EFBFBD><C4B3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>1<EFBFBD><31><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>0;
|
||||
//<2F><>ΪӲ<CEAA><D3B2><EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD><D3A6>ɨ
|
||||
void ic_74hc595_io_write_1(uint8_t io_num)
|
||||
{
|
||||
|
||||
DS_MOS(1);
|
||||
SHCP_MOS(1);
|
||||
ic_74hc595_delay(1);
|
||||
SHCP_MOS(0);
|
||||
|
||||
for(uint8_t i = 0; i < io_num; i++)
|
||||
{
|
||||
DS_MOS(0);
|
||||
SHCP_MOS(1);
|
||||
ic_74hc595_delay(1);
|
||||
SHCP_MOS(0);
|
||||
ic_74hc595_delay(1);
|
||||
}
|
||||
STCP_MOS(1);
|
||||
ic_74hc595_delay(1);
|
||||
STCP_MOS(0);
|
||||
}
|
||||
|
||||
//<2F><>λ<EFBFBD>Ĵ<EFBFBD><C4B4><EFBFBD>ij<EFBFBD><C4B3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>0,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>1<EFBFBD><31>
|
||||
//<2F><>ΪӲ<CEAA><D3B2><EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD><D3A6>ɨ
|
||||
void ic_74hc595_io_write_0(uint8_t io_num)
|
||||
{
|
||||
DS_MOS(0);
|
||||
SHCP_MOS(1);
|
||||
ic_74hc595_delay(1);
|
||||
SHCP_MOS(0);
|
||||
|
||||
for(uint8_t i = 0; i < io_num; i++)
|
||||
{
|
||||
DS_MOS(1);
|
||||
SHCP_MOS(1);
|
||||
ic_74hc595_delay(1);
|
||||
SHCP_MOS(0);
|
||||
ic_74hc595_delay(1);
|
||||
}
|
||||
STCP_MOS(1);
|
||||
ic_74hc595_delay(1);
|
||||
STCP_MOS(0);
|
||||
}
|
||||
//<2F><>λ<EFBFBD>Ĵ<EFBFBD><C4B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȫ<EFBFBD><C8AB><EFBFBD><EFBFBD>0
|
||||
//<2F><>ΪӲ<CEAA><D3B2><EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD><D3A6>ɨ
|
||||
void ic_74hc595_clean_0(uint8_t io_num)
|
||||
{
|
||||
DS_MOS(0);
|
||||
SHCP_MOS(0);
|
||||
STCP_MOS(0);
|
||||
|
||||
for(uint8_t i = 0; i < io_num; i++)
|
||||
{
|
||||
SHCP_MOS(1);
|
||||
ic_74hc595_delay(1);
|
||||
|
||||
//<2F><>Ϊ<EFBFBD>͵<EFBFBD>ƽ<EFBFBD><C6BD>Ϊ<EFBFBD>´<EFBFBD><EFBFBD><D7BC>
|
||||
SHCP_MOS(0);
|
||||
ic_74hc595_delay(1);
|
||||
}
|
||||
|
||||
STCP_MOS(1);
|
||||
ic_74hc595_delay(1);
|
||||
STCP_MOS(0);
|
||||
}
|
||||
|
||||
//<2F><>λ<EFBFBD>Ĵ<EFBFBD><C4B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȫ<EFBFBD><C8AB><EFBFBD><EFBFBD>1;
|
||||
//<2F><>ΪӲ<CEAA><D3B2><EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD><D3A6>ɨ
|
||||
void ic_74hc595_clean_1(uint8_t io_num)
|
||||
{
|
||||
DS_MOS(1);
|
||||
SHCP_MOS(0);
|
||||
STCP_MOS(0);
|
||||
|
||||
for(uint8_t i = 0; i < io_num; i++)
|
||||
{
|
||||
SHCP_MOS(1);
|
||||
ic_74hc595_delay(1);
|
||||
|
||||
//<2F><>Ϊ<EFBFBD>͵<EFBFBD>ƽ<EFBFBD><C6BD>Ϊ<EFBFBD>´<EFBFBD><EFBFBD><D7BC>
|
||||
SHCP_MOS(0);
|
||||
ic_74hc595_delay(1);
|
||||
}
|
||||
|
||||
STCP_MOS(1);
|
||||
ic_74hc595_delay(1);
|
||||
STCP_MOS(0);
|
||||
}
|
||||
|
||||
void ic_74hc595_wirte_32bit(uint32_t data)
|
||||
{
|
||||
DS_MOS(0);
|
||||
SHCP_MOS(0);
|
||||
STCP_MOS(0);
|
||||
uint32_t temp = 0;
|
||||
for(uint8_t i = 0; i < 32; i++)
|
||||
{
|
||||
temp = data & (0x80000000>>i);
|
||||
DS_MOS(temp);
|
||||
SHCP_MOS(1);
|
||||
ic_74hc595_delay(1);
|
||||
SHCP_MOS(0);
|
||||
ic_74hc595_delay(1);
|
||||
}
|
||||
STCP_MOS(1);
|
||||
ic_74hc595_delay(1);
|
||||
STCP_MOS(0);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user