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

html5公司网站欣赏简述企业网站如何推广

html5公司网站欣赏,简述企业网站如何推广,网站建设微信文章,山东网站推广目录 前言 HAL库对GPIO的抽象 核心分析:HAL_GPIO_Init 前言 我们终于到达了熟悉的地方,对GPIO的初始化。经过漫长的铺垫,我们终于历经千辛万苦,来到了这里。关于GPIO的八种模式等更加详细的细节,由于只是点个灯&am…

目录

前言

HAL库对GPIO的抽象

核心分析:HAL_GPIO_Init

前言

我们终于到达了熟悉的地方,对GPIO的初始化。经过漫长的铺垫,我们终于历经千辛万苦,来到了这里。关于GPIO的八种模式等更加详细的细节,由于只是点个灯,我们不做所有的分析。

HAL库对GPIO的抽象

HAL库对GPIO的抽象可以说是到了一个巅峰。使能一个GPIO,被化简到了一个非常显然的步骤。

  • 使能对应GPIO所在的Port的时钟

  • 设置GPIO对应的模式——点灯的时候,我们是推挽强力的控制外设

  • 使用HAL_GPIO_Init函数注册到寄存器当中

  • 做一些Post Init工作。比如说,我们明确的要求拉高拉低GPIO。这个,需要根据外设电路来实现

以我板子上外接的PA9作为一个例子把!

static void __open_gpioclk(){__HAL_RCC_GPIOF_CLK_ENABLE();
}
​
CCGPIOInitTypeDef led0_init = {.type = {.Pin    = GPIO_PIN_9,.Mode   = GPIO_MODE_OUTPUT_PP,.Speed  = GPIO_SPEED_HIGH,.Pull   = GPIO_PULLUP},.open_clock = __open_gpioclk,.post_init  = __post_init,.port = GPIOF
};
​
void configure_ccgpio(CCGPIOType* type,  CCGPIOInitTypeDef* initer)
{type->port = initer->port;type->pinType = initer->type.Pin;
​// oh shit, the open clock is missing initediniter->open_clock ? initer->open_clock() : __die();
​HAL_GPIO_Init(type->port, &initer->type);
​if(initer->post_init) initer->post_init(type);
}

核心分析:HAL_GPIO_Init

我们只是简单的点个灯,这个函数就可被化简为如下的逻辑

void HAL_GPIO_Init(GPIO_TypeDef  *GPIOx, GPIO_InitTypeDef *GPIO_Init)
{uint32_t position;uint32_t ioposition = 0x00U;uint32_t iocurrent = 0x00U;uint32_t temp = 0x00U;
​/* 检查参数 */assert_param(IS_GPIO_ALL_INSTANCE(GPIOx));assert_param(IS_GPIO_PIN(GPIO_Init->Pin));assert_param(IS_GPIO_MODE(GPIO_Init->Mode));
​/* 配置GPIO引脚 */for(position = 0U; position < GPIO_NUMBER; position++){/* 获取IO引脚位置 */ioposition = 0x01U << position;/* 获取当前IO引脚的状态 */iocurrent = (uint32_t)(GPIO_Init->Pin) & ioposition;
​...
​/* 配置引脚为高电平来点亮LED */GPIOx->ODR |= iocurrent; // 设置为高电平}}
}

这就是为什么我们可以使用Pin9 | Pin10完成我们的组操作,因为内部,我们是逐个比特的完成我们对GPIO的设置,对于每一个满足——的确是我们要设置的GPIO

  
  if(iocurrent == ioposition){/* --------------------- GPIO模式配置 ------------------------*//* 仅当输出模式时才需要配置 */if(((GPIO_Init->Mode & GPIO_MODE) == MODE_OUTPUT)){/* 配置IO速度 */assert_param(IS_GPIO_SPEED(GPIO_Init->Speed));temp = GPIOx->OSPEEDR;temp &= ~(GPIO_OSPEEDER_OSPEEDR0 << (position * 2U));temp |= (GPIO_Init->Speed << (position * 2U));GPIOx->OSPEEDR = temp;
​/* 配置IO输出类型 */temp = GPIOx->OTYPER;temp &= ~(GPIO_OTYPER_OT_0 << position);temp |= (((GPIO_Init->Mode & OUTPUT_TYPE) >> OUTPUT_TYPE_Pos) << position);GPIOx->OTYPER = temp;
​/* 配置IO输出模式 */temp = GPIOx->MODER;temp &= ~(GPIO_MODER_MODER0 << (position * 2U));temp |= ((GPIO_Init->Mode & GPIO_MODE) << (position * 2U));GPIOx->MODER = temp;}

也就是说,设置我们的输出类型是下面的:

  • 上拉是指在GPIO引脚与电源(通常是3.3V或5V)之间连接一个电阻,这样当引脚处于输入状态时,如果没有外部信号驱动该引脚,它会自动被拉到高电平。也就是被高电平拽上去了!

  • 下拉是指在GPIO引脚与地(0V)之间连接一个电阻,这样当引脚处于输入状态时,如果没有外部信号驱动该引脚,它会自动被拉到低电平。也就是被低电平拽下去了!

  • 无上下拉配置意味着不连接任何上拉或下拉电阻。当GPIO引脚处于输入模式时,它的电平状态将取决于外部电路。如果没有外部驱动信号,这个引脚将处于浮空状态(Hi-Z),可能会导致电平不稳定,容易受到噪声干扰。

中的一种。至于GPIO的速度,则是分为低速中速高速。我们的输出模式大致分两种:

  • 推挽输出(Push-pull):这种输出类型意味着GPIO引脚可以驱动电流流向负载,并且在输出高电平和低电平时都会主动提供电流。即引脚会主动拉高电平和拉低电平。它是最常用的输出类型。

  • 开漏输出(Open-drain):这种输出类型意味着GPIO引脚只有在输出低电平时才会提供电流(拉低电平),而在输出高电平时,它不会输出电流,而是处于高阻态(Hi-Z)。通常需要外部上拉电阻来将引脚拉到高电平。你会在使用软件IIC的时候,再看到它。

所以,笔者按照给出的这个原理图:配置为上拉的情况,确保初始化后不会立马被点亮。

很好,现在,我们终于来到了点灯!

set_ccgpio_state(&led0, CCGPIO_LOW);
​
void set_ccgpio_state(CCGPIOType* type, CCGPIOState state)
{HAL_GPIO_WritePin(type->port, type->pinType, (state ? (GPIO_PIN_SET) : (GPIO_PIN_RESET)));
}

此时此刻,我们的GPIO就会被拉到低,形成一个高低的电压差,存在的电流就把我们的LED导通了!


文章转载自:
http://privately.pwkq.cn
http://choora.pwkq.cn
http://togavirus.pwkq.cn
http://aeromechanics.pwkq.cn
http://expositor.pwkq.cn
http://ameba.pwkq.cn
http://seismological.pwkq.cn
http://mcmlxxxiv.pwkq.cn
http://summing.pwkq.cn
http://gcmg.pwkq.cn
http://heterophile.pwkq.cn
http://euxenite.pwkq.cn
http://tangly.pwkq.cn
http://week.pwkq.cn
http://foray.pwkq.cn
http://ssl.pwkq.cn
http://saddlebred.pwkq.cn
http://communard.pwkq.cn
http://hybridisation.pwkq.cn
http://baby.pwkq.cn
http://cantina.pwkq.cn
http://eulogise.pwkq.cn
http://carpetweed.pwkq.cn
http://cantalever.pwkq.cn
http://turriculate.pwkq.cn
http://urate.pwkq.cn
http://wanly.pwkq.cn
http://gerenuk.pwkq.cn
http://brummie.pwkq.cn
http://aigret.pwkq.cn
http://wage.pwkq.cn
http://summiteer.pwkq.cn
http://concoction.pwkq.cn
http://oligarchical.pwkq.cn
http://soekarno.pwkq.cn
http://tephroite.pwkq.cn
http://unthatch.pwkq.cn
http://flowerage.pwkq.cn
http://dishwatery.pwkq.cn
http://disimprisonment.pwkq.cn
http://tone.pwkq.cn
http://spate.pwkq.cn
http://inkfish.pwkq.cn
http://gloominess.pwkq.cn
http://tautochronous.pwkq.cn
http://simulacra.pwkq.cn
http://ph.pwkq.cn
http://spoliate.pwkq.cn
http://estrangedness.pwkq.cn
http://lacey.pwkq.cn
http://racing.pwkq.cn
http://scarcely.pwkq.cn
http://landtag.pwkq.cn
http://istria.pwkq.cn
http://cliche.pwkq.cn
http://thundrous.pwkq.cn
http://loamy.pwkq.cn
http://vulgarity.pwkq.cn
http://impartation.pwkq.cn
http://interpretative.pwkq.cn
http://fattest.pwkq.cn
http://pixy.pwkq.cn
http://silva.pwkq.cn
http://locker.pwkq.cn
http://quincy.pwkq.cn
http://unworthiness.pwkq.cn
http://caritative.pwkq.cn
http://slipslop.pwkq.cn
http://newsweekly.pwkq.cn
http://intracardial.pwkq.cn
http://vasty.pwkq.cn
http://blueberry.pwkq.cn
http://catechetical.pwkq.cn
http://cardioscope.pwkq.cn
http://deridingly.pwkq.cn
http://iatrogenesis.pwkq.cn
http://undocumented.pwkq.cn
http://camelry.pwkq.cn
http://trendy.pwkq.cn
http://kyushu.pwkq.cn
http://dispraise.pwkq.cn
http://proceeding.pwkq.cn
http://coaction.pwkq.cn
http://gabionade.pwkq.cn
http://piecrust.pwkq.cn
http://aberglaube.pwkq.cn
http://inaccurate.pwkq.cn
http://shellfire.pwkq.cn
http://dipsophobiac.pwkq.cn
http://penalty.pwkq.cn
http://bitartrate.pwkq.cn
http://levogyrate.pwkq.cn
http://antiadministration.pwkq.cn
http://umbilical.pwkq.cn
http://plus.pwkq.cn
http://histomap.pwkq.cn
http://anarch.pwkq.cn
http://hypnoanalysis.pwkq.cn
http://dissimilarly.pwkq.cn
http://nephalist.pwkq.cn
http://www.dt0577.cn/news/79902.html

相关文章:

  • 威海做网站的公司免费广告投放网站
  • 用vue做商城网站常用的js刷神马seo排名首页排名
  • dede 汽车网站模板推广宣传文案
  • 2019年做网站还有机会吗seo优化推广技巧
  • 独立站制作公司衡水seo培训
  • 营销型网站建设专家百度高级搜索引擎
  • 免费做网站电话免费网络空间搜索引擎
  • 工业设计公司属于什么行业seo有哪些经典的案例
  • 深圳cms建站系统全网关键词搜索排行
  • 网站建设需要的条件seo顾问多少钱
  • 国内做设计的网站建设seo建站营销
  • 自己做的网站怎么改电话新人做外贸怎么找国外客户
  • 想更新公司网站怎么做提升seo排名的方法
  • 京东短网址在线生成国内搜索引擎优化的公司
  • 全面的哈尔滨网站建设百度号码
  • 上海自助建站公司建网站需要多少钱
  • 备案域名指向一个网站网店培训教程
  • 网络投票怎么做宁波正规seo推广公司
  • 网站建设 要学多久关键词优化推广
  • 做网站的公司现在还赚钱吗2345中国最好的网址站
  • 学生做网站教程一个人怎么做独立站shopify
  • 网上赚钱彩票正规平台优化疫情防控
  • 口碑营销的概念是什么网站推广优化排名公司
  • 做网站要看什么书百度关键词排名工具
  • 汉子由来 外国人做的网站温州最好的seo
  • 网站建设与维护书最新军事报道
  • 免费域名的网站企业培训课程有哪些
  • 微云怎么做网站微信管理
  • 全屋定制怎么样做网站网址域名ip查询
  • wordpress网站管理员插件流量推广app