int main(void){ /*!< At this stage the microcontroller clock setting is already configured, this is done through SystemInit() function which is called from startup file (startup_stm32f0xx.s) before to branch to application main. To reconfigure the default setting of SystemInit() function, refer to system_stm32f0xx.c file */ Configure_GPIO_LED(); Configure_GPIO_USART1(); Configure_USART1(); Configure_GPIO_Button(); Configure_EXTI(); /* Start transmission in button IRQ handler */ /* Infinite loop */ while (1) { }}/** * @brief This function : - Enables GPIO clock - Configures the Green LED pin on GPIO PC9 - Configures the Orange LED pin on GPIO PC8 * @param None * @retval None */__INLINE void Configure_GPIO_LED(void){ /* Enable the peripheral clock of GPIOC */ RCC->AHBENR |= RCC_AHBENR_GPIOCEN; /* Select output mode (01) on PC8 and PC9 */ GPIOC->MODER = (GPIOC->MODER & ~(GPIO_MODER_MODER8 | GPIO_MODER_MODER9)) \ | (GPIO_MODER_MODER8_0 | GPIO_MODER_MODER9_0);}/** * @brief This function : - Enables GPIO clock - Configures the USART1 pins on GPIO PB6 PB7 * @param None * @retval None */__INLINE void Configure_GPIO_USART1(void){ /* Enable the peripheral clock of GPIOA */ RCC->AHBENR |= RCC_AHBENR_GPIOAEN; /* GPIO configuration for USART1 signals */ /* (1) Select AF mode (10) on PA9 and PA10 */ /* (2) AF1 for USART1 signals */ GPIOA->MODER = (GPIOA->MODER & ~(GPIO_MODER_MODER9|GPIO_MODER_MODER10))\ | (GPIO_MODER_MODER9_1 | GPIO_MODER_MODER10_1); /* (1) */ GPIOA->AFR[1] = (GPIOA->AFR[1] &~ (GPIO_AFRH_AFRH1 | GPIO_AFRH_AFRH2))\ | (1 << (1 * 4)) | (1 << (2 * 4)); /* (2) */}/** * @brief This function configures USART1. * @param None * @retval None */__INLINE void Configure_USART1(void){ /* Enable the peripheral clock USART1 */ RCC->APB2ENR |= RCC_APB2ENR_USART1EN; /* Configure USART1 */ /* (1) oversampling by 16, 9600 baud */ /* (2) 8 data bit, 1 start bit, 1 stop bit, no parity */ USART1->BRR = 480000 / 96; /* (1) */ USART1->CR1 = USART_CR1_TE | USART_CR1_UE; /* (2) */ /* polling idle frame Transmission */ while((USART1->ISR & USART_ISR_TC) != USART_ISR_TC) { /* add time out here for a robust application */ } USART1->ICR |= USART_ICR_TCCF;/* clear TC flag */ USART1->CR1 |= USART_CR1_TCIE;/* enable TC interrupt */ /* Configure IT */ /* (3) Set priority for USART1_IRQn */ /* (4) Enable USART1_IRQn */ NVIC_SetPriority(USART1_IRQn, 0); /* (3) */ NVIC_EnableIRQ(USART1_IRQn); /* (4) */}
Комментариев нет:
Отправить комментарий
ваше мнение...