-
APM32F030K6 的RTC是否拥有16bit重装载唤醒计数器
之前调试停止模式RTC唤醒时,并未触发RTC WUT** 的中断唤醒。所以想确认一下APM32F030K6是否有隐藏的RTC外设福利。 [font=Arial][size=10.56pt] [/size][/font]
1252浏览量 2回复量 关注量 -
[APM32F030R8][求助]关于USART使能后直接进入空闲中断
板子用的是APM32F030R8 MINI Board给USART配置空闲中断,USART使能后就会进入一次空闲中断。 代码如下: int main(void) { GPIO_Config_T gpioConfig; USART_Config_T usartConfigStruct; RCM_EnableAHBPeriphClock(MINI_COM1_RX_GPIO_CLK); RCM_EnableAPB2PeriphClock(MINI_COM1_CLK); // GPIO_ConfigPinAF(MINI_COM1_TX_GPIO_PORT, MINI_COM1_TX_SOURCE, MINI_COM1_TX_AF); GPIO_ConfigPinAF(MINI_COM1_RX_GPIO_PORT, MINI_COM1_RX_SOURCE, MINI_COM1_RX_AF); gpioConfig.mode = GPIO_MODE_AF; // gpioConfig.pin = MINI_COM1_TX_PIN; gpioConfig.speed = GPIO_SPEED_50MHz; gpioConfig.outtype = GPIO_OUT_TYPE_PP; gpioConfig.pupd = GPIO_PUPD_PU; // GPIO_Config(MINI_COM1_TX_GPIO_PORT, &gpioConfig); gpioConfig.pin = MINI_COM1_RX_PIN; GPIO_Config(MINI_COM1_RX_GPIO_PORT, &gpioConfig); usartConfigStruct.baudRate = 110; usartConfigStruct.mode = USART_MODE_RX; usartConfigStruct.hardwareFlowCtrl = USART_FLOW_CTRL_NONE; usartConfigStruct.parity = USART_PARITY_NONE; usartConfigStruct.stopBits = USART_STOP_BIT_1; usartConfigStruct.wordLength = USART_WORD_LEN_8B; USART_Config(MINI_COM1, &usartConfigStruct); NVIC_EnableIRQRequest(MINI_COM1_IRQn, 2); USART_Enable(MINI_COM1); // Delay(0xfff); Delay(0xfffffff); USART_EnableInterrupt(MINI_COM1, USART_INT_IDLEIE); while (1) { } } CSDN上找到一篇是说USART使能发送功能会发送一个空闲帧,解决方法是使能串口,延迟一会再使能空闲中断。但那篇文章中用的是STM32,而且是自收发。我用APM32禁用USART发送功能再使能后还是会进入空闲中断。原因应该不是CSDN那篇文章里的,但用延迟确实能解决,就是延迟的时间要设置的很大。 CSDN文章链接: https://blog.csdn.net/weixin_38106263/article/details/129234153?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522171705336916800186593920%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=171705336916800186593920&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~sobaiduend~default-1-129234153-null-null.142^v100^pc_search_result_base3&utm_term=%E7%A9%BA%E9%97%B2%E4%B8%AD%E6%96%AD%E5%A4%9A%E8%BF%9B%E5%85%A5%E4%B8%80%E6%AC%A1&spm=1018.2226.3001.4187 还有一个问题是不同程序,延迟时间要设的得不一样;同一个程序,波特率设置得不一样,延迟时间也要不一样。 写的串口+DMA缓存收发程序里的代码: void USART_Init(USART_ConfigType *usartType,USART_Config_T* usartConfig) { usartType->gpioInit(&(usartType->gpioType)); // 启用USART时钟 usartType->rcmEnableAPB(usartType->usartClock); // 配置USART USART_Config(usartType->usart, usartConfig); // 启用USART中断 NVIC_EnableIRQRequest(usartType->irqChannel, usartType->irqPriority); USART_EnableInterrupt(usartType->usart,USART_INT_ERRIE); USART_Enable(usartType->usart); // 延迟和清除状态标志 Delay(0xfffff); USART_ClearStatusFlag(usartType->usart, USART_INT_IDLEIE); USART_EnableInterrupt(usartType->usart, USART_INT_IDLEIE); if (usartType->enableDMA){ DMA_Init(usartType); USART_EnableDMA(usartType->usart, USART_DMA_REQUEST_RX); USART_EnableDMA(usartType->usart, USART_DMA_REQUEST_TX); } } 同样是115200的波特率,这里delay(0xfff)就行了,而同样程序,波特率改为1200后,这里的延时又要改为delay(0xfffff) 我想知道串口使能后进入空闲中断的原因,还有有没有除了延时外其他的方法解决这个问题。
2793浏览量 12回复量 关注量