74HC595.c源文件
#include "74HC595.h"
void LED595Init(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOA | RCC_AHBPeriph_GPIOC , ENABLE);
//Data Pin
// GPIO_InitStructure.GPIO_Pin = LED595_DATA_PIN;
// GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;
// GPIO_InitStructure.GPIO_Speed = GPIO_Speed_10MHz;
// GPIO_Init(LED595_DATA_PIN, &GPIO_InitStructure);
//Clk Pin
GPIO_InitStructure.GPIO_Pin = LED595_CLK_PIN;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_10MHz;
GPIO_Init(LED595_CLK_PORT, &GPIO_InitStructure);
//Latch Pin
GPIO_InitStructure.GPIO_Pin = LED595_LATCH_PIN | LED595_DATA_PIN;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_10MHz;
GPIO_Init(LED595_LATCH_PORT, &GPIO_InitStructure);
}
/**
* @brief 将输入的数据输出到74HC595的引脚.
* @param Input 1 byte data.
* @retval None.
**/
void LED595SendData(unsigned char OutData)
{
unsigned char i; //发送数据时做循环使用临时变量
for(i=0; i<8; i++) //将8位数据按位发送,先发送高字节后发送低字节
{
LED595_CLK_RESET;//时钟线低电平
if( (OutData & 0x80) == 0x80)//判断数据高低位
{
LED595_DATA_SET; //数据线高电平
}
else
{
LED595_DATA_RESET; //数据线低电平
}
OutData = OutData << 1; //数据左移1位
LED595_CLK_SET; //时钟线高电平
}
//上升沿输出数据
LED595_LATCH_RESET;
LED595_LATCH_SET;
}
74HC595.h头文件
//74HC595口线定义宏定义.当驱动74HC595引脚改变时,只需更改底层引脚宏定义即可
#ifndef __74HC595_H
#define __74HC595_H
#include "stm32f0xx.h"
//#include "stm32f0xx_gpio.h"
#define LED595_DATA_PORT GPIOC
#define LED595_DATA_PIN GPIO_Pin_8
#define LED595_CLK_PORT GPIOA
#define LED595_CLK_PIN GPIO_Pin_12
#define LED595_LATCH_PORT GPIOC
#define LED595_LATCH_PIN GPIO_Pin_12
//74HC595口线高低电平宏定义
#define LED595_DATA_SET GPIO_SetBits(LED595_DATA_PORT,LED595_DATA_PIN)
#define LED595_DATA_RESET GPIO_ResetBits(LED595_DATA_PORT,LED595_DATA_PIN)
#define LED595_CLK_SET GPIO_SetBits(LED595_CLK_PORT,LED595_CLK_PIN)
#define LED595_CLK_RESET GPIO_ResetBits(LED595_CLK_PORT,LED595_CLK_PIN)
#define LED595_LATCH_SET GPIO_SetBits(LED595_LATCH_PORT,LED595_LATCH_PIN)
#define LED595_LATCH_RESET GPIO_ResetBits(LED595_LATCH_PORT,LED595_LATCH_PIN)
void LED595Init(void);
void LED595SendData(unsigned char OutData);
#endif
main函数调用
LED595SendData(0x00);
Delay_Ms(1000);
LED595SendData(0xff);
Delay_Ms(1000);
上一篇:STM32F07xx单片机串口4配置
下一篇:STM32F07xx单片机串口1重映射配置
推荐阅读最新更新时间:2024-11-17 12:08
推荐帖子
- LM3S 系列单片机如何做到掉电检测
- LM3S系列单片机如何做到掉电检测有没有具体文档说明!!!LM3S系列单片机如何做到掉电检测注意看器件手册,看该MCU是否带有片内电源电压检测器,注意要看具体型号的器件手册,如果没有可以外置。楼上你好LM3S308是有这个功能那要用什么方式来检测回复沙发chunyang的帖子原帖由zhong1214于2011-5-3017:23发表楼上你好LM3S308是有这个功能那要用什么方式来检测貌似一般是检测到掉电的时候,会发生一个中断,在中断里
- zhong1214 微控制器 MCU
- 有源滤波器的Q值有什么意义?
- 《基于运算放大器和模拟集成电路的电路设计》一书中有源滤波器章节里提到了Q值,这个Q值越大,峰化越明显,可峰化同时也放大了增益。请问这个Q值到底有什么意义呢?有源滤波器的Q值有什么意义?Q越大带宽越窄做滤波器设计时可以用来调整通带外每倍频程的衰减速度,Q越大衰减越快,同时f0处幅度更加陡峭,相位突变更迅速;
- 3kone 模拟电子
- wince能否在运行的时候再次加载display driver?
- 我知道有的驱动可以动态loadunload不知道displaydriver是否可以?怎样实现?wince能否在运行的时候再次加载displaydriver?你又开一个贴啊,顶一下了。估计做驱动的高手了解一些吧是啊,我不是做驱动的,只能顶一下。去看看PB的驱动帮助吧,可能会不行的!就这个问题我搞了好几天了!实在想不出怎么解决!!不行,显示驱动是built-in类型的,它是由GWES来调用,不能反复加载。我试过,不可以,或者说没成功。不行的,这和device.exe管理的驱动
- MCU—杨博 WindowsCE
- 热烈祝贺STM32互联型产品STM32F105/107荣获2009年度EDNChina创新奖
- 继STM32在2009年度EDNChina创新奖评选活动中,荣获微处理器与DSP组的“最佳产品奖”之后,STM32的互联型产品STM32F105/107在2009年度EDNChina创新奖评选中,再拔头筹,荣获今年的微处理器与DSP组的“最佳产品奖”。详细情况请看:http://award.ednchina.com/year/2009.aspxhttp://award.ednchina.com/Product/Product_Detail.aspx?ProductId=801热
- whl0808 stm32/stm8
- 为什么UWB可以进行精准测距,而蓝牙和WIFI不行?
- UWB的测距原理是计算信号在空中的飞行时间,简单来说就是信号发送时间到接收的时间差,再减去对向设备处理的时间(对向设备会把处理时间放在数据包里传过来),然后用光速乘以最终计算的时间,这样就可以得到两个设备之间的距离。那蓝牙和WIFI按道理来说应该也是可以像这样操作来测距的才对,大家觉得为什么只有UWB能精准测距?为什么UWB可以进行精准测距,而蓝牙和WIFI不行?可能是因为蓝牙和Wi-Fi的测距方法有一些区别,导致其无法像UWB一样精准测距 感觉蓝牙和WIFI测距靠的是信号
- wangerxian RF/无线
- ARM处理器系统初始化过程
- 本问节选自《嵌入式系统Linux内核开发实战指南(ARM平台)》一书每次系统上电/复位启动时,处理器都处于一种最低性能即只有最基本功能的状态,此时它只能从复位向量地址处去读取指令,其他功能模块都处于禁止或者不可预知状态,而一旦处理器从复位向量地址位置读取到第一条指令开始执行,那么从软件的角度看,处理器和整个系统就开始进入了软件可控状态,系统下面的行为就由软件流程决定,软件要做的第一件事就是初始化整个系统。系统初始化的一般顺序为:1)禁止MMU,关闭中断,禁止cache;2)根据硬
- hnzpzg ARM技术
设计资源 培训 开发板 精华推荐
- 【吉医ican 大赛】
- EVAL-AD7853CB,使用 AD7853、12 位、200 kSPS 单通道、采样增量模数转换器的评估板
- QS30辉光管
- 具有集成电感器的 EN5339QI 3A 薄型同步降压 DC-DC 转换器的典型应用
- 用于工业应用的 C8051F545 MCU 的 C8051F540DK、8051 开发系统
- LT3754 的典型应用 - 16 通道 -50mA LED 驱动器
- ZR431FTA 可调精密齐纳并联稳压器的典型应用
- LTC4367HMS8-1 用于滞后调节的过压电源控制器的典型应用
- TB62730WLG 白光 LED 升压型 DC/DC 转换器的典型应用
- 家庭巡查车
- 2024年Automechanika Shanghai海量同期活动刷新历届记录,汇聚行业智慧,共谋未来发展
- 企业文化分享 如何培养稀缺的硅IP专业人员?SmartDV开启的个人成长与团队协作之旅
- 恩智浦发布首个超宽带无线电池管理系统解决方案
- 北交大本科生探秘泰克先进半导体开放实验室,亲历前沿高科技魅力
- 新帅上任:杜德森博士(Dr. Torsten Derr)将于2025年1月1日出任肖特集团首席执行官
- 边缘 AI 如何提升日常体验
- 苹果要首发!台积电宣布2nm已准备就绪
- AMD有望用上全新芯片堆叠技术:延迟大幅减少、性能显著提升
- 宁德时代发布10月战报
- 2024年10月电池行业:增长势头不减!
- TI有奖直播|如何进行更加快速、简单且成本更低的AI 摄像头应用的开发
- 激情竞赛日--看谁最给力!
- 有奖直播:赋能移动电源,贝能推出1800W全数字双向电源方案
- 下载喽:PCIe要了解的10件事和识别协议的BSX系列BERTScope误码率测试仪技术资料
- STM32H7R/S 高性能MCU 开启全新的创新机遇!答题好礼~还有开发板等你拿!
- 帮助他人,成就自己:EEWORLD月度问答榜(第4期)
- 下载有礼|ADI 系统方案精选 (总辑)
- 有奖直播 | Keysight HDMI 2.1b 测试技术研讨会
- 从终端到架构,TE Connectivity(TE)助你连接5G高速未来 看视频答题赢好礼!