当前位置: 首页 > news >正文

做网站公司好开吗/广告最多的网站

做网站公司好开吗,广告最多的网站,深圳罗湖网站制作,购物网站的建设的好处【前言】 之前学过C、Matlab以及Python,包括现在的STM32库函数,对于函数的学习,我基本是学习函数的定义、输入是啥、输出是啥、注意事项这些。如果比较重要的函数或者是封装好的函数,还会学习里面的算法。 最近在学习STM32&…

【前言】

之前学过C、Matlab以及Python,包括现在的STM32库函数,对于函数的学习,我基本是学习函数的定义、输入是啥、输出是啥、注意事项这些。如果比较重要的函数或者是封装好的函数,还会学习里面的算法。

最近在学习STM32,里面涉及到了很多库函数,所以想借知乎平台写文章记录下来嘿嘿。


【正文】

  1. void GPIO_Init(GPIO_TypeDef* GPIOx, GPIO_InitTypeDef* GPIO_InitStruct)
  • 定义:Init是Initiate的简写,而Initiate有“开始”的意思,所以这个函数就是GPIO的初始化函数。且主要初始化哪一个引脚的工作模式和速度。(根据函数名简写的词得到全写的单词,再根据全写的单词去揣测这个函数的功能,有助于记忆这个函数哦)
  • 输入:这个函数的输入包含了两个。①、GPIO_TypeDef* GPIOx:这个输入变量主要是指GPIOA、GPIOB、GPIOC...等这些,可以从A到G。这就好比C51单片机的PA口、PB口和PC口,但是STM32的“口”比C51多一些。②、 GPIO_InitTypeDef* GPIO_InitStruct:这个输入变量是个结构体,也就是说,你得先构造一个结构体然后才能往这个函数里面输入。这个结构体包含了三个内容:指定GPIO口的哪一引脚(GPIO_Pin)、这一引脚要以什么工作方式工作(GPIO_Mode)、工作速度是多少(GPIO_Speed)。这个也好理解,这个初始化函数可以对每个口的每个引脚设定自己的工作特点。③、GPIO_Pin:用来指定引脚,注意书写格式GPIO_Pin_数字。比如:GPIO_Pin_0;GPIO_Pin_1。
#define IS_GET_GPIO_PIN(PIN) (((PIN) == GPIO_Pin_0) || \((PIN) == GPIO_Pin_1) || \((PIN) == GPIO_Pin_2) || \((PIN) == GPIO_Pin_3) || \((PIN) == GPIO_Pin_4) || \((PIN) == GPIO_Pin_5) || \((PIN) == GPIO_Pin_6) || \((PIN) == GPIO_Pin_7) || \((PIN) == GPIO_Pin_8) || \((PIN) == GPIO_Pin_9) || \((PIN) == GPIO_Pin_10) || \((PIN) == GPIO_Pin_11) || \((PIN) == GPIO_Pin_12) || \((PIN) == GPIO_Pin_13) || \((PIN) == GPIO_Pin_14) || \((PIN) == GPIO_Pin_15))

GPIO_Mode:用来指定每个引脚的工作模式,输入输出共有八种工作模式。我们引用内部的代码看看八种模式是怎么书写的。

#define IS_GPIO_MODE(MODE) (((MODE) == GPIO_Mode_AIN) || ((MODE) == GPIO_Mode_IN_FLOATING) || \((MODE) == GPIO_Mode_IPD) || ((MODE) == GPIO_Mode_IPU) || \((MODE) == GPIO_Mode_Out_OD) || ((MODE) == GPIO_Mode_Out_PP) || \((MODE) == GPIO_Mode_AF_OD) || ((MODE) == GPIO_Mode_AF_PP))

也就是说,我们输入模式的时候,要按照它所要求的格式进行书写!GPIO_Speed:STM32的引脚主要有如下的三种初始化速度。它用枚举法,把具有的三个速度放置在了一个结构体中。我们输入,在当前萌新时期下,输入这三个速度最好,等到大佬时候再其他速度。最后还是要注意书写格式!!!

typedef enum
{ GPIO_Speed_10MHz = 1,GPIO_Speed_2MHz, GPIO_Speed_50MHz
}GPIOSpeed_TypeDef;
  • 输出:对函数无输出,但是实际上对芯片的若干引脚进行的初始化,只是这样的结果我们不必在C语言平台里面看到,故对C函数而言是无输出。
  • 例子:
GPIO_InitTypeDef GPIO_InitStructure;GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;GPIO_InitStructure.GPIO_Pin=GPIO_Pin_2;GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
GPIO_Init(GPIOD,&GPIO_InitStructure);

可见,这个程序段是对GPIOD口的2引脚进行工作模式(PP)和工作速度(50MHz)的初始化。

  • 注意:先设置一个结构体,然后再对结构体里面的内容进行填充,最后把这个结构体输入到初始化函数中。最后但也很重要的是,我们输入到函数里面,对结构体,我们用指针引入进去就好了!!!&+结构体名。

2. uint8_t GPIO_ReadInputDataBit(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);

  • 定义:"ReadInputDataBit"中文直译就是“读”“输入”“数据”“位”,所以这个函数是用来读取某一个口的某一引脚的电平(0或1)。
  • 输入:①、GPIO_TypeDef* GPIOx:指的是哪一个“口”,具体啥内容和啥书写格式与前面一样。②、uint16_t GPIO_Pin:指的是哪一个引脚,具体啥内容和啥书写格式与前面一样。
  • 输出:高低电平。
  • 例子:
GPIO_ReadInputDataBit(GPIOD, GPIO_Pin_8);//读取GPIOD.8的输入电平

3. uint16_t GPIO_ReadInputData(GPIO_TypeDef* GPIOx);

  • 定义:"ReadInputData"中文直译就是“读”“输入”“数据”,与前面的对比就是他这个函数少了“位”这个符号。所以这个函数是用来读取某一个口所有引脚的电平。
  • 输入:GPIO_TypeDef* GPIOx:哪一个口。
  • 输出:一组的高低电平。
  • 例子:
GPIO_ReadInputData(GPIOA);//读取GPIOA组中所有io口输入电平

4. uint8_t GPIO_ReadOutputDataBit(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);

  • 定义:"ReadOutputDataBit"中文直译就是“读”“输出”“数据”“位”,所以这个函数是用来读取某一个口的某一引脚的输出电平(0或1)。
  • 输入:①、GPIO_TypeDef* GPIOx:指的是哪一个“口”,具体啥内容和啥书写格式与前面一样。②、uint16_t GPIO_Pin:指的是哪一个引脚,具体啥内容和啥书写格式与前面一样。
  • 输出:高低电平。(指这个函数的输出)
  • 例子:
GPIO_ReadInputDataBit(GPIOD, GPIO_Pin_8);//读取GPIOD.8的输出电平

5. uint16_t GPIO_ReadOutputData(GPIO_TypeDef* GPIOx);

  • 定义:"ReadOutputData"中文直译就是“读”“输出”“数据”,与前面的对比就是他这个函数少了“位”这个符号。所以这个函数是用来读取某一个口所有引脚的输出电平。
  • 输入:GPIO_TypeDef* GPIOx:哪一个口。
  • 输出:一组的高低电平。(指函数的输出)
  • 例子:
GPIO_ReadInputData(GPIOA);//读取GPIOA组中所有io口输入电平

6. void GPIO_SetBits(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);

  • 定义:"SetBits"中文直译就是“设置”“位”,所以这个函数是用来给某一个口的某个引脚进行高低电平设置的。
  • 输入:①、GPIO_TypeDef* GPIOx:指的是哪一个“口”,具体啥内容和啥书写格式与前面一样。②、uint16_t GPIO_Pin:指的是哪一个引脚,具体啥内容和啥书写格式与前面一样。
  • 输出:对函数无输出,但是实际上对芯片的若干引脚进行的高低电平设置,只是这样的结果我们不必在C语言平台里面看到,故对C函数而言是无输出。
  • 例子:
GPIO_SetBits(GPIOD,GPIO_Pin_2);//给GPIOD口的2引脚设置了高电平。

7. void GPIO_ResetBits(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);

  • 定义:"ResetBits"中文直译就是“重设置”“位”,所以这个函数是用来给某一个口的某个引脚进行高低电平设置的。主要是低电平(复位)。
  • 输入:①、GPIO_TypeDef* GPIOx:指的是哪一个“口”,具体啥内容和啥书写格式与前面一样。②、uint16_t GPIO_Pin:指的是哪一个引脚,具体啥内容和啥书写格式与前面一样。
  • 输出:对函数无输出,但是实际上对芯片的若干引脚进行的高低电平设置,只是这样的结果我们不必在C语言平台里面看到,故对C函数而言是无输出。
  • 例子:
GPIO_ResetBits(GPIOD,GPIO_Pin_2);//给GPIOD口的2引脚设置了低电平。

8. void RCC_APB2PeriphClockCmd(uint32_t RCC_APB2Periph, FunctionalState NewState)

  • 定义:STM32认为,每个引脚都要有自己的时钟设置,因此我们在进行位操作或者“口”操作的时候,要先对我们即将操作的“口”进行时钟设定。
  • 输入:①、uint32_t RCC_APB2Periph:这个是用来选中你要进行时钟设定的“口”。例如:RCC_APB2Periph_GPIOD;RCC_APB2Periph_GPIOA。然后注意怎么书写这个变量。②、FunctionalState NewState:这个是一个标记,里面用枚举法告诉了我们只能有两个形式。具体代码入下:
#define IS_FUNCTIONAL_STATE(STATE) (((STATE) == DISABLE) || ((STATE) == ENABLE))

可见,我们对于这个变量只能输入ENABLE和DISABLE这两个了。

  • 输出:对函数无输出,但是实际上对芯片的某个口进行了时钟设置,只是这样的结果我们不必在C语言平台里面看到,故对C函数而言是无输出。
  • 例子:
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOD,ENABLE);//对D口以这种时钟设置,使能。
http://www.lbrq.cn/news/1030573.html

相关文章:

  • 做外贸怎样浏览国外网站/接app推广
  • 深圳网站建设交易/seo实战技术培训
  • 与网站开发相关的书籍/学电脑培训班
  • 河南国安建设集团有限公司网站/湖南网站建设推荐
  • easyui 网站开发实现/厦门百度广告
  • 旅游主题网站怎么做/磁力蜘蛛搜索引擎
  • 申请个人网站怎么申请/百度推广电话销售好做吗
  • 网站建设项目策划/网址域名大全
  • 免费手机网页网站/友情链接管理系统
  • 深圳企业网站建设公司哪家好/百度图片识别在线识图
  • 软件开发流程详解/西安seo专员
  • wordpress 图片自动加/win10必做的优化
  • 做网站推广/seo搜索引擎优化论文
  • 网站收录少的原因/旅游企业seo官网分析报告
  • 网站开发盈利模式/seo工作内容有哪些
  • 网站域名什么意思/沈阳网站制作推广
  • 上海市建设合同信息表网站/免费发帖的平台有哪些
  • 个人域名怎么做社交网站/蒙牛牛奶推广软文
  • 建设网站的工作步骤是/建站工具有哪些
  • 做网站的规范尺寸/合肥网站
  • 无版权图片做网站/百度seo优化培训
  • 郑州睿网站建设/搜索引擎优化seo专员招聘
  • 泰拳图片做网站用/电脑培训课程
  • 投资网站建设/成都seo专家
  • 有什么做美食的网站/石家庄房价
  • 基金网站开发/推广合作
  • 做网站需要icp/如何创建个人网站免费
  • 多终端响应式网站/宁波seo高级方法
  • 网页设计推荐网站/aso关键词优化工具
  • 重庆石桥铺网站建设/网络推广渠道分类
  • XCTF-warmup详细题解(含思考过程)
  • 解决EKS中KEDA访问AWS SQS权限问题:完整的IRSA配置指南
  • electron进程间通信- 从渲染进程到主进程
  • Java 基础概念笔记
  • 如何在 Ubuntu 24.04 LTS Linux 中安装 JSON Server
  • Nginx 启用 HTTPS:阿里云免费 SSL 证书详细图文教程(新手0.5小时可完成)