历史上的今天
返回首页

历史上的今天

今天是:2024年09月27日(星期五)

正在发生

2021年09月27日 | STM32F103 呼吸灯的实现

2021-09-27 来源:eefocus

呼吸灯,也就是让灯的亮度随着时间的变化而变化,而要实现这个变化,我们需要通过占空比来完成,也就是是通过PWM来实现这个操作,只要我们发送的频率足够的快,因为人眼的视觉暂留的原因,人是不能看到灯灭掉的,所以只要脉冲的宽度越宽,可以看到的灯也就越亮。


下面就是通过STM32103这块板子的代码实现。


先写关于点灯的c文件


#include "led.h"

#include "stm32f10x.h"

#include "delay.h"

//初始化GPIO端口

void Led_Init(void){

GPIO_InitTypeDef GPIO_InitStructure;

RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);//打开GPIOB的系统时钟

GPIO_InitStructure.GPIO_Pin = LED1 | LED2;                       

GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;       

GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;    

GPIO_Init( GPIOB,GPIO_InitStructure);

}


//实现呼吸灯

void Led_Breathe(void){

u16 t,i;

u8 flag = 0;

t = 1;

if(flag == 0){ //变量的循环

for(i = 0 ; i <= 10 ; i++){

GPIO_WriteBit(LEDPORT,LED1,(BitAction)(1));

delay_us(t);

GPIO_WriteBit(LEDPORT,LED1,(BitAction)(0));

delay_us(501-t);

}

t++;

if(t == 500) flag = 1;

}

if(flag == 1){ //变暗操作

for(i = 0 ; i <= 10 ; i++){

GPIO_WriteBit(LEDPORT,LED1,(BitAction)(1));

delay_us(t);

GPIO_WriteBit(LEDPORT,LED1,(BitAction)(0));

delay_us(501-t);

}

t --

if(t == 1) flag = 0;

}

}


上面我们已经完成了.c 文件,接下来就是完成.h文件.

.h文件一般都是.c里面的宏定义和.c文件里面函数的声明


#ifndef __LED_H

#define __LED_H  

#include "sys.h"


#define LED1 GPIO_Pin_0

#define LED2 GPIO_Pin_1


void Led_Init(void);

void Led_Breathe(void);


这样我们就已经完成了90%了,我们接下来只要把.c和.h文件按照之前的方法添加都project里面,然后再在main函数里面实现一下就可以了


下面就是main函数的实现代码


#include "led.h"

#include "stm32f10x.h"


void main(){

while(1){ // 让呼吸灯一直进行

Led_Init();

Led_Breathe();

}

}


这样就完成了一个呼吸灯的操作,里面使用的函数,比如GPIO口的初始化,为什么是那样写的,我们可以去参考ST公司对于板子的芯片手册,里面有详细的解释,至于led灯的原理图,需要的也可以在问我来要。


里面的delay函数,这块是自己实现的,和这个实现的流程一样,我们要写.h,.c以及main函数,具体的实现,可以看我的STM32F103-delay函数的实现,这里面有详细的解释。

推荐阅读

史海拾趣

GeneSiC Semiconductor公司的发展小趣事

GeneSiC Semiconductor公司的发展故事

故事一:技术先驱与高性能SiC器件的开创

GeneSiC Semiconductor自成立以来,便致力于高性能碳化硅(SiC)功率器件的研发与生产。作为碳化硅技术的先驱,GeneSiC在2000年代初便开始布局,并成功开发出多款领先业界的SiC二极管和MOSFET技术。其产品覆盖从650V到6.5kV的广泛电压范围,满足从20W到20MW不同应用场景的需求。这些技术突破不仅提升了系统效率,还显著增强了设备的可靠性和耐用性,为汽车、工业和国防等多个领域带来了革命性的变化。

故事二:政府机构项目的深度参与

GeneSiC与全球多个政府机构紧密合作,参与了众多前沿技术研发项目。例如,为美国能源部(DOE)开发的6.5kV SiC晶闸管用于储能系统,以及为NASA金星探测任务提供的500°C单片集成SiC超结晶体管JBS二极管(MIDSJT)。这些项目不仅展示了GeneSiC在极端环境下的技术实力,还推动了SiC技术在关键领域的广泛应用。通过不断的技术创新与合作,GeneSiC在提升全球科技水平方面做出了重要贡献。

故事三:电动汽车市场的深度布局

随着电动汽车市场的快速崛起,GeneSiC迅速调整战略,将SiC技术应用于电动汽车的关键部件中。其高性能的SiC MOSFET和二极管不仅提升了电动汽车的充电效率和续航里程,还降低了电池系统的热损耗和重量。此外,GeneSiC还为快速充电站开发了高效、稳健的解决方案,如SK Signet的350kW快速充电器便采用了GeneSiC的SiC二极管,为电动汽车的快速普及提供了有力支持。

故事四:工业领域的广泛应用

在工业领域,GeneSiC的SiC技术同样展现出强大的竞争力。以埃克西德技术为例,该公司采用GeneSiC的SiC功率半导体,确保了其下一代工业材料处理设备的高频快速充电器的可靠性、安全性和易用性。GeneSiC的SiC MOSFET和MPS肖特基二极管在高频、大功率的应用场景下表现出色,为工业自动化和智能制造提供了强有力的技术支持。

故事五:与纳微半导体的战略合并

2022年,氮化镓(GaN)功率芯片领导者纳微半导体宣布收购GeneSiC Semiconductor,这一战略合并标志着两家公司在下一代功率半导体领域的强强联合。合并后的公司不仅拥有全面的SiC和GaN技术组合,还通过资源整合和市场拓展,进一步巩固了其在全球功率半导体市场的领先地位。GeneSiC的丰富技术积累和纳微半导体的市场渠道优势相结合,为双方带来了新的增长动力和市场机遇。

BURGESS公司的发展小趣事

BURGESS一直以其专业的服务和优质的管理而著称。它非常重视客户的需求和体验,为每一个拥有超级游艇的客户提供量身定制的服务方案。无论是游艇的销售、采购、租赁还是技术顾问和经营管理,BURGESS都能提供全面而专业的服务。这种对细节的关注和对质量的追求,使得BURGESS赢得了众多高端客户的信任和青睐,连美国总统特朗普的超级游艇都是由BURGESS负责管理的。

尽管无法提供BURGESS在电子行业的发展故事,但以上关于其在游艇经纪行业的几个重要发展事实,充分展示了BURGESS的卓越实力和专业水平。如需更多关于BURGESS的信息,建议查阅其官方网站或相关新闻报道。

Baumer Electric Ag公司的发展小趣事

Baumer Electric Ag公司创立于1952年,初期主要专注于微动开关的生产。面对市场竞争的激烈,公司创始人Herbert Baumer凭借其敏锐的市场洞察力和坚定的决心,带领团队不断研发新产品,提升技术水平。1960年,公司成功推出首个程序控制系列,标志着Baumer在电控生产流程监控和控制领域取得了重要突破。

Clulite公司的发展小趣事
  1. 创业初期
    • 描述Clulite公司的创始人或核心团队如何识别电子行业中的某个市场机遇。
    • 讲述他们是如何筹集初始资金,设立公司,并开发出第一款产品或解决方案的。
    • 可以提及公司在初创阶段面临的挑战,如技术难题、市场竞争等。
  2. 技术创新
    • 讲述Clulite如何通过研发创新,推出了一款颠覆性的产品或技术,从而获得了市场认可。
    • 详细描述这一创新过程,包括研发团队的努力、关键技术的突破等。
    • 提及这一创新如何帮助公司在市场上取得了竞争优势。
  3. 市场拓展
    • 描述Clulite如何逐步扩大市场份额,从地区市场走向全国乃至国际市场。
    • 可以讲述公司如何建立销售网络、与合作伙伴建立合作关系,以及参与行业展会等活动来推广品牌和产品。
    • 提及公司在市场拓展过程中遇到的挑战和应对策略。
  4. 品质管理
    • 讲述Clulite如何注重产品质量和客户体验,通过严格的质量控制流程来提升产品可靠性。
    • 描述公司如何建立完善的售后服务体系,为客户提供及时、专业的支持。
    • 提及这些举措如何帮助公司赢得了客户的信任和口碑。
  5. 可持续发展
    • 讲述Clulite如何关注环境保护和社会责任,推动公司的可持续发展。
    • 描述公司如何采取环保措施,减少生产过程中的污染排放。
    • 提及公司如何参与社会公益事业,回馈社会。

请注意,这些故事需要根据Clulite公司的实际情况进行调整和补充。如果你需要更具体的内容,建议查阅Clulite公司的官方网站、新闻报道或行业分析报告,以获取更详细的信息和数据。

Excelight Communications Inc公司的发展小趣事

作为一家有社会责任感的企业,Excelight始终关注社会公益事业。公司积极参与各类慈善活动和社会捐赠项目,为贫困地区的教育、医疗等事业做出了贡献。

此外,Excelight还注重环保和可持续发展。公司在生产过程中严格遵守环保法规和标准,积极采用环保材料和工艺。同时,Excelight还加强了节能减排和废弃物处理工作,努力实现绿色生产和可持续发展。

AverLogic公司的发展小趣事

随着产品的成功推出,AverLogic公司开始积极拓展市场,寻求与国际知名电子品牌的合作。通过与这些品牌的深度合作,公司不仅将产品推向了更广阔的市场,还从合作伙伴那里获得了宝贵的市场反馈和技术支持。这些合作不仅提升了AverLogic的品牌影响力,也为其后续的产品研发和市场布局提供了有力的支持。

问答坊 | AI 解惑

英国设计太阳能充电衣为随身设备充电

人们外出旅行时,为手机、MP3等随身设备寻找电源充电是件麻烦事。英国广播公司25日报道,英国科研人员正在设计一种利用太阳能充电的外衣,它可以解决这个问题。     据报道,日本富士通公司和德国西门子公司的合资企业在英国剑桥设有 ...…

查看全部问答>

马上要搞工业控制了,关于工业控制编程怎么入手呢。以前从来没搞过啊,谢谢各位前辈了。(我都不知道把这个问题放在什么论坛区里)

我失业很久了,以前都在小公司搞Java开发,最近爸让我去他那一个朋友那干活,搞什么PID控制,以前没搞过怎么入手呢?…

查看全部问答>

LPC2478程序在内部跑,部分文件放外部

我的LPC2478板子内部512K FLASH用来跑程序,外扩NOR FLASH存放数据,现在开机LOGO太大512放不下,把程序直接放外部FLASH跑,又舍不得这512K,就想把存放LOGO数据的数组文件放外面,程序还在内部跑,不知道怎么搞,貌似应该在分散加载文件里改吧?咋 ...…

查看全部问答>

wince420串口打开成功,获取参数失败

代码如下 if (m_hComm != INVALID_HANDLE_VALUE)        //已经打开,直接返回         {                 return TRUE;         }   ...…

查看全部问答>

51单片机最小系统板空板能做什么?

我这里有一块老师发的51单片机最小系统板空板,是不是按照上面标注的器件焊上去就可以开发出单片机最小系统了?就等于市场上卖的一个两三百的开发板了?…

查看全部问答>

批处理问题跳过询问执行

@echo off md E:\\网络游戏\\魔兽世界 xcopy /e \"U:\\魔兽世界\" \"E:\\网络游戏\\魔兽世界\" start U:\\魔兽世界\\BigFoot.exe echo 复制成功 pause&exit 这个批处理每次都要询问执行 请问怎么样不要执行!谢谢…

查看全部问答>

ARM入门

我刚开始上班,好多东西都不懂,经理把板子给我了.让我自己弄. 问其他同事,他们都说忙,好郁闷呀! 主机,ARM开发板,uC OS/II,ADS1.2集成开发环境,JTAG仿真器.都有了. 我下一步该做什么. 是不是安装uC OS/II,然后在上面编程序. 我以前从来没有接触 ...…

查看全部问答>

为什么气缸 直接通气还不能启闭蝶阀呢

知道三极管吗、继电器、接触器是干什么用的吗? 如果几极管的输出功率能足够的大,那就完全可以不用在几极管的后面,再加一个继电器,也不用在继电器的后面再加一个接触器,直接利用三极管输出控制负载就行了。 可三极管的输出有那么大吗? 先导 ...…

查看全部问答>

基于LabVIEW图形界面的TI LM3S8962的开发--第二步

第二步:软/硬件开发环境的建立。        此步骤是比较简单的,主要包括LabVIEW软件、DAQ模块、ARM模块以及MDK3.70的安装。所有的安装文件以及所需下载ARM模块、DAQ模块用的可执行文件和破解文件我已经在第零步的帖 ...…

查看全部问答>