历史上的今天
今天是:2025年06月28日(星期六)
2018年06月28日 | STM32F407 TIM1的PWM输出
2018-06-28 来源:eefocus
//TIM1 PWM部分初始化
//PWM输出初始化
//arr:自动重装值
//psc:时钟预分频数
void TIM1_PWM_Init(u32 arr,u32 psc)
{
//此部分需手动修改IO口设置
GPIO_InitTypeDef GPIO_InitStructure;
TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;
TIM_OCInitTypeDef TIM_OCInitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_TIM1,ENABLE); //TIM1时钟使能
RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA, ENABLE); //使能PORTA时钟
//复用不能写成下面,会出问题
//GPIO_PinAFConfig(GPIOA,GPIO_PinSource8|GPIO_PinSource11,GPIO_AF_TIM1); //GPIO复用为定时器1
GPIO_PinAFConfig(GPIOA, GPIO_PinSource8, GPIO_AF_TIM1); //复用GPIOA_Pin8为TIM1_Ch1,
GPIO_PinAFConfig(GPIOA, GPIO_PinSource11, GPIO_AF_TIM1);//复用GPIOA_Pin11为TIM1_Ch4,注意没有CH4N
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8|GPIO_Pin_11; //GPIO
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF; //复用功能
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz; //速度100MHz
GPIO_InitStructure.GPIO_OType = GPIO_OType_PP; //推挽复用输出
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP; //上拉
GPIO_Init(GPIOA,&GPIO_InitStructure); //初始化P
TIM_TimeBaseStructure.TIM_Prescaler=psc; //定时器分频
TIM_TimeBaseStructure.TIM_CounterMode=TIM_CounterMode_Up; //向上计数模式
TIM_TimeBaseStructure.TIM_Period=arr; //自动重装载值
TIM_TimeBaseStructure.TIM_ClockDivision=TIM_CKD_DIV1;
//TIM_TimeBaseStructure.TIM_RepetitionCounter = 0x0;//默认就为0
TIM_TimeBaseInit(TIM1,&TIM_TimeBaseStructure);//初始化定时器1
//初始化TIM1 PWM模式
//PWM 模式 1–– 在递增计数模式下,只要 TIMx_CNT TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1; //PWM1为正常占空比模式,PWM2为反极性模式 TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable; //比较输出使能 TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_Low; //输出极性:TIM输出比较极性低,有效电平为低电平 TIM_OCInitStructure.TIM_OCIdleState = TIM_OCIdleState_Reset;//在空闲时输出 低,这里的设置可以改变TIM_OCPolarity 如果没这句,第1通道有问题 TIM_OCInitStructure.TIM_Pulse = 2000; //输入通道1 CCR1(占空比数值) TIM_OC1Init(TIM1, &TIM_OCInitStructure); //Ch1初始化 TIM_OCInitStructure.TIM_Pulse = 5000; TIM_OC4Init(TIM1, &TIM_OCInitStructure);//通道4 TIM_OC1PreloadConfig(TIM1, TIM_OCPreload_Enable); //使能TIM1在CCR1上的预装载寄存器,CCR自动装载默认也是打开的 TIM_ARRPreloadConfig(TIM1,ENABLE);//ARPE使能 TIM_Cmd(TIM1, ENABLE); //使能TIM1 TIM_CtrlPWMOutputs(TIM1, ENABLE);//使能TIM1的PWM输出,TIM1与TIM8有效,如果没有这行会问题 }
史海拾趣
|
http://infocenter.arm.com/help/t ... tex_m3_r2p0_trm.pdf 1.7.3. Differences in functionality between r1p1 and r2p0 In summary, the differences in functionality include: 1, Implementation time options have been added to select b ...… 查看全部问答> |
|
我用HIDLIB库做了个读取USB HID设备的VC6程序. 同步读取数据好像经常死机. unsigned long lpNumberOfBytesRead=0; unsigned char buffer[Receive_no], display[Receive_no*3+1]; &nbs ...… 查看全部问答> |
|
Microsoft.WINDOWS.SERVER.V2003.IFD.DDK-ISO 如何安装? Microsoft.WINDOWS.SERVER.V2003.IFD.DDK-ISO如何安装?… 查看全部问答> |
|
现在有一个程序是基于ppc2002,wince3.0,但是由于我没有装PPC的SDK所以导致我在EVC下无法编译,现在准备把程序移植到WINCE4.2上去,不牵涉到PPC了,请问需要做哪些工作才能让程序运行起来啊?… 查看全部问答> |
|
我在用g2553写串口接收程序时,将串口接收的那个寄存器赋值给变量,之后就不进中断了,数据时用上位机一直发的,只能进一次是什么原因啊?用f149的时候不这样啊?忘大神指点!谢谢… 查看全部问答> |




