int main(void) { fpu_enable(); system_init(); pll_start(CRYSTAL, FREQUENCY); gpio_pin_cfg(GPIOD, 12, GPIO_OUT_PP_25MHz); gpio_pin_cfg(GPIOD, 13, GPIO_OUT_PP_25MHz); gpio_pin_cfg(GPIOD, 14, GPIO_OUT_PP_25MHz); gpio_pin_cfg(GPIOD, 15, GPIO_OUT_PP_25MHz); USBD_Init(&USB_Dev, USB_OTG_FS_CORE_ID, &USR_desc, &AUDIO_cb, &USR_cb); while(1); }
/** * @brief Configure peripherals * * Use configuration in separate function rather than in main * to save stack space for one-time-used configuration variables. * Configure: USART and GPIO */ static void configure_peripherals(void) { gpio_pin_cfg_t pincfg; gpio_init(); usartcfg.device = USART_DEVICE_2; usartcfg.baudrate = 115200; usart_init(&usartcfg); pincfg.mode = GPIO_CFG_MODE_OUTPUT; pincfg.speed = GPIO_CFG_SPEED_25MHZ; pincfg.type = GPIO_CFG_TYPE_PP; gpio_pin_cfg(LED_GPIO, LED_pin_red, &pincfg); gpio_pin_cfg(LED_GPIO, LED_pin_green, &pincfg); }
void adc_init(void) { gpio_pin_cfg(GPIOB, 0, GPIO_CRx_MODE_CNF_IN_ANALOG_value); //RCC // ADC CLOCK ON bitband_t m_BITBAND_PERIPH(&RCC->APB2ENR,9) = 1; // RCC->APB2ENR RCC_APB2ENR_ADC1EN <= bit9; // ADC Prescaler (2) bitband_t m_BITBAND_PERIPH(&RCC->CFGR,14) = 1; // RCC->CFGR bit 14 => RCC_CFGR_ADCPRE_0;; bitband_t m_BITBAND_PERIPH(&RCC->CFGR,15) = 1; // RCC->CFGR bit 14 => RCC_CFGR_ADCPRE_0;; /* //CR1 //Discontinius mode enable bitband_t m_BITBAND_PERIPH(&ADC1->CR1,11) = 1; //ADC1->CR1 ADC_CR1_DISCEN bit 15; // Channel 8 (ADC_CR1_DISCNUM = 000 ) 1channel bitband_t m_BITBAND_PERIPH(&ADC1->CR1,13) = 0; //ADC1->CR1 ADC_CR1_DISCNUM_0 bit 13; bitband_t m_BITBAND_PERIPH(&ADC1->CR1,14) = 0; //ADC1->CR1 ADC_CR1_DISCNUM_1 bit 14; bitband_t m_BITBAND_PERIPH(&ADC1->CR1,15) = 0; //ADC1->CR1 ADC_CR1_DISCNUM_2 bit 15; // Channel 8 bitband_t m_BITBAND_PERIPH(&ADC1->SQR3,0) = 0; //ADC1->SQR3 |= ADC_SQR3_SQ1_0; bit 0; bitband_t m_BITBAND_PERIPH(&ADC1->SQR3,0) = 0; //ADC1->SQR3 |= ADC_SQR3_SQ1_1; bit 1; bitband_t m_BITBAND_PERIPH(&ADC1->SQR3,0) = 0; //ADC1->SQR3 |= ADC_SQR3_SQ1_2; bit 2; bitband_t m_BITBAND_PERIPH(&ADC1->SQR3,0) = 1; //ADC1->SQR3 |= ADC_SQR3_SQ1_3; bit 3; //CR2 //Bit 22 SWSTART: Start conversion of regular channels bitband_t m_BITBAND_PERIPH(&ADC1->CR2,22) = 1; //ADC1->CR2 ADC_CR2_SWSTART bit 22; // Set ADC ON bitband_t m_BITBAND_PERIPH(&ADC1->CR2,0) = 1; // ADC1->CR2 ADC_CR2_ADON <= bit1; */ ADC1 ->CR2 = 0x005E7003; //Switch on the ADC and enable continuous conversion ADC1 ->SQR1 = 0x0000; //set sequence length to one ADC1 ->SQR2 = 0x0000; //select conversion on channel zero ADC1 ->SQR3 = 0x0008; ADC1 ->CR2 |= 0x005E7003; //rewrite on bit ADC1 ->CR1 = 0x000100; //Start conversion of regular channels, enable ADC }