void init() { /* STM32F4 discovery LEDs */ GPIO_InitTypeDef LED_Config; /* Always remember to turn on the peripheral clock... If not, you may be up till 3am debugging... */ RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOD, ENABLE); LED_Config.GPIO_Pin = GPIO_Pin_12 | GPIO_Pin_13| GPIO_Pin_14| GPIO_Pin_15; LED_Config.GPIO_Mode = GPIO_Mode_OUT; LED_Config.GPIO_OType = GPIO_OType_PP; LED_Config.GPIO_Speed = GPIO_Speed_25MHz; LED_Config.GPIO_PuPd = GPIO_PuPd_NOPULL; GPIO_Init(GPIOD, &LED_Config); /* Setup SysTick or CROD! */ if (SysTick_Config(SystemCoreClock / 1000)) { ColorfulRingOfDeath(); } /* Setup USB */ USBD_Init(&USB_OTG_dev, USB_OTG_FS_CORE_ID, &USR_desc, &USBD_CDC_cb, &USR_cb); return; }
/** * @brief Main program * @param None * @retval None */ int main(void) { int16_t accData[3]; #ifdef WITH_USART char msg[3] = {'0','\r','\n'}; #endif HAL_Init(); HW_Init(); BlueNRG_Init(); while (1) { HCI_Process(); if (set_connectable) { set_bluenrg_connectable(); set_connectable = 0; } /* Blink the orange LED */ if (HAL_GetTick() % 500 == 0) BSP_LED_Toggle(LED3); if (HAL_GetTick() % 100 == 0) { BSP_ACCELERO_GetXYZ(accData); Acc_Update(accData); } #ifdef WITH_USART msg[0] = (msg[0] == '9')? '0' : msg[0]+1; if (HAL_USART_Transmit(&UsartHandle, (uint8_t *)msg, 3, 5000) != HAL_OK) ColorfulRingOfDeath(); #endif } }
void init() { /* STM32F4 discovery LEDs */ GPIO_InitTypeDef LED_Config; /* Always remember to turn on the peripheral clock... If not, you may be up till 3am debugging... */ RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOD, ENABLE); LED_Config.GPIO_Pin = GPIO_Pin_12 | GPIO_Pin_13| GPIO_Pin_14| GPIO_Pin_15; LED_Config.GPIO_Mode = GPIO_Mode_OUT; LED_Config.GPIO_OType = GPIO_OType_PP; LED_Config.GPIO_Speed = GPIO_Speed_25MHz; LED_Config.GPIO_PuPd = GPIO_PuPd_NOPULL; GPIO_Init(GPIOD, &LED_Config); /* Setup SysTick or CROD! */ if (SysTick_Config(SystemCoreClock / 1000)) { ColorfulRingOfDeath(); } /** Setup UART */ GPIO_InitTypeDef GPIO_InitStruct; USART_InitTypeDef USART_InitStruct; NVIC_InitTypeDef NVIC_InitStructure; RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1, ENABLE); RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOB, ENABLE); GPIO_InitStruct.GPIO_Pin = GPIO_Pin_6 | GPIO_Pin_7; // Pins 6 (TX) and 7 (RX) are used GPIO_InitStruct.GPIO_Mode = GPIO_Mode_AF; // the pins are configured as alternate function so the USART peripheral has access to them GPIO_InitStruct.GPIO_Speed = GPIO_Speed_50MHz; // this defines the IO speed and has nothing to do with the baudrate! GPIO_InitStruct.GPIO_OType = GPIO_OType_PP; // this defines the output type as push pull mode (as opposed to open drain) GPIO_InitStruct.GPIO_PuPd = GPIO_PuPd_UP; // this activates the pullup resistors on the IO pins GPIO_Init(GPIOB, &GPIO_InitStruct); GPIO_PinAFConfig(GPIOB, GPIO_PinSource6, GPIO_AF_USART1); GPIO_PinAFConfig(GPIOB, GPIO_PinSource7, GPIO_AF_USART1); USART_InitStruct.USART_BaudRate = 115200; // the baudrate is set to the value we passed into this init function USART_InitStruct.USART_WordLength = USART_WordLength_8b;// we want the data frame size to be 8 bits (standard) USART_InitStruct.USART_StopBits = USART_StopBits_1; // we want 1 stop bit (standard) USART_InitStruct.USART_Parity = USART_Parity_No; // we don't want a parity bit (standard) USART_InitStruct.USART_HardwareFlowControl = USART_HardwareFlowControl_None; // we don't want flow control (standard) USART_InitStruct.USART_Mode = USART_Mode_Tx | USART_Mode_Rx; // we want to enable the transmitter and the receiver USART_Init(USART1, &USART_InitStruct); /* Here the USART1 receive interrupt is enabled * and the interrupt controller is configured * to jump to the USART1_IRQHandler() function * if the USART1 receive interrupt occurs */ USART_ITConfig(USART1, USART_IT_RXNE, ENABLE); // enable the USART1 receive interrupt NVIC_InitStructure.NVIC_IRQChannel = USART1_IRQn; // we want to configure the USART1 interrupts NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;// this sets the priority group of the USART1 interrupts NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0; // this sets the subpriority inside the group NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; // the USART1 interrupts are globally enabled NVIC_Init(&NVIC_InitStructure); // the properties are passed to the NVIC_Init function which takes care of the low level stuff // finally this enables the complete USART1 peripheral USART_Cmd(USART1, ENABLE); /* Setup USB */ USBD_Init(&USB_OTG_dev, USB_OTG_FS_CORE_ID, &USR_desc, &USBD_CDC_cb, &USR_cb); return; }
void UsageFault_Handler(void){ ColorfulRingOfDeath(); }
void BusFault_Handler(void) { ColorfulRingOfDeath(); }
void MemManage_Handler(void) { ColorfulRingOfDeath(); }
void HardFault_Handler(void) { ColorfulRingOfDeath(); }
void init(void) { SystemInit(); //Setup SystickTimer if (SysTick_Config(SystemCoreClock / 1000)){ColorfulRingOfDeath();} GPIO_Configuration(); #ifdef USE_MICROUSB USBD_Init(&USB_OTG_dev, USB_OTG_FS_CORE_ID, &USR_desc, &USBD_CDC_cb, &USR_cb); #endif #ifdef USE_SDIO UB_Fatfs_Init(); #endif #ifdef USE_ADC ADC_Configuration(); #endif #ifdef USE_I2C I2C_Configuration(); #endif #ifdef USE_SPI SPI_Configuration(); #endif #ifdef USE_ENCODER TIM_encoder_Configuration(); #endif #ifdef USE_USART1 USART1_Configuration(); #endif #ifdef USE_USART2 USART2_Configuration(); #endif #ifdef USE_USART3 USART3_Configuration(); #endif #ifdef USE_CAN CAN_Configuration(); #endif #ifdef USE_PWM TIM_pwm_Configuration(); #endif #ifdef USE_EXTI EXTI_Configuration(); #endif NVIC_Configuration(); }
static void HW_Init(void) { GPIO_InitTypeDef GPIO_InitStruct; /* Init STM32F401 discovery LEDs */ BSP_LED_Init(LED3); BSP_LED_Init(LED4); BSP_LED_Init(LED5); BSP_LED_Init(LED6); /* Init SPI and I2C */ GYRO_IO_Init(); COMPASSACCELERO_IO_Init(); /* Init on-board AccelMag */ BSP_ACCELERO_Init(); /* Init BlueNRG CS, Reset, and IRQ pin */ BLUENRG_CS_GPIO_CLK_ENABLE(); GPIO_InitStruct.Pin = BLUENRG_CS_PIN; GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; GPIO_InitStruct.Pull = GPIO_NOPULL; GPIO_InitStruct.Speed = GPIO_SPEED_HIGH; HAL_GPIO_Init(BLUENRG_CS_GPIO_PORT, &GPIO_InitStruct); HAL_GPIO_WritePin(BLUENRG_CS_GPIO_PORT, BLUENRG_CS_PIN, GPIO_PIN_SET); BLUENRG_RESET_GPIO_CLK_ENABLE(); GPIO_InitStruct.Pin = BLUENRG_RESET_PIN; GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; GPIO_InitStruct.Pull = GPIO_NOPULL; GPIO_InitStruct.Speed = GPIO_SPEED_LOW; HAL_GPIO_Init(BLUENRG_RESET_GPIO_PORT, &GPIO_InitStruct); BLUENRG_IRQ_GPIO_CLK_ENABLE(); GPIO_InitStruct.Pin = BLUENRG_IRQ_PIN; GPIO_InitStruct.Mode = GPIO_MODE_IT_RISING; GPIO_InitStruct.Pull = GPIO_NOPULL; HAL_GPIO_Init(BLUENRG_IRQ_GPIO_PORT, &GPIO_InitStruct); #ifdef WITH_USART /* Init USART port */ UsartHandle.Instance = USART2; UsartHandle.Init.BaudRate = 9600; UsartHandle.Init.WordLength = USART_WORDLENGTH_8B; UsartHandle.Init.StopBits = USART_STOPBITS_1; UsartHandle.Init.Parity = USART_PARITY_NONE; UsartHandle.Init.Mode = USART_MODE_TX_RX; if (HAL_USART_Init(&UsartHandle) != HAL_OK) { ColorfulRingOfDeath(); } #endif #ifdef WITH_VCP /* Init Device Library */ USBD_Init(&hUSBDDevice, &VCP_Desc, 0); /* Add Supported Class */ USBD_RegisterClass(&hUSBDDevice, &USBD_CDC); /* Add CDC Interface Class */ USBD_CDC_RegisterInterface(&hUSBDDevice, &USBD_CDC_fops); /* Start Device Process */ USBD_Start(&hUSBDDevice); #endif }