Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include "stm32f4xx_conf.h"
- #include "stm32f4xx_gpio.h"
- #include "stm32f4xx_rcc.h"
- #include "stm32f4xx_tim.h"
- #include "stm32f4xx_syscfg.h"
- #include "stm32f4xx_exti.h"
- #include "misc.h"
- #include "stm32f4xx_adc.h"
- #include "stm32f4xx_dac.h"
- #include "stm32f4xx_spi.h"
- #include "stm32f4xx_usart.h"
- #include "stm32f4xx_dma.h"
- #include "stm32f4_discovery_lis302dl.h"
- //akcelerometr:
- int8_t acc_x;
- int8_t acc_y;
- int8_t acc_z;
- unsigned int i;
- void Diody_LED()
- {
- // Diody LED
- /* GPIOD Periph clock enable */
- RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOD, ENABLE);
- /* Configure PD12, PD13, PD14 and PD15 in output pushpull mode */ // DIODY LED
- GPIO_InitTypeDef GPIO_InitStructure;
- GPIO_InitStructure.GPIO_Pin = GPIO_Pin_12 | GPIO_Pin_13 | GPIO_Pin_14 | GPIO_Pin_15;
- GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;
- GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
- GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;// maks prędkosc przelaczania wyprowadze
- GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;
- GPIO_Init(GPIOD, &GPIO_InitStructure);
- //
- }
- void Przycisk()
- {
- // Przycisk
- SystemCoreClockUpdate();
- GPIO_InitTypeDef GPIO_InitStructure;
- RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA, ENABLE);
- GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;
- GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN;
- //GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
- //GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz; // maks prędkosc przelaczania wyprowadzen
- GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;
- GPIO_Init(GPIOA, &GPIO_InitStructure);
- //
- }
- void TIM3_confg()
- {
- RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE);
- TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;
- /* Time base configuration */
- //period 2000 prescaler 41999; == 1s
- TIM_TimeBaseStructure.TIM_Period = 1000;
- TIM_TimeBaseStructure.TIM_Prescaler = 41999;
- TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1;
- TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;
- TIM_TimeBaseInit(TIM3, &TIM_TimeBaseStructure);
- TIM_Cmd(TIM3, ENABLE); // Timer uruchamiamy...
- /*
- Możliwe jest odczytanie rejestru, w którym przechowywana jest aktualna wartość
- licznika:
- unsigned int counter = TIMx->CNT;
- Oraz programowe odczytanie i reset flagi przepełnienia timera:
- if(TIM_GetFlagStatus(TIMx, TIM_FLAG_Update)) {// zmienić x
- ...
- ...
- TIM_ClearFlag(TIMx, TIM_FLAG_Update); // zmienić x
- }
- */
- }
- void TIM4_confg()
- {
- SystemCoreClockUpdate();
- RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM4, ENABLE);
- TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;
- /* Time base configuration */
- //period 1 999 prescaler 41 999 ; timer == 1s
- TIM_TimeBaseStructure.TIM_Period = 999;
- TIM_TimeBaseStructure.TIM_Prescaler = 41999;
- TIM_TimeBaseStructure.TIM_ClockDivision = 0;
- TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;
- TIM_TimeBaseInit(TIM4, &TIM_TimeBaseStructure);
- TIM_Cmd(TIM4, ENABLE); // Timer uruchamiamy...
- /*
- Możliwe jest odczytanie rejestru, w którym przechowywana jest aktualna wartość
- licznika:
- unsigned int counter = TIMx->CNT;
- Oraz programowe odczytanie i reset flagi przepełnienia timera:
- if(TIM_GetFlagStatus(TIMx, TIM_FLAG_Update)) {// zmienić x
- ...
- ...
- TIM_ClearFlag(TIMx, TIM_FLAG_Update); // zmienić x
- }
- */
- }
- void TIM_COUNTER(){
- //##### Konfiguracja przerwań - Timer/Counter.
- // ustawienie trybu pracy priorytetów przerwań
- NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1);
- NVIC_InitTypeDef NVIC_InitStructure;
- // numer przerwania
- NVIC_InitStructure.NVIC_IRQChannel = TIM3_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);
- //####
- // wyczyszczenie przerwania od timera 3 (wystąpiło przy konfiguracji timera)
- TIM_ClearITPendingBit(TIM3, TIM_IT_Update);
- // zezwolenie na przerwania od przepełnienia dla timera 3
- TIM_ITConfig(TIM3, TIM_IT_Update, ENABLE);
- //###
- //uruchomienie timera
- TIM_Cmd(TIM3, ENABLE);
- }
- void TIM3_IRQHandler(void) //Obsługa przerwań - Timer / Counter.
- {
- if (TIM_GetITStatus(TIM3, TIM_IT_Update) != RESET)
- {
- // miejsce na kod wywoływany w momencie wystąpienia przerwania
- //#####
- //#####
- // wyzerowanie flagi wyzwolonego przerwania
- TIM_ClearITPendingBit(TIM3, TIM_IT_Update);
- }
- }
- int main(void)
- {
- SystemInit();
- SystemCoreClockUpdate(); // calculates the current core clock
- Diody_LED();
- Przycisk();
- //TIM3_confg();
- TIM4_confg();
- //PWM__(); // z diodami na pwm
- //TIM_COUNTER();
- //TIM3_IRQHandler();
- //ZEWNETRZNE();
- //EXTI1_IRQHandler();
- //ADC__();
- //DAC__();
- //akcelerometr();
- /* Time base configuration */
- //period 2000 prescaler 41999; == 1s
- int stan=1, mode=0;
- for(;;){
- if(GPIO_ReadInputDataBit(GPIOA, GPIO_Pin_0)!=0){
- if(mode==1) mode=0;
- else if(mode==0) mode=1;
- for (i=0;i<10000000;i++);
- }
- if(TIM_GetFlagStatus(TIM4, TIM_FLAG_Update)) {
- switch(stan) {
- case 1:
- GPIO_SetBits(GPIOD, GPIO_Pin_12|GPIO_Pin_13|GPIO_Pin_14|GPIO_Pin_15);
- break;
- case 2:
- GPIO_ResetBits(GPIOD, GPIO_Pin_12|GPIO_Pin_13|GPIO_Pin_14|GPIO_Pin_15);
- break;
- case 3:
- GPIO_SetBits(GPIOD, GPIO_Pin_12|GPIO_Pin_13|GPIO_Pin_14|GPIO_Pin_15);
- break;
- case 4:
- GPIO_ResetBits(GPIOD, GPIO_Pin_12|GPIO_Pin_13|GPIO_Pin_14|GPIO_Pin_15);
- break;
- case 5:
- GPIO_SetBits(GPIOD, GPIO_Pin_12|GPIO_Pin_13|GPIO_Pin_14|GPIO_Pin_15);
- break;
- case 6:
- GPIO_ResetBits(GPIOD, GPIO_Pin_12|GPIO_Pin_13|GPIO_Pin_14|GPIO_Pin_15);
- break;
- case 7:
- GPIO_SetBits(GPIOD, GPIO_Pin_12|GPIO_Pin_13|GPIO_Pin_14|GPIO_Pin_15);
- break;
- case 8:
- GPIO_SetBits(GPIOD, GPIO_Pin_12|GPIO_Pin_13|GPIO_Pin_14|GPIO_Pin_15);
- break;
- case 9:
- GPIO_SetBits(GPIOD, GPIO_Pin_12|GPIO_Pin_13|GPIO_Pin_14|GPIO_Pin_15);
- break;
- case 10:
- GPIO_ResetBits(GPIOD, GPIO_Pin_12|GPIO_Pin_13|GPIO_Pin_14|GPIO_Pin_15);
- break;
- case 11:
- GPIO_SetBits(GPIOD, GPIO_Pin_12|GPIO_Pin_13|GPIO_Pin_14|GPIO_Pin_15);
- break;
- case 14:
- GPIO_ResetBits(GPIOD, GPIO_Pin_12|GPIO_Pin_13|GPIO_Pin_14|GPIO_Pin_15);
- break;
- case 15:
- GPIO_SetBits(GPIOD, GPIO_Pin_12|GPIO_Pin_13|GPIO_Pin_14|GPIO_Pin_15);
- break;
- case 16:
- GPIO_SetBits(GPIOD, GPIO_Pin_12|GPIO_Pin_13|GPIO_Pin_14|GPIO_Pin_15);
- break;
- case 17:
- GPIO_SetBits(GPIOD, GPIO_Pin_12|GPIO_Pin_13|GPIO_Pin_14|GPIO_Pin_15);
- break;
- case 18:
- GPIO_ResetBits(GPIOD, GPIO_Pin_12|GPIO_Pin_13|GPIO_Pin_14|GPIO_Pin_15);
- break;
- }
- if(mode==0){
- if(stan+1!=19)stan++;
- else stan=1;
- }
- else if(mode==1){
- stan=4;
- }
- TIM_ClearFlag(TIM4, TIM_FLAG_Update);
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement