[stm32] 2-2 LED编程
文章目录前言2-2 LED编程模板工程的结构GPIO的标准库编程接口GPIO的初始化CRvoid GPIO_Init(GPIO_TypeDef\* GPIOx, GPIO_InitTypeDef\* GPIO_InitStruct);GPIO读输入IDRuint8_t GPIO_ReadInputDataBit(GPIO_TypeDef\* GPIOx, uint16_t GPIO_Pin);uint16_t GPIO_ReadInputData(GPIO_TypeDef\* GPIOx);GPIO读输出ODRuint8_t GPIO_ReadOutputDataBit(GPIO_TypeDef\* GPIOx, uint16_t GPIO_Pin);uint16_t GPIO_ReadOutputData(GPIO_TypeDef\* GPIOx);GPIO写输出ODRvoid GPIO_SetBits(GPIO_TypeDef\* GPIOx, uint16_t GPIO_Pin);void GPIO_ResetBits(GPIO_TypeDef\* GPIOx, uint16_t GPIO_Pin);void GPIO_WriteBit(GPIO_TypeDef\* GPIOx, uint16_t GPIO_Pin, BitAction BitVal);void GPIO_Write(GPIO_TypeDef\* GPIOx, uint16_t PortVal);io翻转的2种办法方案一方案二随堂测试问题1LED的接线方式有哪两种请绘制电路图问题2使用GPIO前为什么要使能时钟如何使能时钟问题3使用哪个接口初始化IO引脚问题4使用哪些接口写ODR?问题5读ODR得到的值代表什么问题6使用哪些接口读IOR的值前言本笔记内容为本人依据B站UP主“铁头山羊”视频内容本人为其粉丝归纳整理总结而来如有侵权联系立即删除同时有想详细了解的也可进行观看bilibili铁头山羊 。硬件STM32F103C8T6软件Keil2-2 LED编程模板工程的结构GPIO的标准库编程接口GPIO的初始化CRvoid GPIO_Init(GPIO_TypeDef* GPIOx, GPIO_InitTypeDef* GPIO_InitStruct);GPIO读输入IDRuint8_t GPIO_ReadInputDataBit(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);// 简介读取IDR的一个比特位uint16_t GPIO_ReadInputData(GPIO_TypeDef* GPIOx);// 简介读取IDR整个寄存器GPIO读输出ODRuint8_t GPIO_ReadOutputDataBit(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);// 简介读取ODR的一个比特位uint16_t GPIO_ReadOutputData(GPIO_TypeDef* GPIOx);// 简介读取ODR的整个寄存器GPIO写输出ODRvoid GPIO_SetBits(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);// 将ODR的某个比特位设置为1void GPIO_ResetBits(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);// 将ODR的某个比特位设置为0void GPIO_WriteBit(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin, BitAction BitVal);// 将ODR的某个比特位写为0或者1void GPIO_Write(GPIO_TypeDef* GPIOx, uint16_t PortVal);// 写ODR寄存器io翻转的2种办法方案一方案二随堂测试问题1LED的接线方式有哪两种请绘制电路图推挽开漏问题2使用GPIO前为什么要使能时钟如何使能时钟答 1. 因为STM32的片上外设属于时序电路需要时钟驱动 2. 默认情况下为了省电时钟是关闭的 3. void RCC_APB2PeriphClockCmd(uint32_t RCC_APB2Periph, FunctionalState NewState);问题3使用哪个接口初始化IO引脚void GPIO_Init(GPIO_TypeDef* GPIOx, GPIO_InitTypeDef* GPIO_InitStruct);问题4使用哪些接口写ODR?// 1. 设置所选数据端口位 void GPIO_SetBits(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin); // 2. 清除所选数据端口位 void GPIO_ResetBits(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin); // 3. 设置或清除所选数据端口位 void GPIO_WriteBit(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin, BitAction BitVal); // 4. 数据写入指定的通用输入输出GPIO数据端口 void GPIO_Write(GPIO_TypeDef* GPIOx, uint16_t PortVal);问题5读ODR得到的值代表什么答 读向ODR上次写入的的值问题6使用哪些接口读IOR的值// 1. 读取单个寄存器的值 uint8_t GPIO_ReadOutputDataBit(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin); // 2. 读取整个寄存器的值 uint16_t GPIO_ReadOutputData(GPIO_TypeDef* GPIOx);