Browse Source

toggle DAC on timer interrupt

makefile_for_cmsis
heck 2 years ago
parent
commit
eb6d122bd4
  1. 28
      Core/Src/cppmain.cc
  2. 2
      Core/Src/tim.c

28
Core/Src/cppmain.cc

@ -36,14 +36,14 @@ void log(std::string &&msg)
// DAC // DAC
// --- // ---
void set_dac_1(uint32_t val) void set_dac_1(uint16_t val)
{ {
HAL_DAC_SetValue(&hdac, DAC_CHANNEL_1, DAC_ALIGN_12B_L, val); HAL_DAC_SetValue(&hdac, DAC_CHANNEL_1, DAC_ALIGN_12B_R, val);
} }
void set_dac_2(uint32_t val) void set_dac_2(uint16_t val)
{ {
HAL_DAC_SetValue(&hdac, DAC_CHANNEL_2, DAC_ALIGN_12B_L, val); HAL_DAC_SetValue(&hdac, DAC_CHANNEL_2, DAC_ALIGN_12B_R, val);
} }
@ -65,7 +65,15 @@ void led_green_off()
HAL_GPIO_WritePin(LED_GREEN_GPIO_Port, LED_GREEN_Pin, GPIO_PIN_RESET); HAL_GPIO_WritePin(LED_GREEN_GPIO_Port, LED_GREEN_Pin, GPIO_PIN_RESET);
} }
void dac1_toggle() {
static bool dac_state{ 0 };
dac_state = !dac_state;
if (dac_state) {
set_dac_1(0b0000111111111111);
} else {
set_dac_1(0b0000000000000000);
}
}
// MAIN // MAIN
// ---- // ----
@ -77,10 +85,13 @@ void irq1()
void timer_cb() void timer_cb()
{ {
dac1_toggle();
led_green_toggle(); led_green_toggle();
log("timerUP"); log("timerUP");
} }
// dont forget to start the DAC
// HAL_DAC_Start(&hdac, DAC_CHANNEL_1);
void bytebeat() void bytebeat()
{ {
HAL_DAC_Start(&hdac, DAC_CHANNEL_1); HAL_DAC_Start(&hdac, DAC_CHANNEL_1);
@ -96,11 +107,10 @@ void bytebeat()
void cppmain(void) void cppmain(void)
{ {
HAL_DAC_Start(&hdac, DAC_CHANNEL_1);
HAL_TIM_Base_Start_IT(&htim2); HAL_TIM_Base_Start_IT(&htim2);
while(true) { while (true) {
log("huhu"); log("huhu");
HAL_Delay(2000); HAL_Delay(1000);
} }
} }

2
Core/Src/tim.c

@ -43,7 +43,7 @@ void MX_TIM2_Init(void)
htim2.Instance = TIM2; htim2.Instance = TIM2;
htim2.Init.Prescaler = 0; htim2.Init.Prescaler = 0;
htim2.Init.CounterMode = TIM_COUNTERMODE_UP; htim2.Init.CounterMode = TIM_COUNTERMODE_UP;
htim2.Init.Period = 4294967295; htim2.Init.Period = 429400;
htim2.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1; htim2.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1;
htim2.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE; htim2.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE;
if (HAL_TIM_Base_Init(&htim2) != HAL_OK) if (HAL_TIM_Base_Init(&htim2) != HAL_OK)

Loading…
Cancel
Save