完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
大虾给看看PB0没动静啊!这个程序是PA0输出一个占空比为10%的PWM,但是仿真时PB0没有波???,且周期是20ms实在是不解???
我是这么算的周期 T=((200*7200)/72000000)*2=40MS 可仿真出来的波的周期为20ms void All_GPIO_Config(void) { GPIO_InitTypeDef GPIO_InitStructure; //定义GPIO结构体 RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);//使能GPIOB口时钟 /*将PB0配置为推挽输出*/ GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; //推挽输出 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //50MHz时钟速度 GPIO_Init(GPIOB, &GPIO_InitStructure); } void tiM2_Config(void) { TIM_TimeBaseInitTypeDef TIM2_TimeBaseStructure;//定义结构体 TIM_OCInitTypeDef TIM2_OCInitStructure; GPIO_InitTypeDef GPIO_InitStructure; RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_AFIO, ENABLE);//使能GPIOA及功能复用IO时钟 RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2, ENABLE);//使能TIM2时钟 //GPIOA配置为:定时器2的PWM 1个通道复用功能输出 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; //复用推挽输出 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;//I/O时钟为50MHz GPIO_Init(GPIOA, &GPIO_InitStructure);//根据上面指定参数初始化GPIO结构体 //定时器基本配置 TIM2_TimeBaseStructure.TIM_Period =200-1;//计数值为1000 TIM2_TimeBaseStructure.TIM_Prescaler = 7200-1;//3分频 TIM2_TimeBaseStructure.TIM_ClockDivision = 0;//采样分频0 TIM2_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;//向上计数 TIM_TimeBaseInit(TIM2, &TIM2_TimeBaseStructure); TIM2_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1;//定时器配置为PWM1模式 TIM2_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High;//TIM输出比较极性高 // PWM1模式通道1 TIM2_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;//通道1输出使能 TIM2_OCInitStructure.TIM_Pulse =20;//脉宽值为200 TIM_OC1Init(TIM2,&TIM2_OCInitStructure); //根据TIM_OCInitStruct中指定的参数初始化TIM2 TIM_OC1PreloadConfig(TIM2, TIM_OCPreload_Enable); //使能TIM2在CCR1上的预装载寄存器 /* 配置输出比较通道1中断*/ TIM_ITConfig(TIM2,TIM_IT_CC1,ENABLE); TIM_Cmd(TIM2, ENABLE);//使能定时器2 } void TIM2_IRQHandler(void) { if (TIM_GetITStatus(TIM2, TIM_IT_CC1) != RESET)//判断TIM2的比较1通道是否有中断 { TIM_ClearITPendingBit(TIM2, TIM_IT_CC1);//清除比较1中断标志位 GPIOB->ODR^=GPIO_Pin_0;//将PB0电平反向 } } |
|
相关推荐
1 个讨论
|
|
你正在撰写讨论
如果你是对讨论或其他讨论精选点评或询问,请使用“评论”功能。
1107 浏览 0 评论
AD7686芯片不传输数据给STM32,但是手按住就会有数据。
1055 浏览 2 评论
2159 浏览 0 评论
如何解决MPU-9250与STM32通讯时,出现HAL_ERROR = 0x01U
1253 浏览 1 评论
hal库中i2c卡死在HAL_I2C_Master_Transmit
1678 浏览 1 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-25 13:16 , Processed in 0.739750 second(s), Total 57, Slave 44 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号