厦门营销网站建设公司,网站开发类优惠及服务承诺,长沙建站模板大全,wordpress建立论坛目录 小问题 #xff1a;单片机上电后第一个执行的程序是#xff1f;
【1】GPIO
1.定义
2.应用 I - Input 输入采集 O - Output 输出控制
3.GPIO结构框图
4.功能描述 输入功能
5.相关寄存器
【2】输出控制实验 实验#xff1a;点亮一盏LED灯
1.实验…目录 小问题 单片机上电后第一个执行的程序是
【1】GPIO
1.定义
2.应用 I - Input 输入采集 O - Output 输出控制
3.GPIO结构框图
4.功能描述 输入功能
5.相关寄存器
【2】输出控制实验 实验点亮一盏LED灯
1.实验步骤
2.编程实现
3.编译下载
4.复位上电
练习实现LED灯闪烁
练习实现流水灯效果 寄存器版
练习实现流水灯效果 HAL库版
【3】输入采集实验
实验按键点灯实验
1.查看开发板
2.查看原理图
3.配置STM32CubeMX
4.代码编写
【4】HAL库函数分析 STM32Project注意的地方 小问题 单片机上电后第一个执行的程序是 问 单片机上电后第一个执行的程序是 1、初始化堆栈指针SP_initial_sp 2、初始化PC 指针Reset_Handler 3、初始化中断向量表 4、配置系统时钟SystemInit 5、调用C 库函数_main 初始化用户堆栈从而最终调用main 函数去到C 的世界 【1】GPIO 1.定义 在嵌入式系统中经常需要控制许多结构简单的外部设备或者电路这些设备有的需要通过CPU控制有的需要CPU读取其输入信号因此在嵌入式微处理器上提供了一种“通用可编程I/O端口”也就是GPIOGeneral-purpose input/output 。通用输入输出接口 2.应用 育松电子某宝电子商品比较好 I - Input 输入采集 DO - 数据量输出口 0 或1 O - Output 输出控制 控制数码管 上图为继电器 继电器原理 3.GPIO结构框图 补充 问VDD、VSS、VCC分别表示什么意思 1、vdd在电子电路中VDD表示器件的意思, 即器件内部的工作电压。 2、vss在电子电路中 VSS表示公共连接的意思通常指电路公共接地端电压。 VCC 接入电路的电压 VDD : 元器件内部的工作电压 VSS : 公共接地端电压 问施密特触发器的作用 由于外部输入的信号可能会出现脉冲等噪声的影响为了让信号更加清晰所以就设置了TTL施密特触发器来进行整形。 4.功能描述 输入功能 浮空输入无输入设备时不建议悬空 通俗讲就是让管脚什么都不接悬空着。 此时VDD和VSS所在路径的两个开关同时断开。因为没有上拉和下拉所以当IO口没有接输入的时候此时的电平状态会是一个不确定的值完全由外部输入决定。 一般实际运用时引脚不建议悬空易受干扰。 优势 这一种输入模式的电平会完全取决于外部电路而与内部电路无关。 缺点 在没有外部电路接入的时候IO脚浮空会使得电平不确定 应用 该模式是STM32复位之后的默认模式一般用作对开关按键的读取或用于标准的通讯协议比如IIC、USART的等。 上拉输入 IO端口 - 上拉电阻 - 施密特触发器 - 输入数据寄存器 - 读 输入的电平不会因上下浮动而导致输入信号不稳定当外部没有信号输入时上拉电阻会将输入信号钳在高电平此时引脚始终读到高电平信号。 下拉输入 IO端口 - 下拉电阻 - 施密特触发器 - 输入数据寄存器 - 读 输入的电平不会因上下浮动而导致输入信号不稳定当外部没有信号输入时下拉电阻会将输入信号钳在低电平此时引脚始终读到低电平信号。 模拟输入 信号进入后不经过上拉电阻或者下拉电阻关闭施密特触发器经由另一线路把电压信号传送到片上外设模块。 所以可以理解为模拟输入的信号是未经处理的信号是原汁原味的信号。 应用当 GPIO 引脚用于 ADC 采集电压的输入通道时则需要选择“模拟输入”功能因为经过施密特触发器后信号只有 0、1 两种状态所以 ADC 外设要采集到原始的模拟信号信号源输入必须在施密特触发器之前。 开漏输出 输出寄存器上的’0’激活 N-MOS而输出寄存器上的’1’将端口置于高阻状态 (P-MOS 从不被激活 )。 无法真正输出高电平即高电平时没有驱动能力需要借助外部上拉电阻完成对外驱动。 可以利用改变上拉电源的电压来适应所需进而提高外部电路的驱动能力。 推挽输出 输出寄存器上的’0’激活 N-MOS而输出寄存器上的’1’将激活 P-MOS具备输出高低电平的能力。 当上面的MOS管导通时GPIO输出高电平1称为“推 当下面MOS管导通时GPIO输出低电平0称为“挽” 5.相关寄存器 4 个 32 位 配 置 寄 存 器 GPIOx_MODER 模式寄存器 GPIOx_OTYPER 输出类型寄存器 GPIOx_OSPEEDR 输出速度寄存器 GPIOx_PUPDR 上拉下拉寄存器 2 个 32 位数据寄存器 GPIOx_IDR 输入数据寄存器 GPIOx_ODR 输出数据寄存器 1 个32 位置位 / 复位寄存器 GPIOx_BSRR 1 个 32 位锁定寄存器 GPIOx_LCKR 2 个 32 位替代功能寄存器 GPIOx_AFRH GPIOx_AFRL 【2】输出控制实验 实验点亮一盏LED灯 1.实验步骤 1.查看开发板找到LED灯 2.查看原理图 分析得到结论只需要讲PB1引脚配置成输出功能且输出低电平信号即可点亮蓝灯。 2.编程实现 1寄存器配置 2代码编写 RCC-IOPENR | 11; //使能GPIOB组时钟 GPIOB-MODER ~(0X3 2); //配置输出模式 GPIOB-MODER | 12; GPIOB-OTYPER ~(11); //推挽输出模式 GPIOB-ODR ~(11); //输出低电平 3.编译下载 4.复位上电 练习实现LED灯闪烁 先实现初始化函数、开关控制函数、延时函数 声明函数 再while(1)死循环中调用开关函数并通过延时保持一段时间即可看到闪烁效果。 练习实现流水灯效果 寄存器版 实现初始化函数将PB0/PB1/PB2分别初始化为推挽输出模式。 置X位 置0 ~1X 置1| 1X) 实现三盏LED灯的亮灭函数 实现延时函数 main函数调用 实现效果 练习实现流水灯效果 HAL库版 打开STM32CubeMX新建工程配置引脚功能 引脚功能详细配置 生成代码 代码编写 【3】输入采集实验 实验按键点灯实验 1.查看开发板 找到五向按键 丝印 - S1 2.查看原理图 四路或门电路 //只要有一个方向键被按下D3KEY则输出高电平信号。 //只要有方向键被按下PA8引脚则会输入一个高电平信号。 3.配置STM32CubeMX 4.代码编写 【4】HAL库函数分析 HAL库是ST公司为STM32的MCU最新推出的抽象层嵌入式软件 void HAL_GPIO_WritePin (GPIO_TypeDef * GPIOx, uint16_t GPIO_Pin, GPIO_PinState PinState) 功能设置或清除指定的端口位 让指定引脚输出高低电平 参数GPIO_TypeDef * GPIOx 端口号uint16_t GPIO_Pin 引脚号GPIO_PinState PinState 电平状态GPIO_PIN_RESET 0 低电平GPIO_PIN_SET 1 高电平返回值无 void HAL_Delay(uint32_t Delay)功能实现毫秒级延时参数延时时间ms返回值无 GPIO_PinState HAL_GPIO_ReadPin (GPIO_TypeDef * GPIOx, uint16_t GPIO_Pin) 功能读取指定引脚的电平状态参数 GPIO_TypeDef * GPIOx 端口号uint16_t GPIO_Pin 引脚号返回值GPIO_PinState 电平状态GPIO_PIN_RESET 0 GPIO_PIN_SET 1 void HAL_GPIO_TogglePin (GPIO_TypeDef * GPIOx, uint16_t GPIO_Pin) 功能翻转指定引脚的电平状态参数 GPIO_TypeDef * GPIOx 端口号uint16_t GPIO_Pin 引脚号返回值无