- void APM_USART1Init(void)
- {
- GPIO_Config_T GPIO_configStruct;
- USART_Config_T usartConfigStruct;;
- RCM_EnableAHB1PeriphClock(RCM_AHB1_PERIPH_GPIOA);
- RCM_EnableAPB2PeriphClock(RCM_APB2_PERIPH_USART1);
-
- /* Connect PXx to USARTx_Tx */
- GPIO_ConfigPinAF(GPIOA, GPIO_PIN_SOURCE_9, GPIO_AF_USART1);
- /* Connect PXx to USARTx_Rx */
- GPIO_ConfigPinAF(GPIOA, GPIO_PIN_SOURCE_10, GPIO_AF_USART1);
- GPIO_ConfigStructInit(&GPIO_configStruct);
- /* Configure USART Tx as alternate function push-pull */
- GPIO_configStruct.mode = GPIO_MODE_AF;
- GPIO_configStruct.pin = GPIO_PIN_9|GPIO_PIN_10;
- GPIO_configStruct.speed = GPIO_SPEED_50MHz;
- GPIO_Config(GPIOA, &GPIO_configStruct);
- usartConfigStruct.baudRate = 115200;
- usartConfigStruct.hardwareFlow = USART_HARDWARE_FLOW_NONE;
- usartConfigStruct.mode = USART_MODE_TX;
- usartConfigStruct.parity = USART_PARITY_NONE;
- usartConfigStruct.stopBits = USART_STOP_BIT_1;
- usartConfigStruct.wordLength = USART_WORD_LEN_8B;
- USART_Config(USART1,&usartConfigStruct);
- /* Enable USART */
- USART_Enable(USART1);
- }
- int fputc(int ch, FILE* f)
- {
- /* send a byte of data to the serial port */
- USART_TxData(USART1, (uint8_t)ch);
- /* wait for the data to be send */
- while (USART_ReadStatusFlag(USART1, USART_FLAG_TXBE) == RESET);
- return (ch);
- }
在外部中断中加入打印部分:
- void EINT0_IRQHandler(void)
- {
- if(EINT_ReadIntFlag(EINT_LINE_0))
- {
- APM_LED3_Toggle;
- printf("APM_LED3_Toggle \r\n");
- /*Clear EINT_LINE0 interrupt flag*/
- EINT_ClearIntFlag(EINT_LINE_0);
- }
- }
效果如下:
这里我遇到了一个问题,不知道是开发环境的问题还是调试器的问题(或者开发板的问题),程序编译后使用download下载后程序没有跑起来,在线调试也要run三次才能跑起来,这款的问题其实是由于程序中用到了printf,keil调试需要勾选:
记得重新编译一下,才能连接到我们自定义的重定义中,之后就能正常了。