新手上路
- 积分
- 46
- 金钱
- 46
- 注册时间
- 2019-7-23
- 在线时间
- 12 小时
|
2金钱
- #include "stm32f10x.h"
- #include "timer.h"
- #include "stm32f10x_rcc.h"
- void Timer_init(void)
- {
- TIM_TimeBaseInitTypeDef Timer_InitStr;
- NVIC_InitTypeDef NVIC_InitStr;
- RCC_APB1PeriphResetCmd(RCC_APB1Periph_TIM4,ENABLE);
-
- Timer_InitStr.TIM_ClockDivision =TIM_CKD_DIV1;
- Timer_InitStr.TIM_CounterMode = TIM_CounterMode_Up;
- Timer_InitStr.TIM_Period = 5000;
- Timer_InitStr.TIM_Prescaler = 7199;
- TIM_TimeBaseInit(TIM4,&Timer_InitStr);
- TIM_ITConfig(TIM4,TIM_IT_Update,ENABLE);
-
-
- NVIC_InitStr.NVIC_IRQChannel = TIM4_IRQn;
- NVIC_InitStr.NVIC_IRQChannelCmd = ENABLE;
- NVIC_InitStr.NVIC_IRQChannelPreemptionPriority = 3;
- NVIC_InitStr.NVIC_IRQChannelSubPriority = 3;
- NVIC_Init(&NVIC_InitStr);
-
- TIM_Cmd(TIM4,ENABLE);
- }
- void TIM4_IRQHandler(void)
- {
- if(TIM_GetITStatus(TIM4,TIM_IT_Update)!=RESET)
- {
- TIM_ClearITPendingBit(TIM4,TIM_IT_Update);
- GPIO_ResetBits(GPIOB,GPIO_Pin_5);
- }
- }
-
复制代码- #include "stm32f10x.h"
- #include "timer.h"
- #include "delay.h"
- int main(void)
- {
- GPIO_InitTypeDef GPIO_InitStr;
-
- NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
- Timer_init();
- RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);
-
- GPIO_InitStr.GPIO_Mode = GPIO_Mode_Out_OD;
- GPIO_InitStr.GPIO_Pin = GPIO_Pin_5;
- GPIO_InitStr.GPIO_Speed =GPIO_Speed_10MHz;
- GPIO_Init(GPIOB,&GPIO_InitStr);
- GPIO_SetBits(GPIOB,GPIO_Pin_5);
- while(1)
- {
- // delay_ms(500);
- // GPIO_ResetBits(GPIOB,GPIO_Pin_5);
- }
- }
复制代码 基本上是按照开发指南上面来的,但是程序下载了之后并不能进入中断(板子上面的灯没有被点亮),请问这是为什么
此外,还想请教一下,当定时器的重装载值被设定成5000之后计数模式再设定成向上计数不应该要计数到(2^16-1-5000)才可以重装载吗?
|
|