Timer-INT in C für das mySTM32 Board Light
//--------------------------------------------------------------------------- // Title : simple Timer-INT Solution, ARM C application in SiSy //--------------------------------------------------------------------------- // Function : ... // Wiring : ... //--------------------------------------------------------------------------- // Hardware : ... // Clock : ... MHz // Language : ARM C // Date : ... // Version : ... // Author : ... //--------------------------------------------------------------------------- #include <stddef.h> #include <stdlib.h> #include "hardware.h" void initApplication() { SysTick_Config(SystemCoreClock/100); // weitere Initialisierungen durchführen // GPIOD Takt einschalten RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOB, ENABLE); // Konfiguriere PD15 GPIO_InitTypeDef GPIO_InitStructure; GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT; GPIO_InitStructure.GPIO_OType = GPIO_OType_PP; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_2MHz; GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL; GPIO_Init(GPIOB, &GPIO_InitStructure); // Takt für Timer einschalten RCC_APB2PeriphClockCmd(RCC_APB2Periph_TIM16, ENABLE); // Timer konfigurieren TIM_TimeBaseInitTypeDef TIM_TimeBase_InitStructure; TIM_TimeBase_InitStructure.TIM_ClockDivision = TIM_CKD_DIV1; TIM_TimeBase_InitStructure.TIM_CounterMode = TIM_CounterMode_Up; TIM_TimeBase_InitStructure.TIM_Period = 4800; TIM_TimeBase_InitStructure.TIM_Prescaler = 10000; TIM_TimeBaseInit(TIM16, &TIM_TimeBase_InitStructure); TIM_ITConfig(TIM16, TIM_IT_Update, ENABLE); // Timer einschalten TIM_Cmd(TIM16, ENABLE); // Interruptcontroller konfigurieren NVIC_InitTypeDef NVIC_InitStructure; NVIC_InitStructure.NVIC_IRQChannel = TIM16_IRQn; NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; NVIC_InitStructure.NVIC_IRQChannelPriority = 0x03; NVIC_Init(&NVIC_InitStructure); } int main(void) { SystemInit(); initApplication(); while(true) { //leer } } extern "C" void SysTick_Handler(void) { //leer } extern "C" void TIM16_IRQHandler() { GPIO_ToggleBits(GPIOB,GPIO_Pin_0); TIM_ClearITPendingBit(TIM16, TIM_IT_Update); } //------------------------------------------------------------------------------
Test
Nutzen sie die Schaltflächen Kompilieren, Linken und Brennen. Stellen Sie die nötigen Verbindungen auf dem Board mit den dafür vorgesehenen Patchkabeln her. Testen Sie die Anwendung.
Version mit der STM32 HAL Library
…
Version mit der STM32 LL Library
…