历史上的今天
今天是: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
}
史海拾趣
|
图像采集 这里使用的是s3c2440芯片,能实现图像采集和存储 这里是保存为16位的BMP格式的图片 但是在保存的过程中还是有点问题,就是那 拍摄的图片能在ARM9上正常显示, 但是到电脑上显示的却像256色的一样,不清楚; 现在就 ...… 查看全部问答> |
|
要求是做两块板,两块板间用网线相连 第一块板:STM32——网络芯片——RJ45 第二块板:RJ45——网络芯片——stm32 这两块板的连接就是第一块板的RJ45出来的网线连到第二块板的RJ45,信号也就是 ...… 查看全部问答> |
|
Window Mobile环境下的SD卡和TF卡驱动程序问题 各位,我想做Window Mobile环境下的SD卡和TF卡驱动程序的开发,但此前我从未做过驱动开发,所以想请教一下: 1、Window Mobile环境下的SD卡和TF卡驱动程序的开发需要使用什么开发工具? 2、需要看一些什么书籍和准备一些什么技术呢? 3、Window ...… 查看全部问答> |
|
请问专家..开发用到SQL CE要在PC机上装什么软件sql sever 2000还有??最好详细点!!在windows ce系统里是不是在PB组件添加一个SQL CE就可以了?… 查看全部问答> |
|
一.高级软件开发工程师/软件QA. 职位要求: 1、计算机或相关专业本科及以上学历; 2、必需精通C/C++编程; 3、熟悉嵌入式软件开发原则,设计模式及调试技巧; 4、掌握嵌入式操作系统(如Linux, WinCE)平台上的系统及应用程序开发; 5、3 ...… 查看全部问答> |
|
C8051f350!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 第一次用这个芯片我想先用它点亮一个led灯。 板子已经焊接好,rs232也有,jtag仿真器也有。 但是不知道接下来怎么做,keil里怎么写程序头文件是什么?用什么软件下载hex文件到单片机? 刚才查了一下c8051f系列单片机好像都不能用232下载,那我有 ...… 查看全部问答> |




