完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
我无法使用 timer1 和 Channel1 作为 PWM 输出让引脚 PE9 进行切换。我尝试了不同的计时器配置但没有成功。计时器确实按预期运行,并且所有参数和中断都有效。唯一的问题是 PE9 引脚在定时器运行时不会随时切换或启用。
更新:我将引脚连接到开发板的一个 LED,它确实按预期打开。出于某种原因,当我使用以下命令检查引脚状态时,它始终显示为“0”或关闭。有谁知道为什么当我停止调试器检查寄存器时 LED 亮起但 GPIOE 会显示“0”? 这是我对 TIM1 的配置: TIM_ClockConfigTypeDef sClockSourceConfig = {0}; TIM_MasterConfigTypeDef sMasterConfig = {0}; TIM_OC_InitTypeDef sConfigOC = {0}; TIM_BreakDeadTimeConfigTypeDef sBreakDeadTimeConfig = {0}; /* 用户代码开始 TIM1_Init 1 */ /* 用户代码结束 TIM1_Init 1 */ htim1.Instance = TIM1; htim1.Init.Prescaler = 65535; htim1.Init.CounterMode = TIM_COUNTERMODE_UP; htim1.Init.Period = 65535; htim1.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1; htim1.Init.RepetitionCounter = 0; htim1.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE; 如果(HAL_TIM_Base_Init(&htim1)!= HAL_OK) { 错误处理程序(); } sClockSourceConfig.ClockSource = TIM_CLOCKSOURCE_INTERNAL; 如果 (HAL_TIM_ConfigClockSource(&htim1, &sClockSourceConfig) != HAL_OK) { 错误处理程序(); } 如果(HAL_TIM_PWM_Init(&htim1)!= HAL_OK) { 错误处理程序(); } sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET; sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE; 如果 (HAL_TIMEx_MasterConfigSynchronization(&htim1, &sMasterConfig) != HAL_OK) { 错误处理程序(); } sConfigOC.OCMode = TIM_OCMODE_PWM2; sConfigOC.Pulse = 10000; sConfigOC.OCPolarity = TIM_OCPOLARITY_HIGH; sConfigOC.OCNPolarity = TIM_OCNPOLARITY_HIGH; sConfigOC.OCFastMode = TIM_OCFAST_DISABLE; sConfigOC.OCIdleState = TIM_OCIDLESTATE_RESET; sConfigOC.OCNIdleState = TIM_OCNIDLESTATE_RESET; 如果 (HAL_TIM_PWM_ConfigChannel(&htim1, &sConfigOC, TIM_CHANNEL_1) != HAL_OK) { 错误处理程序(); } sBreakDeadTimeConfig.OffStateRunMode = TIM_OSSR_DISABLE; sBreakDeadTimeConfig.OffStateIDLEMode = TIM_OSSI_DISABLE; sBreakDeadTimeConfig.LockLevel = TIM_LOCKLEVEL_OFF; sBreakDeadTimeConfig.DeadTime = 0; sBreakDeadTimeConfig.BreakState = TIM_BREAK_DISABLE; sBreakDeadTimeConfig.BreakPolarity = TIM_BREAKPOLARITY_HIGH; sBreakDeadTimeConfig.AutomaticOutput = TIM_AUTOMATICOUTPUT_DISABLE; 如果 (HAL_TIMEx_ConfigBreakDeadTime(&htim1, &sBreakDeadTimeConfig) != HAL_OK) { 错误处理程序(); } /* 用户代码开始 TIM1_Init 2 */ /* 用户代码结束 TIM1_Init 2 */ HAL_TIM_MspPostInit(&htim1); |
|
相关推荐
1个回答
|
|
固定的!出于某种原因,我将引脚设置为 Open Drain 而不是 PushPull。
|
|
|
|
只有小组成员才能发言,加入小组>>
请教:在使用UDE STK时,单片机使用SPC560D30L1,在配置文件怎么设置或选择?里面只有SPC560D40的选项
2476 浏览 1 评论
3165 浏览 1 评论
请问是否有通过UART连接的两个微处理器之间实现双向值交换的方法?
1730 浏览 1 评论
3553 浏览 6 评论
5917 浏览 21 评论
892浏览 4评论
1266浏览 4评论
在Linux上安装Atollic TRUEStudio的步骤有哪些呢?
532浏览 3评论
使用DMA激活某些外设会以导致外设无法工作的方式生成代码是怎么回事
1250浏览 3评论
1304浏览 3评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-10-6 19:35 , Processed in 1.258239 second(s), Total 77, Slave 61 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号