营口网站建设公司,上海最好的网站建设公司,wordpress 图集功能,搜索排名广告营销在MCU的停止模式下#xff0c;USART之类的外设时钟是关闭的#xff0c;但是USART章节有描述到在停止模式下可以用USART来对MCU进行唤醒#xff1a;
大家是否会好奇在外设的时钟被关闭的情况下#xff0c;USART怎么能通过接收中断或者唤醒事件对MCU进行唤醒的呢#xff1…在MCU的停止模式下USART之类的外设时钟是关闭的但是USART章节有描述到在停止模式下可以用USART来对MCU进行唤醒
大家是否会好奇在外设的时钟被关闭的情况下USART怎么能通过接收中断或者唤醒事件对MCU进行唤醒的呢 其实除了USART可以做到外I2C同样也可以做到相同的唤醒功能。
为什么这两个外设可以呢 它们有一个相同点就是支持双时钟域简单来说假如外设挂在APB总线上一般它们的时钟就直接来自于总线时钟但是I2C和USART它们的时钟源选择可以来自于HSI这就给它们提供了从停止模式唤醒的一个条件但是即使是HSI作为时钟源在stop mode下HSI也是关闭的状态好像也无法唤醒 当I2C或者USART时钟源选择为HSI的时候且配置了它们在Stop mode下唤醒MCU的功能此时进入stop mode后HSI的时钟关闭当有信号进入外设时HSI会先一步被唤醒供给I2C或USART使得两个外设开始工作当它们接收到对应的信息后确认是否是可以唤醒CPU的事件例如I2C接收到的地址是否匹配若不匹配则不会生成对应的唤醒事件用于唤醒MCU且HSI再次关闭如果信息匹配则会生成唤醒事件用于唤醒CPU。大致的时序图如下
但是也不是所有的时钟源可以选择为HSI的外设都可以在stop mode下对MCU进行唤醒具体的还得需要去啃芯片手册只有设计时做了对应唤醒功能的外设才可以。