完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
我在我的项目中使用STM32F103CB。但是我发现定时器中断最快时间不能小于1us。
定时器预分频器为 0,递增计数器模式,计数器周期为 36,无内部时钟分频和自动重载使能。当定时器中断发生时。我依次将 Pin 设置为高低。但是从管脚输出的时间是1us。 /* tiM2 初始化函数 */ void MX_TIM2_Init(void) { TIM_ClockConfigTypeDef sClockSourceConfig = {0}; TIM_MasterConfigTypeDef sMasterConfig = {0}; htim2.Instance = TIM2; htim2.Init.Prescaler = 0; htim2.Init.CounterMode = TIM_COUNTERMODE_UP; htim2.Init.Period = 36; htim2.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1; htim2.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_ENABLE; 如果(HAL_TIM_Base_Init(&htim2)!= HAL_OK) { 错误处理程序(); } sClockSourceConfig.ClockSource = TIM_CLOCKSOURCE_INTERNAL; 如果 (HAL_TIM_ConfigClockSource(&htim2, &sClockSourceConfig) != HAL_OK) { 错误处理程序(); } sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET; sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE; 如果(HAL_TIMEx_MasterConfigSynchronization(&htim2,&sMasterConfig)!= HAL_OK) { 错误处理程序(); } } /** * @brief 此函数处理 TIM2 全局中断。 */ void TIM2_IRQHandler(void) { /* 用户代码开始 TIM2_IRQn 0 */ TIM2->SR &= ~(1 << 0); 静态 uint8_t bPin = 0; bPin = !bPin; 如果(bPin) { GPIOB->BSRR = 0x8000; } 别的 { GPIOB->BSRR = 0x80000000; } /* 用户代码结束 TIM2_IRQn 0 */ /* 用户代码开始 TIM2_IRQn 1 */ /* 用户代码结束 TIM2_IRQn 1 */ } |
|
相关推荐
1个回答
|
|
这意味着这可能只是ISR 执行时间过长/不切实际的高中断率的情况。
|
|
|
|
只有小组成员才能发言,加入小组>>
请教:在使用UDE STK时,单片机使用SPC560D30L1,在配置文件怎么设置或选择?里面只有SPC560D40的选项
2653 浏览 1 评论
3214 浏览 1 评论
请问是否有通过UART连接的两个微处理器之间实现双向值交换的方法?
1788 浏览 1 评论
3617 浏览 6 评论
5996 浏览 21 评论
945浏览 4评论
1318浏览 4评论
在Linux上安装Atollic TRUEStudio的步骤有哪些呢?
590浏览 3评论
使用DMA激活某些外设会以导致外设无法工作的方式生成代码是怎么回事
1308浏览 3评论
1368浏览 3评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-28 08:11 , Processed in 1.019526 second(s), Total 46, Slave 39 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号