Jörg Sturm
/
TIM6
direct Hardware access
main.cpp
- Committer:
- JoergSturm
- Date:
- 2020-04-24
- Revision:
- 1:17722afc5909
- Parent:
- 0:45170c77adc7
File content as of revision 1:17722afc5909:
#include "mbed.h" DigitalOut myled(PC_0); DigitalOut PC1(PC_1); void EX1IRQhandler(void) { //PC1=!PC1; GPIOC->ODR=~GPIOC->ODR; EXTI->PR=0b10; HAL_NVIC_ClearPendingIRQ(EXTI1_IRQn); } //TIM_HandleTypeDef htim6; void TIM6_IRQHandler(void) { myled=!myled; TIM6->SR=0; HAL_NVIC_ClearPendingIRQ(TIM6_IRQn); } void EX1init(void) { RCC->AHBENR|=0b111; GPIOA->PUPDR|=0b1000; EXTI->IMR|=0b10; EXTI->RTSR|=0b10; } static void NVIC_Init(void) { /* TIM6_IRQn interrupt configuration */ //HAL_NVIC_SetPriority(TIM6_IRQn, 0, 0); NVIC_SetVector(TIM6_IRQn, (uint32_t)&TIM6_IRQHandler); HAL_NVIC_EnableIRQ(TIM6_IRQn); NVIC_SetVector(EXTI1_IRQn, (uint32_t)&EX1IRQhandler); HAL_NVIC_EnableIRQ(EXTI1_IRQn); } /* TIM6 init function */ static void TIM6_Init(void) { /* __TIM6_CLK_ENABLE(); htim6.Instance = TIM6; htim6.Init.Prescaler = 3200; htim6.Init.CounterMode = TIM_COUNTERMODE_UP; htim6.Init.Period = 5000; if (HAL_TIM_Base_Init(&htim6) != HAL_OK) { while(1) { } } HAL_TIM_Base_Start_IT(&htim6); */ RCC->APB1ENR|=0b10000; //Clock Enable TIM6->PSC=3200; //Prescaler 100µs TIM6->ARR=5000; //Autoreload 5000*100µs = 0,5s TIM6->DIER=1; //UIE = 1 (Update Interrupt Enable) TIM6->SR=0; //UIF =0 (Update Interrupt Flag) TIM6->CR1=1; //CEN=1 (Counter Enable) } int main() { TIM6_Init(); EX1init(); NVIC_Init(); while(1) { /* if (TIM6->SR==1) { TIM6->SR=0; myled=!myled; } */ } }