Browse Source

Fix SP1 and DMAMUX mistakes.

Vladimir N. Shilov 3 years ago
parent
commit
4f31a58ab7
3 changed files with 11 additions and 7 deletions
  1. 6 6
      Src/board.c
  2. 1 1
      Src/main.c
  3. 4 0
      Src/stm32g0xx_it.c

+ 6 - 6
Src/board.c

@@ -222,7 +222,7 @@ void HSV2LED(const int hue, const uint8_t sat, const uint8_t val) {
 void SystemClock_Config(void)
 {
   /* HSI configuration and activation */
-  RCC->CR |= RCC_CR_HSIKERON; // Enable HSI even in stop mode
+  RCC->CR |= RCC_CR_HSION; // Enable HSI
   while((RCC->CR & RCC_CR_HSIRDY) == 0)
   {
   }
@@ -368,13 +368,13 @@ static void I2C1_Init(void)
      transfer error interrupt enable, transfer complete interrupt enable */
   DMA1_Channel2->CCR = (DMA_CCR_PL_0 | DMA_CCR_MINC | DMA_CCR_TEIE | DMA_CCR_TCIE);
   /* Route DMA channel 2 to I2C1 RX */
-  DMAMUX1_Channel2->CCR = 10;
+  DMAMUX1_Channel1->CCR = 10;
 
   /* I2C1_TX Init: Priority medium, Memory increment, read from memory,
      transfer error interrupt enable, transfer complete interrupt enable */
   DMA1_Channel3->CCR = (DMA_CCR_PL_0 | DMA_CCR_MINC| DMA_CCR_DIR | DMA_CCR_TEIE | DMA_CCR_TCIE);
   /* Route DMA channel 3 to I2C1 TX */
-  DMAMUX1_Channel3->CCR = 11;
+  DMAMUX1_Channel2->CCR = 11;
 
   /** I2C Initialization: I2C_Fast */
   I2C1->TIMINGR = 0x0010061A;
@@ -407,15 +407,15 @@ static void SPI1_Init(void)
      Enable DMA transfer complete/error interrupts */
   DMA1_Channel1->CCR = (DMA_CCR_PL_1 | DMA_CCR_MINC | DMA_CCR_CIRC | DMA_CCR_TEIE | DMA_CCR_DIR | DMA_CCR_TCIE);
   /* Route DMA channel 1 to SPI1 TX */
-  DMAMUX1_Channel1->CCR = 0x11;
+  DMAMUX1_Channel0->CCR = 0x11;
 
   /* SPI1 interrupt Init */
   NVIC_SetPriority(SPI1_IRQn, 0);
   NVIC_EnableIRQ(SPI1_IRQn);
 
   /* SPI1 parameter configuration: master mode, data 8 bit, divider = 16, TX DMA */
-  SPI1->CR1 = (SPI_CR1_MSTR | SPI_CR1_BR_1 | SPI_CR1_BR_0);
-  SPI1->CR2 = (SPI_CR2_DS_2 | SPI_CR2_DS_1 | SPI_CR2_DS_0 | SPI_CR2_TXDMAEN);
+  SPI1->CR1 = (SPI_CR1_MSTR | SPI_CR1_BR_1 | SPI_CR1_BR_0 | SPI_CR1_SSM | SPI_CR1_SSI);
+  SPI1->CR2 = (SPI_CR2_DS_2 | SPI_CR2_DS_1 | SPI_CR2_DS_0 | SPI_CR2_TXDMAEN | SPI_CR2_FRXTH);
 }
 
 /**

+ 1 - 1
Src/main.c

@@ -318,7 +318,7 @@ void MinusFadeOut(void) {
     }
   } else {
     st = 0;
-    IN15_Plus;
+    IN15_Minus;
     on -= 2;
     RTOS_SetTask(MinusFadeOut, on, 0);
   }

+ 4 - 0
Src/stm32g0xx_it.c

@@ -146,7 +146,11 @@ void SysTick_Handler(void)
 /**
   * @brief This function handles EXTI line 4 to 15 interrupts.
   */
+#ifndef __ARMCC_VERSION
 void __attribute__((optimize("O0"))) EXTI4_15_IRQHandler(void)
+#else
+void EXTI4_15_IRQHandler(void)
+#endif
 {
   /* USER CODE BEGIN EXTI4_15_IRQn 0 */
   if ((EXTI->FPR1 & EXTI_IMR1_IM14) != 0)