Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*#include "stm32f10x.h"
- int main(void) {
- int i; //zmienna do licznika
- RCC->APB2ENR = 0x00000008; //wlaczenie sygnalu zegarowego taktujacego dany uklad peryferyjny //APB2-magistrala do ktorej podlaczone sa LED
- GPIOB->CRH = 0x33333333; //konfiguracja portów IO
- //0x00000100 led1 //0x00000200 led2 //0x00000400 led3 //0x00000800 led4
- //0x00001000 led5 //0x00002000 led6 //0x00004000 led7 //0x00008000 led8
- while(1) {
- //0x00008000 led8
- GPIOB->ODR = 0x00008000; //zapalanie diody
- for(i = 1000000; i > 0; i--); //licznik
- GPIOB->ODR = 0x00000000; //gaszenie diody
- for(i = 1000000; i > 0; i--); //licznik
- }
- }*/
- /*#include "stm32f10x.h"
- #include "stm32f10x_rcc.h"
- #include "stm32f10x_gpio.h"
- void SysTick_Handler(void) {
- GPIO_WriteBit(GPIOB, GPIO_Pin_15, (BitAction) (1-GPIO_ReadOutputDataBit(GPIOB, GPIO_Pin_15))); //zapalanie i zmiana na przeciwny diody 8
- }
- int main(void) {
- //port B - diody LED
- RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);//wlacz taktowanie portu GPIO B
- GPIO_InitTypeDef tmp;
- tmp.GPIO_Mode=GPIO_Mode_Out_PP;
- tmp.GPIO_Speed=GPIO_Speed_2MHz;
- tmp.GPIO_Pin = GPIO_Pin_8 | GPIO_Pin_9 | GPIO_Pin_10 | GPIO_Pin_11 | GPIO_Pin_12 | GPIO_Pin_13 | GPIO_Pin_14 | GPIO_Pin_15;//tmp.GPIO_Pin=GPIO_Pin_All;
- GPIO_Init(GPIOB, &tmp);
- SysTick_Config(600000); //8 000 000 przerwanie co 1 s 6,5Hz = 0,15s i mnozymy x2 na caly przebieg 6,5Hz
- while(1) {
- }
- }*/
- /*#include "stm32f10x.h"
- int a,b;
- int main(void) {
- //port B - diody LED
- RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);//wlacz taktowanie portu GPIO B
- GPIO_InitTypeDef tmp;
- tmp.GPIO_Mode=GPIO_Mode_Out_PP;
- tmp.GPIO_Speed=GPIO_Speed_2MHz;
- tmp.GPIO_Pin = GPIO_Pin_8 | GPIO_Pin_9 | GPIO_Pin_10 | GPIO_Pin_11 | GPIO_Pin_12 | GPIO_Pin_13 | GPIO_Pin_14 | GPIO_Pin_15;//tmp.GPIO_Pin=GPIO_Pin_All;
- GPIO_Init(GPIOB, &tmp);
- SysTick_Config(8000000/1000);
- while(1) {
- if(a==0) {
- a=1000;
- GPIO_WriteBit(GPIOB, GPIO_Pin_15, (BitAction) (1-GPIO_ReadOutputDataBit(GPIOB, GPIO_Pin_15)));
- }
- if(b==0) {
- b=1000;
- }
- }
- }
- void SysTick_Handler(void) {
- if(a) --a;
- }
- */
- /*#include "stm32f10x.h"
- #include "stm32f10x_rcc.h"
- #include "stm32f10x_gpio.h"
- int moja6_5, co100ms;
- int main(void) {
- //port B - diody LED
- RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);//wlacz taktowanie portu GPIO B
- GPIO_InitTypeDef tmp;
- tmp.GPIO_Mode=GPIO_Mode_Out_PP;
- tmp.GPIO_Speed=GPIO_Speed_2MHz;
- tmp.GPIO_Pin = GPIO_Pin_8 | GPIO_Pin_9 | GPIO_Pin_10 | GPIO_Pin_11 | GPIO_Pin_12 | GPIO_Pin_13 | GPIO_Pin_14 | GPIO_Pin_15;
- GPIO_Init(GPIOB, &tmp);
- SysTick_Config(8000000/1000);
- while(1) {
- if(moja6_5 == 0) {
- moja6_5 = 77;
- GPIO_WriteBit(GPIOB, GPIO_Pin_9, (BitAction) (1-GPIO_ReadOutputDataBit(GPIOB, GPIO_Pin_9))); //zapalanie i zmiana na przeciwny diody 8
- }
- if(co100ms == 0) {
- co100ms = 100;
- static int a;
- a = (a+1) % 11;
- if(a == 0) GPIO_WriteBit(GPIOB, GPIO_Pin_8, Bit_SET);
- else GPIO_WriteBit(GPIOB, GPIO_Pin_8, Bit_RESET);
- }
- }
- }
- void SysTick_Handler(void) {
- if(co100ms) --co100ms;
- if(moja6_5) --moja6_5;
- }*/
- /*#include "stm32f10x.h"
- void NVIC_Config(void);
- TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;
- TIM_OCInitTypeDef TIM_OCInitStructure;
- uint16_t capture = 0;
- __IO uint16_t CC1 = 32768;
- __IO uint16_t CC2 = 16384;
- __IO uint16_t CC3 = 8192;
- __IO uint16_t CC4 = 4096;
- int main(void) {
- RCC_APB2PeriphClockCmd(RCC_APB2Periph_TIM1, ENABLE);//wlacz taktowanie TIM1
- //port B - diody LED
- RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);//wlacz taktowanie portu GPIO B
- GPIO_InitTypeDef tmp;
- tmp.GPIO_Mode=GPIO_Mode_Out_PP;
- tmp.GPIO_Speed=GPIO_Speed_50MHz;
- tmp.GPIO_Pin = GPIO_Pin_8 | GPIO_Pin_9 | GPIO_Pin_10 | GPIO_Pin_11 | GPIO_Pin_12 | GPIO_Pin_13 | GPIO_Pin_14 | GPIO_Pin_15;//tmp.GPIO_Pin=GPIO_Pin_All;
- GPIO_Init(GPIOB, &tmp);
- NVIC_Config();
- // Ustawienia ukladu podstawy czasu
- TIM_TimeBaseStructure.TIM_Period = 65535;
- TIM_TimeBaseStructure.TIM_Prescaler = 140; //fclk = 72MHz/1440 = 50kHz
- TIM_TimeBaseStructure.TIM_ClockDivision = 0;
- TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;
- TIM_TimeBaseInit(TIM1, &TIM_TimeBaseStructure);
- // Konfiguracja kanalu 1
- TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_Timing;
- TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;
- TIM_OCInitStructure.TIM_Pulse = CC1;
- TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High;
- TIM_OC1Init(TIM1, &TIM_OCInitStructure);
- TIM_OC1PreloadConfig(TIM1, TIM_OCPreload_Disable);
- // Wlaczenie przerwan od kanalow
- TIM_ITConfig(TIM1, TIM_IT_CC1, ENABLE);
- // Wlaczenie timera
- TIM_Cmd(TIM1, ENABLE);
- while (1) ;
- }
- void TIM1_CC_IRQHandler(void) {
- //sprawdzanie statusow przerwan od poszczegolnych kanalow
- if(TIM_GetITStatus(TIM1, TIM_IT_CC1) !=RESET) {
- //wyczysc bit przerwania
- TIM_ClearITPendingBit(TIM1, TIM_IT_CC1);
- //czestotliwosc LED1: 1,53Hz; zmiana stanu na przeciwny
- GPIO_WriteBit(GPIOB, GPIO_Pin_8, (BitAction)(1-GPIO_ReadOutputDataBit(GPIOB, GPIO_Pin_8)));
- //ponowne ustawienie rejestru przepelnienia
- TIM_SetCompare1(TIM1, TIM_GetCapture1(TIM1) + CC1);
- }
- }
- void NVIC_Config(void) {
- NVIC_InitTypeDef NVIC_InitStructure;
- //Konfigurowanie kontrolera przerwan NVIC
- #ifdef VECT_TAB_RAM
- // Jezeli tablica wektorow w RAM, to ustaw jej adres na 0x20000000
- NVIC_SetVectorTable(NVIC_VectTab_RAM, 0x0);
- #else // VECT_TAB_FLASH
- // W przeciwnym wypadku ustaw na 0x08000000
- NVIC_SetVectorTable(NVIC_VectTab_FLASH, 0x0);
- #endif
- NVIC_PriorityGroupConfig(NVIC_PriorityGroup_0);
- // Wlacz przerwanie od TIM1
- NVIC_InitStructure.NVIC_IRQChannel = TIM1_CC_IRQn;
- NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;
- NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1;
- NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
- NVIC_Init(&NVIC_InitStructure);
- }
- */
- /*#include "stm32f10x.h"
- void NVIC_Config(void);
- TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;
- TIM_OCInitTypeDef TIM_OCInitStructure;
- uint16_t capture = 0;
- __IO uint16_t CC1 = 32768;
- __IO uint16_t CC2 = 16384;
- __IO uint16_t CC3 = 8192;
- __IO uint16_t CC4 = 4096;
- int main(void) {
- RCC_APB2PeriphClockCmd(RCC_APB2Periph_TIM1, ENABLE);//wlacz taktowanie TIM1
- //port B - diody LED
- RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);//wlacz taktowanie portu GPIO B
- GPIO_InitTypeDef tmp;
- tmp.GPIO_Mode=GPIO_Mode_Out_PP;
- tmp.GPIO_Speed=GPIO_Speed_50MHz;
- tmp.GPIO_Pin = GPIO_Pin_8 | GPIO_Pin_9 | GPIO_Pin_10 | GPIO_Pin_11 | GPIO_Pin_12 | GPIO_Pin_13 | GPIO_Pin_14 | GPIO_Pin_15;//tmp.GPIO_Pin=GPIO_Pin_All;
- GPIO_Init(GPIOB, &tmp);
- NVIC_Config();
- // Ustawienia ukladu podstawy czasu
- TIM_TimeBaseStructure.TIM_Period = 65535;
- TIM_TimeBaseStructure.TIM_Prescaler = 140; //fclk = 72MHz/1440 = 50kHz
- TIM_TimeBaseStructure.TIM_ClockDivision = 0;
- TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;
- TIM_TimeBaseInit(TIM1, &TIM_TimeBaseStructure);
- // Konfiguracja kanalu 1
- TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_Timing;
- TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;
- TIM_OCInitStructure.TIM_Pulse = CC1;
- TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High;
- TIM_OC1Init(TIM1, &TIM_OCInitStructure);
- TIM_OC1PreloadConfig(TIM1, TIM_OCPreload_Disable);
- // Konfiguracja kanalu 2
- TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;
- TIM_OCInitStructure.TIM_Pulse = CC2;
- TIM_OC2Init(TIM1, &TIM_OCInitStructure);
- TIM_OC2PreloadConfig(TIM1, TIM_OCPreload_Disable);
- // Konfiguracja kanalu 3
- TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;
- TIM_OCInitStructure.TIM_Pulse = CC3;
- TIM_OC3Init(TIM1, &TIM_OCInitStructure);
- TIM_OC3PreloadConfig(TIM1, TIM_OCPreload_Disable);
- // Konfiguracja kanalu 4
- TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;
- TIM_OCInitStructure.TIM_Pulse = CC4;
- TIM_OC4Init(TIM1, &TIM_OCInitStructure);
- TIM_OC4PreloadConfig(TIM1, TIM_OCPreload_Disable);
- // Wlaczenie przerwan od kanalow
- TIM_ITConfig(TIM1, TIM_IT_CC1 | TIM_IT_CC2 | TIM_IT_CC3 | TIM_IT_CC4, ENABLE);
- // Wlaczenie timera
- TIM_Cmd(TIM1, ENABLE);
- while (1) ;
- }
- void TIM1_CC_IRQHandler(void) {
- //sprawdzanie statusow przerwan od poszczegolnych kanalow
- if(TIM_GetITStatus(TIM1, TIM_IT_CC1) !=RESET) {
- //wyczysc bit przerwania
- TIM_ClearITPendingBit(TIM1, TIM_IT_CC1);
- //czestotliwosc LED1: 1,53Hz; zmiana stanu na przeciwny
- GPIO_WriteBit(GPIOB, GPIO_Pin_8, (BitAction)(1-GPIO_ReadOutputDataBit(GPIOB, GPIO_Pin_8)));
- //ponowne ustawienie rejestru przepelnienia
- TIM_SetCompare1(TIM1, TIM_GetCapture1(TIM1) + CC1);
- }
- else if(TIM_GetITStatus(TIM1, TIM_IT_CC2) !=RESET) {
- TIM_ClearITPendingBit(TIM1, TIM_IT_CC2);
- GPIO_WriteBit(GPIOB, GPIO_Pin_9, (BitAction)(1-GPIO_ReadOutputDataBit(GPIOB, GPIO_Pin_9)));
- TIM_SetCompare2(TIM1, TIM_GetCapture2(TIM2) + CC2);
- }
- else if(TIM_GetITStatus(TIM1, TIM_IT_CC3) !=RESET) {
- TIM_ClearITPendingBit(TIM1, TIM_IT_CC3);
- GPIO_WriteBit(GPIOB, GPIO_Pin_10, (BitAction)(1-GPIO_ReadOutputDataBit(GPIOB, GPIO_Pin_10)));
- TIM_SetCompare3(TIM1, TIM_GetCapture3(TIM2) + CC3);
- }
- else if(TIM_GetITStatus(TIM1, TIM_IT_CC4) !=RESET) {
- TIM_ClearITPendingBit(TIM1, TIM_IT_CC4);
- GPIO_WriteBit(GPIOB, GPIO_Pin_11, (BitAction)(1-GPIO_ReadOutputDataBit(GPIOB, GPIO_Pin_11)));
- TIM_SetCompare4(TIM1, TIM_GetCapture4(TIM2) + CC4);
- }
- }
- void NVIC_Config(void) {
- NVIC_InitTypeDef NVIC_InitStructure;
- //Konfigurowanie kontrolera przerwan NVIC
- #ifdef VECT_TAB_RAM
- // Jezeli tablica wektorow w RAM, to ustaw jej adres na 0x20000000
- NVIC_SetVectorTable(NVIC_VectTab_RAM, 0x0);
- #else // VECT_TAB_FLASH
- // W przeciwnym wypadku ustaw na 0x08000000
- NVIC_SetVectorTable(NVIC_VectTab_FLASH, 0x0);
- #endif
- NVIC_PriorityGroupConfig(NVIC_PriorityGroup_0);
- // Wlacz przerwanie od TIM1
- NVIC_InitStructure.NVIC_IRQChannel = TIM1_CC_IRQn;
- NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;
- NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1;
- NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
- NVIC_Init(&NVIC_InitStructure);
- }//dziala */
Add Comment
Please, Sign In to add comment