历史上的今天
返回首页

历史上的今天

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

正在发生

2021年09月27日 | 基于STM32F103 PWM呼吸灯设计

2021-09-27 来源:eefocus

1、线性呼吸灯

bsp.c


#include


void RCC_Configuration(void); /* 初始化系统时钟 */

void TIM3_Configuration(void); /* PWM配置 */


void  BSP_Init (void)

{

RCC_Configuration(); /* 初始化系统时钟 */

TIM3_Configuration(); /* PWM配置 */

}

/*********************************************************************************************************

* 名    称 :RCC_Configuration

* 功能描述 : 初始化系统时钟

* 输入参数 : none

* 返回参数 : none.

* 作    者 : 

* 修    改 :(日期、修改人名、修改原因)

* 特殊说明 : (特殊功能说明,例如:有参数检查等)

*********************************************************************************************************/

void RCC_Configuration(void)

{

SystemInit(); 

RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3 , ENABLE);

RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_GPIOB , ENABLE);

}


/*********************************************************************************************************

* 名    称 :TIM3_Configuration

* 功能描述 : 初始化定时器  PWM

* 输入参数 : none

* 返回参数 : none.

* 作    者 : 

* 修    改 :(日期、修改人名、修改原因)

* 特殊说明 : (特殊功能说明,例如:有参数检查等)

*********************************************************************************************************/

void TIM3_Configuration(void)

{

GPIO_InitTypeDef GPIO_InitStructure;

TIM_OCInitTypeDef TIM_OCInitStructure;

TIM_TimeBaseInitTypeDef  TIM_TimeBaseStructure;

//通道1 PA7

GPIO_InitStructure.GPIO_Pin = GPIO_Pin_7;                    

GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; //复用推挽输出

GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;

GPIO_Init(GPIOA, &GPIO_InitStructure);

//通道2 PA6

GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6;                    

GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; //复用推挽输出

GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;

GPIO_Init(GPIOA, &GPIO_InitStructure);

//通道3 PB0  

GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;                    

GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; //复用推挽输出

GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;

GPIO_Init(GPIOB, &GPIO_InitStructure);

//通道4 PB1

GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1;                    

GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; //复用推挽输出

GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;

GPIO_Init(GPIOB, &GPIO_InitStructure);

       

/* Time base configuration */

TIM_TimeBaseStructure.TIM_Period = (100- 1); //arr  设置在下一个更新事件装入活动的自动重装载寄存器周期的值

TIM_TimeBaseStructure.TIM_Prescaler = (40-1); //分频 psc  影响周期

TIM_TimeBaseStructure.TIM_ClockDivision = 0; //时钟分割,一般写0

TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up; //设置为向上计数模式

TIM_TimeBaseInit(TIM3, &TIM_TimeBaseStructure);


/* PWM1 Mode configuration: Channel1*/

TIM_OCInitStructure.TIM_Pulse =0; // 初始值

TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1;    //pwm模式1

TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable; //使能通道

TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High; //高电平

//通道1

TIM_OC1Init(TIM3, &TIM_OCInitStructure);                   

TIM_OC1PreloadConfig(TIM3, TIM_OCPreload_Enable); //使能或者失能TIMx在CCR3上的预装载寄存器

  //通道2 

TIM_OC2Init(TIM3, &TIM_OCInitStructure);                   

TIM_OC2PreloadConfig(TIM3, TIM_OCPreload_Enable); //使能或者失能TIMx在CCR3上的预装载寄存器

//通道3 

TIM_OC3Init(TIM3, &TIM_OCInitStructure);                   

TIM_OC3PreloadConfig(TIM3, TIM_OCPreload_Enable); //使能或者失能TIMx在CCR3上的预装载寄存器

//通道4

TIM_OC4Init(TIM3, &TIM_OCInitStructure);                   

TIM_OC4PreloadConfig(TIM3, TIM_OCPreload_Enable); //使能或者失能TIMx在CCR3上的预装载寄存器

TIM_Cmd(TIM3, ENABLE); /* 使能 */

}


main.c


#include

#include  


extern void  BSP_Init (void);


/*********************************************************************************************************

* 名    称 :main

* 功能描述 : 初始化STM32

* 输入参数 : none

* 返回参数 : none.

* 作    者 : 

* 修    改 :(日期、修改人名、修改原因)

* 特殊说明 : (特殊功能说明,例如:有参数检查等)

*********************************************************************************************************/ 

int main(void)

{

int  n1,n2,n3,n4;

int i;

n1=100;

n2=100;

n3=100;

n4=100;

BSP_Init();

while(1)

{     

for(i=0;i<100;i++)

{

  TIM_SetCompare1(TIM3,i);

  TIM_SetCompare2(TIM3,i);

  TIM_SetCompare3(TIM3,i);

  TIM_SetCompare4(TIM3,i);

delay_ms(19);

}

for(i=100;i>=0;i--)

{

  TIM_SetCompare1(TIM3,i);

  TIM_SetCompare2(TIM3,i);

  TIM_SetCompare3(TIM3,i);

  TIM_SetCompare4(TIM3,i);

delay_ms(19);

}

delay_ms(300);

}

}


2、正弦函数呼吸灯

bsp.c


#include


void RCC_Configuration(void); /* 初始化系统时钟 */

void TIM3_Configuration(void); /* PWM配置 */


void  BSP_Init (void)

{

RCC_Configuration(); /* 初始化系统时钟 */

TIM3_Configuration(); /* PWM配置 */

}

/*********************************************************************************************************

* 名    称 :RCC_Configuration

* 功能描述 : 初始化系统时钟

* 输入参数 : none

* 返回参数 : none.

* 作    者 : 

* 修    改 :(日期、修改人名、修改原因)

* 特殊说明 : (特殊功能说明,例如:有参数检查等)

*********************************************************************************************************/

void RCC_Configuration(void)

{

SystemInit(); 

RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3 , ENABLE);

RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_GPIOB , ENABLE);

}


/*********************************************************************************************************

* 名    称 :TIM3_Configuration

* 功能描述 : 初始化定时器  PWM

* 输入参数 : none

* 返回参数 : none.

* 作    者 : 

* 修    改 :(日期、修改人名、修改原因)

* 特殊说明 : (特殊功能说明,例如:有参数检查等)

*********************************************************************************************************/

void TIM3_Configuration(void)

{

GPIO_InitTypeDef GPIO_InitStructure;

TIM_OCInitTypeDef TIM_OCInitStructure;

TIM_TimeBaseInitTypeDef  TIM_TimeBaseStructure;

//通道1 PA7

GPIO_InitStructure.GPIO_Pin = GPIO_Pin_7;                    

GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; //复用推挽输出

GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;

GPIO_Init(GPIOA, &GPIO_InitStructure);

//通道2 PA6

GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6;                    

GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; //复用推挽输出

GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;

GPIO_Init(GPIOA, &GPIO_InitStructure);

//通道3 PB0  

GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;                    

GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; //复用推挽输出

GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;

GPIO_Init(GPIOB, &GPIO_InitStructure);

//通道4 PB1

GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1;                    

GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; //复用推挽输出

GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;

GPIO_Init(GPIOB, &GPIO_InitStructure);

       

/* Time base configuration */

TIM_TimeBaseStructure.TIM_Period = (100- 1); //arr  设置在下一个更新事件装入活动的自动重装载寄存器周期的值

TIM_TimeBaseStructure.TIM_Prescaler = (40-1); //分频 psc  影响周期

TIM_TimeBaseStructure.TIM_ClockDivision = 0; //时钟分割,一般写0

TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up; //设置为向上计数模式

TIM_TimeBaseInit(TIM3, &TIM_TimeBaseStructure);


/* PWM1 Mode configuration: Channel1*/

TIM_OCInitStructure.TIM_Pulse =0; // 初始值

TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1;    //pwm模式1

TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable; //使能通道

TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High; //高电平

//通道1

TIM_OC1Init(TIM3, &TIM_OCInitStructure);                   

TIM_OC1PreloadConfig(TIM3, TIM_OCPreload_Enable); //使能或者失能TIMx在CCR3上的预装载寄存器

  //通道2 

TIM_OC2Init(TIM3, &TIM_OCInitStructure);                   

TIM_OC2PreloadConfig(TIM3, TIM_OCPreload_Enable); //使能或者失能TIMx在CCR3上的预装载寄存器

//通道3 

TIM_OC3Init(TIM3, &TIM_OCInitStructure);                   

TIM_OC3PreloadConfig(TIM3, TIM_OCPreload_Enable); //使能或者失能TIMx在CCR3上的预装载寄存器

//通道4

TIM_OC4Init(TIM3, &TIM_OCInitStructure);                   

TIM_OC4PreloadConfig(TIM3, TIM_OCPreload_Enable); //使能或者失能TIMx在CCR3上的预装载寄存器

TIM_Cmd(TIM3, ENABLE); /* 使能 */

}


main.c


#include

#include  

#include

extern void  BSP_Init (void);


/*********************************************************************************************************

* 名    称 :main

* 功能描述 : 初始化STM32

* 输入参数 : none

* 返回参数 : none.

* 作    者 : 

* 修    改 :(日期、修改人名、修改原因)

* 特殊说明 : (特殊功能说明,例如:有参数检查等)

*********************************************************************************************************/ 

int main(void)

{

int  n1,n2,n3,n4;

int i;

n1=100;

n2=100;

n3=100;

n4=100;

BSP_Init();

while(1)

{     

for(i=0;i<314;i++)

{

  TIM_SetCompare1(TIM3,100*sin(i/100.0));

  TIM_SetCompare2(TIM3,100*sin(i/100.0));

  TIM_SetCompare3(TIM3,100*sin(i/100.0));

  TIM_SetCompare4(TIM3,100*sin(i/100.0));

delay_ms(10);

}

for(i=314;i>=0;i--)

{

  TIM_SetCompare1(TIM3,100*sin(i/100.0));

  TIM_SetCompare2(TIM3,100*sin(i/100.0));

  TIM_SetCompare3(TIM3,100*sin(i/100.0));

  TIM_SetCompare4(TIM3,100*sin(i/100.0));

推荐阅读

史海拾趣

Alps Alpine Co Ltd公司的发展小趣事

Alps Alpine Co., Ltd.是一家总部位于日本的跨国电子制造公司,专注于设计和制造汽车电子、消费电子和工业电子产品。以下是关于Alps Alpine公司发展的五个相关故事:

  1. 公司合并:Alps Electric Co., Ltd.和Alpine Electronics, Inc.于2019年进行了合并,正式成立了Alps Alpine Co., Ltd. 这一合并为两家公司带来了更强大的整合资源和技术实力,使得Alps Alpine能够在全球范围内提供更多样化的电子解决方案。

  2. 汽车电子领域的发展:Alps Alpine在汽车电子领域拥有丰富的经验和技术积累。公司致力于开发汽车内部电子系统,包括车载娱乐系统、导航系统、车载通信系统、驾驶辅助系统等。随着汽车智能化和互联网化的发展,Alps Alpine不断推出创新产品,满足汽车制造商和消费者对智能驾驶体验的需求。

  3. 消费电子产品的多样化:除了汽车电子,Alps Alpine还在消费电子领域拥有广泛的产品线。公司的产品涵盖了手机、平板电脑、摄像机、音响设备等多个终端设备,并不断推出新品,以满足消费者对功能性和设计性的需求。

  4. 工业电子市场的拓展:Alps Alpine在工业电子领域也取得了长足的发展。公司的产品被广泛应用于工业自动化、机器人技术、医疗设备、能源管理等领域,为各行各业提供高性能、可靠的电子解决方案。

  5. 技术创新与研发投入:作为一家技术驱动的企业,Alps Alpine不断加大对研发的投入,致力于技术创新和产品优化。公司拥有强大的研发团队和先进的研发设施,在各个领域持续推动技术进步,提升产品竞争力。

以上是关于Alps Alpine Co., Ltd.发展的五个相关故事,这些故事展示了公司在合并整合、汽车电子、消费电子、工业电子和技术创新方面的发展历程,以及其在电子行业中的重要地位和影响力。

Acopian Power Supplies公司的发展小趣事

Acopian Power Supplies是一家专业生产电源供应器件的公司,以下是该公司发展的五个相关故事:

  1. 公司创立与起步阶段: Acopian Power Supplies成立于1956年,总部位于美国宾夕法尼亚州。公司创始人Sarkis Acopian先生将其家庭小作坊扩展为一家专业的电源供应器件制造商。创立之初,公司专注于生产高品质、高可靠性的直流电源,并提供定制化的解决方案。

  2. 技术创新和产品拓展: 随着市场需求的增长和技术进步,Acopian Power Supplies不断进行技术创新,并扩展了产品线。公司逐步推出了各种规格和型号的直流电源、交流电源、开关电源等产品,满足不同行业的需求,如工业、通信、医疗等领域。

  3. 市场拓展和国际化发展: Acopian Power Supplies积极开拓国内外市场,并与全球各地的客户建立了长期合作关系。公司的产品远销至美国以外的多个国家和地区,赢得了广泛的市场认可。通过与国际渠道商合作,公司逐步实现了国际化发展战略。

  4. 质量控制和技术支持: Acopian Power Supplies注重产品质量和技术支持,建立了完善的质量控制体系和售后服务体系。公司引进先进的生产设备和检测设备,严格控制产品质量,并提供专业的技术支持和解决方案,确保客户获得最佳的用户体验。

  5. 未来发展展望: Acopian Power Supplies将继续致力于电源供应器件领域的研发和生产,不断推出更先进、更可靠的产品和解决方案,以满足客户在不断变化的市场需求。公司将进一步加强研发投入,不断提升产品性能和质量水平,努力成为行业内的领先企业。

ASI [ASI Semiconductor, Inc]公司的发展小趣事

在竞争激烈的电子行业中,创新是企业持续发展的关键。ASI深知这一点,因此一直致力于技术创新和产品升级。通过不断投入研发资源、引进先进技术以及与高校和研究机构的合作,ASI成功推出了一系列具有竞争力的新产品和解决方案。这些创新不仅提升了ASI的市场竞争力,还为其未来的发展注入了强大的动力。

这些故事展示了ASI Semiconductor, Inc.从创立到发展成为电子行业领导者的过程。通过抓住市场机遇、提升产品质量、拓展全球市场、创新技术和优质服务,ASI成功地实现了自身的快速发展,并在行业中树立了良好的声誉。

Crystalfontz America Inc公司的发展小趣事

在发展过程中,Crystalfontz America Inc公司不断完善和升级产品线。除了传统的LCD、OLED显示模块外,公司还推出了触摸屏、线缆、PC安装支架等一系列配套产品。这些产品的推出不仅丰富了公司的产品线,也满足了客户多样化的需求。同时,公司还关注行业动态和市场需求变化,及时调整产品策略,确保产品始终保持竞争力。

展恒电子(Broadic)公司的发展小趣事

2007年,Broadic在美国加州成立,以其前瞻性的视野和深厚的技术积累,迅速在电子行业中崭露头角。同年,公司开始着手研发创新的芯片技术,奠定了其未来发展的坚实基础。2008年,深圳市展恒电子有限公司应运而生,作为Broadic在国内的销售公司,它的成立标志着Broadic正式进入中国市场,开始了其在国内的快速发展之旅。

DEWALT公司的发展小趣事

DEWALT公司非常注重产品品质和用户体验。公司建立了严格的质量控制体系,确保每一件产品都符合高质量标准。同时,DEWALT还积极倾听用户反馈,不断改进产品和服务。这些努力使DEWALT公司的电动工具在市场上获得了广泛认可,并赢得了大量忠实用户。

问答坊 | AI 解惑

急招!!!

招聘任职要求: 1、为TD-SCDMA Node B执行RF测试用例 2、在板卡级别组织和开发 HW RF测试环境 3、负责HW Node B系统的测试。 4、本科以上,硕士优先,主修通信或者相关领域。 5、非常了解HW RF的测试(必须要有RF仪器经验 ) 6、RF 电路开发 ...…

查看全部问答>

MC9S08JM60技术手册USB部分中文翻译

这是从网上找到的MC9S08JM60单片机USB部分的翻译,该单片机是飞思卡尔推出的集成USB的S08单片机,对于需要实现USB连接的项目来说,是不错的选择。翻译的不是很好,有的地方还是要参考英文手册 …

查看全部问答>

51单片机扩展用并口方式访问外围器件的最简单方法

今天重新温习了51单片机扩展RAM、ROM,收获大大的有,以前把51的一本书看了几遍,还是没有弄清楚,没有弄清楚51访问外部ram、rom的时序,到今天才发现,访问外部ram、rom的时序是有访问指令决定的。       当用并行方式 ...…

查看全部问答>

vc 添加程序的快捷方式到启动菜单里[转载http://blog.sina.com.cn/s/blog_5fd6e7ac01

vc 添加程序的快捷方式到启动菜单里#include <io.h>HRESULT CCreatescDlg::CreateLink(LPCSTR lpszPathObj, LPCSTR lpszPathLink, LPCSTR lpszDesc){    HRESULT hres;    IShellLink* psl;    h ...…

查看全部问答>

window ce 系统下怎么访问 pc机上的oracle数据库!

window ce 系统下怎么访问 pc机上的oracle数据库!我用的是vs2008,poketpc是windows mobile 5.0,不知那位高人能给解决。…

查看全部问答>

请教关于奇晶的2.83寸OLED显示屏:C0283QGLC-T(采用的是S6E63D6驱动IC)的驱动问题----有人做过么?

原来用的三星的LMS283显示屏,最近停产了,不得不从新找屏做驱动。 新找来的奇晶的LCD,修改了硬件电路和spi初始化配置,点亮-进入系统都没有问题,但是象素上 发现了一个奇怪的问题:     颜色显示都基本正确,红.绿.蓝都还可以。 ...…

查看全部问答>

搞过802.11开发的兄弟 顶起.

我实验室现在想搞支持802.11系列的手机终端,我对这个完全不了解,想先学习一下..谁有802.11系列协议的实现代码的可以共享一下吗 ,兄弟不胜感激!!!…

查看全部问答>

求救,各位达人,WinCE6.0如何加载位于BinFS文件系统中类型为NandImage的.bin文件中的内容?

我现在做的是BinFS+Multi-bin,目的是加快WINCE6.0的启动速度,减小内存使用。核心的东西都放在XIPKERNEL.bin中,为RAMIMAGE,而其他东西则放在nk.bin中,为NANDIMAGE。现在的现象是,xipkernel里面的东西好像加载都是正常的,但是nk.bin中的内容一 ...…

查看全部问答>

ST32PKAVR32,哪个强?

这两个MCU 俺打算选用其中一种,不过从指令系统上看,好象AVR32 强!ST32 数据手册好象不附指令的执行时间?不附指令执行时间,是心虚吗?…

查看全部问答>