stm32单片机基础(二)

stm32单片机基础(二)

  • 串口通信
    • 设备管理器有com串口,但xcom找不到串口
    • usart_init已经有了NVIC优先级配置,为什么主函数里还有NVIC优先级配置
  • 外部中断
    • 有关时钟复用函数AFIO
      • 常见错误

串口通信

stm32单片机基础(二)_第1张图片
如果不勾选,则要按下复位按钮,才会显示程序运行结果。

设备管理器有com串口,但xcom找不到串口

步骤:关闭驱动强制签名
https://jingyan.baidu.com/article/a501d80c47fc73ec620f5e6d.html

stm32单片机基础(二)_第2张图片
然后关闭xcom
重新打开
stm32单片机基础(二)_第3张图片
就成功啦

usart_init已经有了NVIC优先级配置,为什么主函数里还有NVIC优先级配置

如图stm32单片机基础(二)_第4张图片
stm32单片机基础(二)_第5张图片解释
stm32单片机基础(二)_第6张图片
stm32单片机基础(二)_第7张图片

前提条件1:组别优先顺序(第0组优先级最强,第4组优先级最弱):NVIC_PriorityGroup_0>NVIC_PriorityGroup_1>NVIC_PriorityGroup_2>NVIC_PriorityGroup_3>NVIC_PriorityGroup_4
前提条件2:“组”优先级别>“抢”占优先级别>“副”优先级别
前提条件3:同一组优先级别中,不同的抢占级别之间,其中一抢占级别正在做事,另外抢占级别不能打断他;(即”同一组优先级下的中断源间,没有中断嵌套“)
前提条件4:不同组优先级别间,依据优先级强弱,优先级别高的组的中断源可以打断优先级别低的组的正在做的事情;(即:不同组优先级间,可以中断嵌套)

详情请看:https://blog.csdn.net/yx_l128125/article/details/9703843

外部中断

有关时钟复用函数AFIO

一:什么是时钟使能?

就是打开GPIO的时钟。你要用那个部位功能的时钟,就打开那个部位的时钟。
称之为时钟使能。
默认情况下是关闭了所有的时钟。

二:什么是复用?

GPIO有自己的工作模式,一旦IO口用作其他外设(比如串口,adc等) 称之为复用

三: 如何用一行代码“打开”GPIO复用?

RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_AFIO|RCC_APB2Periph_USART1 ,ENABLE);

要“打开”三个地方的(时钟)开关

三: 为什么串口通信不用使能AFIO,而外部中断要使用AFIO?

串口的是默认复用功能 ,EXTI的功能都需要用到AFIO。
还有重映射到其他非默认管脚,需要使用AFIO

参考文章1:https://blog.csdn.net/u013082827/article/details/77543394

使用情况:

  1. 复用功能重映射
  2. 配置外部中断线映射
  3. 配置事件输出
    举个栗子:

需要用到外设的重映射功能时才需要使能AFIO的时钟

外部中断(EXTI)中与AFIO有关的寄存器是AFIO-EXTICR1、2、3,它们是用来选择EXTIx外部中断的输入脚之用。

举例:重映射USART2
USART2的TX/RX在PA.2/3
PA.2已经被Timer2的channel3使用
需要把USART2的TX/RX重映射到PD.5/6
库函数的调用
(1)使能被重新映射到的I/O端口时钟
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOD, ENABLE);
(2)使能被重新映射的外设时钟
RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART2, ENABLE);
(3)使能AFIO功能的时钟(勿忘!)
RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE);
(4)进行重映射GPIO_PinRemapConfig(GPIO_Remap_USART2, ENABLE);

转载至:https://blog.csdn.net/dyz402026753/article/details/7350417
在这里插入图片描述

常见错误

1.h文件中报错 unterminated conditional directive的原因
stm32单片机基础(二)_第8张图片
末尾没有加#endif

你可能感兴趣的:(stm32,stm32)