本帖最后由 zuu0 于 2018-1-16 16:12 编辑
STM32F030F4
刚玩STM32测试一些功能,,调试这个比较输出,,感觉始终没进去,,不知道哪里没配置好
void InitHardTimer(void)
{
TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;
NVIC_InitTypeDef NVIC_InitStructure;
uint16_t usPrescaler;
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM14, ENABLE); /* 使能TIM时钟 */
usPrescaler = SystemCoreClock / 1000000 ; /* 分频到周期 1us */
/* 定时器基本配置 */
TIM_TimeBaseStructure.TIM_Period = 0xFFFF;
TIM_TimeBaseStructure.TIM_Prescaler = usPrescaler;
TIM_TimeBaseStructure.TIM_ClockDivision = 0;
TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up; //向上计数模式
TIM_TimeBaseInit(TIM14, &TIM_TimeBaseStructure);
//TIM_ARRPreloadConfig(TIM14, ENABLE);
TIM_Cmd(TIM14, ENABLE); /* TIM14 enable counter */
/* 配置TIM定时中断*/
NVIC_InitStructure.NVIC_IRQChannel = TIM14_IRQn;//中断
NVIC_InitStructure.NVIC_IRQChannelPriority = 4; /* 比串口优先级低 */
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;//IRQ通道被使能
NVIC_Init(&NVIC_InitStructure);
//以上程序测试0K,定时最长65ms
/* 设置捕获比较计数器CC1 10ms */
TIM_SetCompare1(TIM14, 10000);
TIM_ClearITPendingBit(TIM14, TIM_IT_CC1); //TIM14,TIM16,TIM17 只有一个通道CC1
TIM_ITConfig(TIM14, TIM_IT_CC1, ENABLE); /* 使能CC1比较中断 */
}
//10ms中断
void TIM14_IRQHandler(void)
{
if (TIM_GetITStatus(TIM14, TIM_IT_CC1))
{
TIM_ClearITPendingBit(TIM14, TIM_IT_CC1);
LED1_Toggle(); //测试 LED翻转
}
}
看了一下这个定时器14 16 17都是有一路比较输出的,就是进不去。。产生不了定时,,,当然定时可以用很多种方法,想测一下这个比较中断,,这样就很方便在程序里设置定时器定时长度
11.jpg (96.93 KB, 下载次数: 0)
下载附件
2018-1-16 16:12 上传
一周热门 更多>