Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // lab 4b zad 1
- // zad 2 nie dziala
- /**
- ******************************************************************************
- * @file main.c
- * @author Ac6
- * @version V1.0
- * @date 01-December-2013
- * @brief Default main function.
- ******************************************************************************
- */
- #include "stm32f4xx.h"
- #include "stm32f4_discovery.h"
- #include "stm32f4xx_syscfg.h"
- void EXTI0_IRQHandler(void)
- {
- if(EXTI_GetITStatus(EXTI_Line0) != RESET)
- {
- // GPIO_ToggleBits(GPIOD, GPIO_Pin_0 | GPIO_Pin_8);
- TIM_Cmd(TIM4, ENABLE);
- // TIM_SetCounter(TIM4, 0);
- // EXTI_ClearITPendingBit(EXTI_Line0);
- }
- }
- void TIM4_IRQHandler(void)
- {
- if(TIM_GetITStatus(TIM4, TIM_IT_Update) != RESET)
- {
- if(GPIO_ReadInputDataBit(GPIOA, GPIO_Pin_0)==1)
- {
- GPIO_ToggleBits(GPIOD, GPIO_Pin_0 | GPIO_Pin_8);
- TIM_Cmd(TIM4, DISABLE);
- TIM_ClearITPendingBit(TIM4, TIM_IT_Update);
- EXTI_ClearITPendingBit(EXTI_Line0);
- }
- }
- }
- int main(void)
- {
- // zad 1
- RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM4, ENABLE);
- RCC_APB2PeriphClockCmd(RCC_APB2Periph_SYSCFG, ENABLE);
- RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOD, ENABLE);
- NVIC_InitTypeDef NVIC_InitStructure;
- // numer przerwania
- NVIC_InitStructure.NVIC_IRQChannel = EXTI0_IRQn;
- // priorytet główny
- NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0x00;
- // subpriorytet
- NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0x00;
- // uruchom dany kanał
- NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
- // zapisz wypełnioną strukturę do rejestrów
- NVIC_Init(&NVIC_InitStructure);
- EXTI_InitTypeDef EXTI_InitStructure;
- // wybór numeru aktualnie konfigurowanej linii przerwań
- EXTI_InitStructure.EXTI_Line = EXTI_Line0;
- // wybór trybu - przerwanie bądź zdarzenie
- EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;
- // wybór zbocza, na które zareaguje przerwanie
- EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Rising;
- // uruchom daną linię przerwań
- EXTI_InitStructure.EXTI_LineCmd = ENABLE;
- // zapisz strukturę konfiguracyjną przerwań zewnętrznych do rejestrów
- EXTI_Init(&EXTI_InitStructure);
- // podłączenie danego pinu portu do kontrolera przerwań
- SYSCFG_EXTILineConfig(EXTI_PortSourceGPIOA, EXTI_PinSource0);
- // wyswietlacz
- GPIO_InitTypeDef GPIO_InitStructure;
- /* Configure PD12, PD13, PD14 and PD15 in output pushpull mode */
- GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0 | GPIO_Pin_8 | GPIO_Pin_2 | GPIO_Pin_3 | GPIO_Pin_4 | GPIO_Pin_5 | GPIO_Pin_6 | GPIO_Pin_7;
- GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;
- GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
- GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;
- GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL ;
- GPIO_Init(GPIOD, &GPIO_InitStructure);
- GPIO_SetBits(GPIOD, GPIO_Pin_8);
- GPIO_ResetBits(GPIOD, GPIO_Pin_0);
- GPIO_ResetBits(GPIOD, GPIO_Pin_2 | GPIO_Pin_3 | GPIO_Pin_4 | GPIO_Pin_5 | GPIO_Pin_6 | GPIO_Pin_7);
- // zad 2
- // timer
- TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure4;
- TIM_TimeBaseStructure4.TIM_Period = 16800-1;
- TIM_TimeBaseStructure4.TIM_Prescaler = 1000-1;
- TIM_TimeBaseStructure4.TIM_ClockDivision = TIM_CKD_DIV1;
- TIM_TimeBaseStructure4.TIM_CounterMode = TIM_CounterMode_Up;
- TIM_TimeBaseInit(TIM4, &TIM_TimeBaseStructure4);
- TIM_Cmd(TIM4, DISABLE);
- // przerwanie
- NVIC_InitTypeDef NVIC_InitStructure2;
- // numer przerwania
- NVIC_InitStructure2.NVIC_IRQChannel = TIM4_IRQn;
- // priorytet główny
- NVIC_InitStructure2.NVIC_IRQChannelPreemptionPriority = 0x00;
- // subpriorytet
- NVIC_InitStructure2.NVIC_IRQChannelSubPriority = 0x00;
- // uruchom dany kanał
- NVIC_InitStructure2.NVIC_IRQChannelCmd = ENABLE;
- // zapisz wypełnioną strukturę do rejestrów
- NVIC_Init(&NVIC_InitStructure2);
- for(;;)
- {
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement