历史上的今天
返回首页

历史上的今天

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

正在发生

2018年12月27日 | stm32pwm简单程序

2018-12-27 来源:eefocus

程序通俗易懂


#include

void TIM3_PWM_Init(u16 arr,u16 psc);


//1ms延时函数(72MHz)

void delay_nms(u16 time)

{

    u16 i=0;

    while(time--)

    {

        i=12000;

        while(i--);

    }

}


int main(void)

{

    u16 TIMpulse=0;

    u8 dir=1;

    //TIM3_PWM_Init(899,0);//不分频,PWM频率=72000/900=80khz

    TIM3_PWM_Init(999,61999);//1HZ,

    delay_nms(100);//观察初始化的pwm

//  TIM_SetCompare2(TIM3,200);//占空比200/999+1=20%

    while(1)

    {

        if(dir)TIMpulse++;

        else TIMpulse--;

        if(TIMpulse>999)dir=0;

        if(TIMpulse==0)dir=1;

        TIM_SetCompare2(TIM3,TIMpulse);//程序中修改占空比TIMpulse/arr

        ;

    }

}

//arr:自动装载值   psc:预分频数

//TIM3 PWM部分初始化

void TIM3_PWM_Init(u16 arr,u16 psc)

{

    GPIO_InitTypeDef GPIO_InitStructure;

    TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;

    TIM_OCInitTypeDef TIM_OCInitStructure;


    RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3,ENABLE);

    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB|RCC_APB2Periph_AFIO,ENABLE);//开启重映射时钟


    GPIO_PinRemapConfig(GPIO_PartialRemap_TIM3,ENABLE);//重映射TIM3_CH2到PB5输出


    //GPIO设置为复用输出,输出TIM3的CH2的PWM脉冲波形GPIOB5

    GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AF_PP;

    GPIO_InitStructure.GPIO_Pin=GPIO_Pin_5;

    GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;

    GPIO_Init(GPIOB,&GPIO_InitStructure);


    //初始化TIM3

    TIM_TimeBaseStructure.TIM_Period=arr;                   //设置自动重装载周期值(决定PWM的频率)

    TIM_TimeBaseStructure.TIM_Prescaler=psc;                //预分频值

    TIM_TimeBaseStructure.TIM_ClockDivision=0;              //设置时钟分割:TDTS=Tck_tim

    TIM_TimeBaseStructure.TIM_CounterMode=TIM_CounterMode_Up;//向上计数

    TIM_TimeBaseInit(TIM3,&TIM_TimeBaseStructure);


    //初始化TIM3 Channel2 PWM模式

    TIM_OCInitStructure.TIM_OCMode=TIM_OCMode_PWM2;             //选择PWM模式2,计数值大于比较值有效

    TIM_OCInitStructure.TIM_OutputState=TIM_OutputState_Enable; //比较输出使能

    TIM_OCInitStructure.TIM_OCPolarity=TIM_OCPolarity_High;     //输出极性 高为有效值

    //配置占空比  500/arr重载计数器=500/999+1,,和函数TIM_SetCompare2(TIM3,TIMpulse);功能一样

    TIM_OCInitStructure.TIM_Pulse=500;

    TIM_OC2Init(TIM3,&TIM_OCInitStructure);                     //初始化外设TIM3 OC2通道

    TIM_OC2PreloadConfig(TIM3,TIM_OCPreload_Enable);            //使能预装载器即TIM3_CCR2的预装载值在更新事件到来时才能被传送至当前寄存器中


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

}


推荐阅读

史海拾趣

Ametherm公司的发展小趣事

随着技术的不断进步,Ametherm公司始终保持着对技术创新的追求。他们不断研发新的材料、优化生产工艺,以提高产品的性能和稳定性。同时,公司还密切关注市场需求的变化,根据客户需求进行产品升级和改进。这些努力使得Ametherm的功率热敏电阻在行业中逐渐脱颖而出,赢得了客户的信赖和好评。

华大北斗(Allystar)公司的发展小趣事

随着技术的不断进步,Ametherm公司始终保持着对技术创新的追求。他们不断研发新的材料、优化生产工艺,以提高产品的性能和稳定性。同时,公司还密切关注市场需求的变化,根据客户需求进行产品升级和改进。这些努力使得Ametherm的功率热敏电阻在行业中逐渐脱颖而出,赢得了客户的信赖和好评。

BERGQUIST公司的发展小趣事

面对日益严峻的环境问题和可持续发展的挑战,BERGQUIST公司始终坚持绿色发展的理念。公司不断投入研发力量,开发环保型热管理材料和生产工艺。同时,公司还积极推广节能减排技术,努力降低生产过程中的能耗和排放。这些举措不仅符合社会发展趋势,也为公司的可持续发展提供了有力保障。

这五个故事从不同角度展示了BERGQUIST公司在电子行业中的发展历程和成就,体现了公司不断创新、追求卓越的精神。这些事实性的描述旨在客观呈现BERGQUIST公司的历史与现状,不含任何褒贬之意。

GREATECS公司的发展小趣事

面对日益严峻的环境问题和可持续发展的挑战,BERGQUIST公司始终坚持绿色发展的理念。公司不断投入研发力量,开发环保型热管理材料和生产工艺。同时,公司还积极推广节能减排技术,努力降低生产过程中的能耗和排放。这些举措不仅符合社会发展趋势,也为公司的可持续发展提供了有力保障。

这五个故事从不同角度展示了BERGQUIST公司在电子行业中的发展历程和成就,体现了公司不断创新、追求卓越的精神。这些事实性的描述旨在客观呈现BERGQUIST公司的历史与现状,不含任何褒贬之意。

Global Mixed-Mode Technology Inc公司的发展小趣事
设计和实现一个简单的三相缺相报警灯电路,可以使用三个中间继电器分别接在三相电的L1、L2、L3相上,继电器的另一端接零线。继电器的常开触点与报警灯(如黄灯、绿灯、红灯)串联,形成指示灯电路。当三相电正常时,继电器均吸合,常开触点断开,报警灯不亮。当某一相缺相时,对应相的继电器失电,常开触点闭合,使对应的报警灯亮起。同时,可以加入声音警报电路,当任一相缺相时,触发声音警报。
鞍山圣罗佳(ASL)公司的发展小趣事
报警灯的颜色和数量可以根据实际需求来设定。通常,为了区分不同的缺相情况,可以使用不同颜色的报警灯来对应不同的缺相相别。例如,黄色灯表示L1相缺相,绿色灯表示L2相缺相,红色灯表示L3相缺相。数量上,一般至少需要一个报警灯来指示缺相状态,但也可以设置多个报警灯以增加冗余或提供额外的视觉提示。

问答坊 | AI 解惑

低压差线性稳压器设计要点及故障分析

低压差线性稳压器设计要点及故障分析…

查看全部问答>

基于S3C2440的Cmos图像采集程序

图像采集 这里使用的是s3c2440芯片,能实现图像采集和存储 这里是保存为16位的BMP格式的图片 但是在保存的过程中还是有点问题,就是那 拍摄的图片能在ARM9上正常显示, 但是到电脑上显示的却像256色的一样,不清楚;     现在就 ...…

查看全部问答>

RJ45连接两块板,这是网络连接吗?

  要求是做两块板,两块板间用网线相连   第一块板:STM32——网络芯片——RJ45   第二块板:RJ45——网络芯片——stm32   这两块板的连接就是第一块板的RJ45出来的网线连到第二块板的RJ45,信号也就是 ...…

查看全部问答>

Window Mobile环境下的SD卡和TF卡驱动程序问题

各位,我想做Window Mobile环境下的SD卡和TF卡驱动程序的开发,但此前我从未做过驱动开发,所以想请教一下: 1、Window Mobile环境下的SD卡和TF卡驱动程序的开发需要使用什么开发工具? 2、需要看一些什么书籍和准备一些什么技术呢? 3、Window ...…

查看全部问答>

Wince sql 的开发..

请问专家..开发用到SQL CE要在PC机上装什么软件sql sever 2000还有??最好详细点!!在windows ce系统里是不是在PB组件添加一个SQL CE就可以了?…

查看全部问答>

招聘: 嵌入式软件工程师

一.高级软件开发工程师/软件QA. 职位要求: 1、计算机或相关专业本科及以上学历; 2、必需精通C/C++编程; 3、熟悉嵌入式软件开发原则,设计模式及调试技巧; 4、掌握嵌入式操作系统(如Linux, WinCE)平台上的系统及应用程序开发; 5、3 ...…

查看全部问答>

请教个AT24C16A的问题

为什么每次烧写程序后AT24C16A上存储的数据就丢失了,以前没有这个问题的,应该是永久保存的啊,如果电路短路会使数据丢失吗…

查看全部问答>

C8051f350!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

第一次用这个芯片我想先用它点亮一个led灯。 板子已经焊接好,rs232也有,jtag仿真器也有。 但是不知道接下来怎么做,keil里怎么写程序头文件是什么?用什么软件下载hex文件到单片机? 刚才查了一下c8051f系列单片机好像都不能用232下载,那我有 ...…

查看全部问答>

ATMEGA16A 熔丝位设置

有大神告诉下熔丝位设置外部12M晶振熔丝位怎么设置,已经锁死3片了,不敢在乱来了。…

查看全部问答>