Код
void InitAll(void)
{
GPIO_InitTypeDef GPIO_Config;
TIM_TimeBaseInitTypeDef TIM_BaseConfig;
NVIC_InitTypeDef NVIC_InitStructure;
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM4, ENABLE);
RCC_AHBPeriphClockCmd(RCC_AHBENR_GPIOBEN, ENABLE);
GPIO_Config.GPIO_Pin = LD_GREEN | LD_BLUE;
GPIO_Config.GPIO_Mode = GPIO_Mode_OUT;
GPIO_Config.GPIO_OType = GPIO_OType_PP;
GPIO_Config.GPIO_Speed = GPIO_Speed_10MHz;
GPIO_Init(LD_PORT, &GPIO_Config);
TIM_BaseConfig.TIM_Prescaler = 1000 - 1;
TIM_BaseConfig.TIM_Period = 8-1;
TIM_BaseConfig.TIM_ClockDivision = 0;
TIM_BaseConfig.TIM_CounterMode = TIM_CounterMode_Up;
TIM_TimeBaseInit(TIM4, &TIM_BaseConfig);
TIM_ITConfig(TIM4, TIM_IT_Update, ENABLE);
TIM_ARRPreloadConfig(TIM4, ENABLE);
NVIC_InitStructure.NVIC_IRQChannel = TIM4_IRQn;
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 2;
NVIC_Init(&NVIC_InitStructure);
TIM_Cmd(TIM4, ENABLE);
}
int main(void){
InitAll();
while(1)
{}
}
{
GPIO_InitTypeDef GPIO_Config;
TIM_TimeBaseInitTypeDef TIM_BaseConfig;
NVIC_InitTypeDef NVIC_InitStructure;
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM4, ENABLE);
RCC_AHBPeriphClockCmd(RCC_AHBENR_GPIOBEN, ENABLE);
GPIO_Config.GPIO_Pin = LD_GREEN | LD_BLUE;
GPIO_Config.GPIO_Mode = GPIO_Mode_OUT;
GPIO_Config.GPIO_OType = GPIO_OType_PP;
GPIO_Config.GPIO_Speed = GPIO_Speed_10MHz;
GPIO_Init(LD_PORT, &GPIO_Config);
TIM_BaseConfig.TIM_Prescaler = 1000 - 1;
TIM_BaseConfig.TIM_Period = 8-1;
TIM_BaseConfig.TIM_ClockDivision = 0;
TIM_BaseConfig.TIM_CounterMode = TIM_CounterMode_Up;
TIM_TimeBaseInit(TIM4, &TIM_BaseConfig);
TIM_ITConfig(TIM4, TIM_IT_Update, ENABLE);
TIM_ARRPreloadConfig(TIM4, ENABLE);
NVIC_InitStructure.NVIC_IRQChannel = TIM4_IRQn;
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 2;
NVIC_Init(&NVIC_InitStructure);
TIM_Cmd(TIM4, ENABLE);
}
int main(void){
InitAll();
while(1)
{}
}
Но стоит в любое место добавить инициализацию пары других ножек:
Код
GPIO_InitTypeDef GPIO_Config_Enc;
RCC_AHBPeriphClockCmd(RCC_AHBENR_GPIOAEN, ENABLE);
GPIO_Config_Enc.GPIO_Pin = GPIO_Pin_6 | GPIO_Pin_7;
GPIO_Config_Enc.GPIO_Mode = GPIO_Mode_IN;
GPIO_Config_Enc.GPIO_PuPd = GPIO_PuPd_UP;
GPIO_Config_Enc.GPIO_Speed = GPIO_Speed_10MHz;
GPIO_Init(GPIOA, &GPIO_Config_Enc);
И не важно, каких ножек, какого порта и в каком режиме.
Можно структуру вообще не инициализировать, разницы нет.
RCC_AHBPeriphClockCmd(RCC_AHBENR_GPIOAEN, ENABLE);
GPIO_Config_Enc.GPIO_Pin = GPIO_Pin_6 | GPIO_Pin_7;
GPIO_Config_Enc.GPIO_Mode = GPIO_Mode_IN;
GPIO_Config_Enc.GPIO_PuPd = GPIO_PuPd_UP;
GPIO_Config_Enc.GPIO_Speed = GPIO_Speed_10MHz;
GPIO_Init(GPIOA, &GPIO_Config_Enc);
И не важно, каких ножек, какого порта и в каком режиме.
Можно структуру вообще не инициализировать, разницы нет.
Как прерывание перестает работать!
Что это за ерунда такая?