Vs: STM32 Design Contest
cortex proses pole vaja olnud asmi väänata aga ARM7 puhul küll. Raua suhtlused jms tasuks ikka C-s teha. ASM-i ARM-i puhul läks näiteks vaja startup puhul ja eriti mis muudutas Nested interrupte. ARM7 teatavasti puudub NVIC. Cortexil on aga jub aga NVIC sees seega pole vaja selle pärast ka muretseda. Startupil pole vaja ka erilist maagiat väänata. Aga noh ma tegelen STM cortex prosedega seega kasutan ST raua klotsi, seal pole speski vaja väga lapata ja rauaga ajusid väänata. Väike näide timer initist(tasub märkidaa etkuna timerid sarnased ja sama lib siis koodi teisel timeril kasutamine on käkitegu.)
cortex proses pole vaja olnud asmi väänata aga ARM7 puhul küll. Raua suhtlused jms tasuks ikka C-s teha. ASM-i ARM-i puhul läks näiteks vaja startup puhul ja eriti mis muudutas Nested interrupte. ARM7 teatavasti puudub NVIC. Cortexil on aga jub aga NVIC sees seega pole vaja selle pärast ka muretseda. Startupil pole vaja ka erilist maagiat väänata. Aga noh ma tegelen STM cortex prosedega seega kasutan ST raua klotsi, seal pole speski vaja väga lapata ja rauaga ajusid väänata. Väike näide timer initist(tasub märkidaa etkuna timerid sarnased ja sama lib siis koodi teisel timeril kasutamine on käkitegu.)
Kood:
NVIC_InitTypeDef NVIC_InitStructure; TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure; TIM_OCInitTypeDef TIM_OCInitStructure; ErrorStatus HSEStartUpStatus; GPIO_InitTypeDef GPIO_InitStructure; GPIO_PinRemapConfig(GPIO_FullRemap_TIM3, ENABLE); RCC_APB1PeriphClockCmd( RCC_APB1Periph_TIM3, ENABLE); RCC_APB2PeriphClockCmd( RCC_APB2Periph_GPIOC , ENABLE); /*PWM IO config*/ GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; GPIO_Init(GPIOC, &GPIO_InitStructure); /* Enable the TIM3 gloabal Interrupt */ NVIC_InitStructure.NVIC_IRQChannel = TIM3_IRQChannel; NVIC_InitStructure.NVIC_IRQChannelSubPriority = 3; NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; NVIC_Init(&NVIC_InitStructure); /* Time base configuration */ TIM_TimeBaseStructure.TIM_Period = 71; TIM_TimeBaseStructure.TIM_Prescaler = 1; TIM_TimeBaseStructure.TIM_ClockDivision = 0; TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up; TIM_TimeBaseInit(TIM3, &TIM_TimeBaseStructure); /* PWM1 Mode configuration: Channel1 */ TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1; TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable; TIM_OCInitStructure.TIM_Pulse = 31; TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High; TIM_OC4Init(TIM3, &TIM_OCInitStructure); TIM_OC4PreloadConfig(TIM3, TIM_OCPreload_Enable); TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_Timing; TIM_OCInitStructure.TIM_Pulse = 1; TIM_OC2Init(TIM3, &TIM_OCInitStructure); TIM_OC2PreloadConfig(TIM3, TIM_OCPreload_Enable); TIM_ARRPreloadConfig(TIM3, ENABLE); /* TIM IT enable */ TIM_ITConfig(TIM3, TIM_IT_CC2 , ENABLE); /* TIM3 enable counter */ TIM_Cmd(TIM3, ENABLE);
Comment