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

模板的网站都有哪些快速搭建网站框架新手攻略

模板的网站都有哪些,快速搭建网站框架新手攻略,网页游戏人生重开模拟器,做赌场网站代理一、用法 经常会看到类似如下的宏定义语句#xff0c;用于对已经初始化后的 IO 口输出高、低电平。 #define SET_BL_HIGH() GPIOA-BSRRGPIO_Pin_0 #define SET_BL_LOW() GPIOA-BRRGPIO_Pin_0其作用类似于如下两个库函数#xff0c; void GPIO_SetBit…一、用法 经常会看到类似如下的宏定义语句用于对已经初始化后的 IO 口输出高、低电平。 #define SET_BL_HIGH() GPIOA-BSRRGPIO_Pin_0 #define SET_BL_LOW() GPIOA-BRRGPIO_Pin_0其作用类似于如下两个库函数 void GPIO_SetBits(GPIO_Typedef* GPIOx uint16_t GPIO_Pin) void GPIO_ResetBits(GPIO_Typedef* GPIOx, uint16_t GPIO_Pin) 而且实际上这两个库函数就是通过修改BSRRBRR寄存器的值来实现对 IO 口设置的。如下便是输出高电平的函数体 void GPIO_SetBits(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin) {/* Check the parameters */assert_param(IS_GPIO_ALL_PERIPH(GPIOx));assert_param(IS_GPIO_PIN(GPIO_Pin));GPIOx-BSRR GPIO_Pin; }因此使用宏或者库函数本质上都是一样的。区别在于使用宏更快而使用函数更灵活。 二、解释 BSRR 和 BRR 都是 STM32 系列 MCU 中 GPIO 的寄存器。 BSRR 称为端口位设置/清楚寄存器BRR称为端口位清除寄存器。 BSRR 低 16 位用于设置 GPIO 口对应位输出高电平高 16 位用于设置 GPIO 口对应位输出低电平。 BRR 低 16 位用于设置 GPIO 口对应位输出低电平。高 16 位为保留地址读写无效。 所以理论上来讲BRR 寄存器的功能和 BSRR 寄存器高 16 位的功能是一样的。也就是说输出低电平的宏语句可以有如下两种写法。 #define SET_BL_LOW() GPIOA-BRRGPIO_Pin_0 等价于 #define SET_BL_LOW() GPIOA-BSRRGPIO_Pin_0 16 这么来看的话其实 BRR 寄存器是比较多余的。而实际上在最新的 STM32F4 系列 MCU 的 GPIO 寄存器中已经找不到 BRR 寄存器了仅保留了 BSRR 寄存器用于实现端口输出高低电平。因此在 STM32F4 系列 MCU 的 HAL 库函数中对 GPIO 口输出高低电平的函数为如下形式 void HAL_GPIO_WritePin(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin, GPIO_PinState PinState) {/* Check the parameters */assert_param(IS_GPIO_PIN(GPIO_Pin));assert_param(IS_GPIO_PIN_ACTION(PinState));if(PinState ! GPIO_PIN_RESET){GPIOx-BSRR GPIO_Pin;}else{GPIOx-BSRR (uint32_t)GPIO_Pin 16U;} }而早期 ST 的标准库 std 中关于 GPIO 口输出高低电平的函数为如下形式里面通过两个16位的指针分别指向 BSRR 的高16位和低16位。 typedef struct {__IO uint32_t MODER; /*! GPIO port mode register, Address offset: 0x00 */__IO uint32_t OTYPER; /*! GPIO port output type register, Address offset: 0x04 */__IO uint32_t OSPEEDR; /*! GPIO port output speed register, Address offset: 0x08 */__IO uint32_t PUPDR; /*! GPIO port pull-up/pull-down register, Address offset: 0x0C */__IO uint32_t IDR; /*! GPIO port input data register, Address offset: 0x10 */__IO uint32_t ODR; /*! GPIO port output data register, Address offset: 0x14 */__IO uint16_t BSRRL; /*! GPIO port bit set/reset low register, Address offset: 0x18 */__IO uint16_t BSRRH; /*! GPIO port bit set/reset high register, Address offset: 0x1A */__IO uint32_t LCKR; /*! GPIO port configuration lock register, Address offset: 0x1C */__IO uint32_t AFR[2]; /*! GPIO alternate function registers, Address offset: 0x20-0x24 */ } GPIO_TypeDef; void GPIO_SetBits(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin) {/* Check the parameters */assert_param(IS_GPIO_ALL_PERIPH(GPIOx));assert_param(IS_GPIO_PIN(GPIO_Pin));GPIOx-BSRRL GPIO_Pin; } void GPIO_ResetBits(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin) {/* Check the parameters */assert_param(IS_GPIO_ALL_PERIPH(GPIOx));assert_param(IS_GPIO_PIN(GPIO_Pin));GPIOx-BSRRH GPIO_Pin; }可见不管是输出高还是输出低都是对 BSRR 寄存器的操作。 三、BSRR、BRR、 ODR 之间的关系 配置 BSRR , BRR 是为了对端口输出进行配置而 ODR 寄存器也是用于输出数据的寄存器一个 ODR 寄存器控制了一组16位的 GPIO 输出。因此对 ODR 进行修改也可以到达对 IO 口输出进行配置。 但是由于对 ODR 寄存器的读写操作必须以 16 位的形式进行。因此如果使用 ODR 改写数据以控制输出时须采用“读-改-写”的形式进行。 假设需要对 GPIOA_Pin_6 输出高电平。采用改写 ODR 寄存器的方式时使用“读-改-写”操作代码如下 uint32_t temp; temp GPIOA-ODR; temp temp | GPIO_Pin_6; GPIOA-ODR temp;而使用改写 BSRR 寄存器时仅需要使用如下语句 GPIOA-BSRR GPIO_Pin_6;这是因为在修改 ODR 时为了确保对端口 6 的修改不会影响到其他端口的输出需要对端口的原始数据进行保存之后再对端口 6 的值进行修改最后再写入寄存器。而对 BSRR 的操作是写 1 有效写 0 不改变原状态因此可以对端口 6 置 1其他位保持为 0。BSRR 为 1 的位会修改相应的 ODR 位从而控制输出电平。 对 BSRR 的操作可以实现原子操作。因此在设置单个 IO 口输出时使用 BSRR 进行操作会更加方便。 但也有例外的时候在需要对单个IO口进行 Toggle 操作时即对当前输出取反输出当前输出为高则输出低当前输出低则输出高官方的库函数就是直接对 ODR 寄存器进行操作的。代码如下 void HAL_GPIO_TogglePin(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin) {/* Check the parameters */assert_param(IS_GPIO_PIN(GPIO_Pin));GPIOx-ODR ^ GPIO_Pin; }这是因为0 和 1 与 1 进行异或操作被取反0 和 1 与 0 进行异或操作保持原值。如下 0 ^ 1 1 1 ^ 1 00 ^ 0 0 1 ^ 0 1
http://www.hkea.cn/news/14359139/

相关文章:

  • 莆田市秀屿区建设局网站芜湖做网站优化
  • 做课件ppt网站wordpress 主题 h5
  • 无障碍 网站 怎么做免费的国外云服务器
  • 建设网站的公司兴田德润可以吗网店装修教程免费
  • aspx网站做app建设厅官方网站北京
  • 怎么查看网站开发语言的类型沈阳做网站推广的公司
  • 做网站为什么一定要去国外中卫展览展厅设计公司
  • 搜索引擎是什么贵阳seo排名
  • 网站设计宣传广告方案网站根目录在哪里
  • 土特产直营网站建设代码学做缝纫的网站
  • 中国建设银行建银购网站做网站的都是什么专业毕业的
  • 商标 做网站 是几类关键词简谱
  • 373网站怎么做这样的网站做汽车团购的网站
  • 佛山市 骏域网站建设怎么确认网站是什么语言做的
  • 电玩网站开发怎么做网站优化 site
  • 成都网站建设公昆明公司做网站的价格
  • jsp小型网站开发代码flash网址
  • 常州网站制作市场邯郸信息港二手物品出售
  • 衡阳网站排名优化费用深圳市有哪些公司
  • 福州男同性做基网站wordpress 海量数据
  • 做网站赚谁的钱开发区教育网
  • 东莞东坑网站设计官网优化哪家专业
  • 微信朋友圈推广怎么做网站建设厅网站实名制系统如何解聘
  • php网站 怎么取得后台管理权限企业网站宣传册应该哪个部门做
  • 求个网站你懂我意思是东莞58同城网
  • 长春做网站哪家好网页设计难学吗有技术含量吗
  • 建筑培训课程有哪些天津百度首页优化排名
  • 济宁网站建设wordpress 总访问统计
  • 建设网站用什么空间服务器长沙网站建设营销
  • 网站策划书一般包括以下内容亚马逊热带雨林