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

网站 维护 页面中国站长素材网

网站 维护 页面,中国站长素材网,高端网站定制开发,专门做恐怖的网站1.利用状态标志位控制LED状态翻转 在平常编写LED状态翻转函数时,通常利用状态标志位实现LED状态的翻转。如下所示: unsigned char led_turn_flag; //LED状态标志位,1-点亮,0-熄灭/***************************************函…

1.利用状态标志位控制LED状态翻转

在平常编写LED状态翻转函数时,通常利用状态标志位实现LED状态的翻转。如下所示:

unsigned char led_turn_flag;    //LED状态标志位,1-点亮,0-熄灭/***************************************函数名称:LED亮灭控制函数形参:sta 1-点亮,0-熄灭
****************************************/
void led_control(unsigned char sta)
{if(sta) //高电平{GPIO_SetBits(GPIOA,GPIO_Pin_1);}else{GPIO_ResetBits(GPIOA,GPIO_Pin_1);}
}/***************************************函数名称:LED翻转控制函数形参:无
****************************************/
void led_control_turn()
{led_control(led_turn_flag);
}

使用状态标志位,可以轻松实现LED状态翻转,但其存在可移植性差的问题。

led_turn_flag这个变量如果在其他.c文件中需要使用,则需要在该.c文件中对该变量再次进行声明,如此一来,使得程序繁琐冗长、可读性差、可移植性差。

下面将介绍一种利用STM32关于GPIO库函数实现LED状态翻转,其可读性强、可移植性强。

2.利用STM32库函数实现LED状态翻转

利用读GPIO引脚函数和写GPIO位函数实现,先读取引脚状态再将其进行翻转,代码如下:

void led_control_turn(void)
{GPIO_WriteBit(GPIOA,GPIO_Pin_1,(BitAction)(1-GPIO_ReadOutputDataBit(GPIOA,GPIO_Pin_1)));//读取到是0,1-0=1,就翻转为1;读取到是1,1-1=0,就翻转为0
}//下面两个函数是STM32自己的库函数,不需要我们自己添加
/*** @brief  Sets or clears the selected data port bit.* @param  GPIOx: where x can be (A..G) to select the GPIO peripheral.* @param  GPIO_Pin: specifies the port bit to be written.*   This parameter can be one of GPIO_Pin_x where x can be (0..15).* @param  BitVal: specifies the value to be written to the selected bit.*   This parameter can be one of the BitAction enum values:*     @arg Bit_RESET: to clear the port pin*     @arg Bit_SET: to set the port pin* @retval None*/
void GPIO_WriteBit(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin, BitAction BitVal)
{/* Check the parameters */assert_param(IS_GPIO_ALL_PERIPH(GPIOx));assert_param(IS_GET_GPIO_PIN(GPIO_Pin));assert_param(IS_GPIO_BIT_ACTION(BitVal)); if (BitVal != Bit_RESET){GPIOx->BSRR = GPIO_Pin;}else{GPIOx->BRR = GPIO_Pin;}
}/*** @brief  Reads the specified output data port bit.* @param  GPIOx: where x can be (A..G) to select the GPIO peripheral.* @param  GPIO_Pin:  specifies the port bit to read.*   This parameter can be GPIO_Pin_x where x can be (0..15).* @retval The output port pin value.*/
uint8_t GPIO_ReadOutputDataBit(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin)
{uint8_t bitstatus = 0x00;/* Check the parameters */assert_param(IS_GPIO_ALL_PERIPH(GPIOx));assert_param(IS_GET_GPIO_PIN(GPIO_Pin)); if ((GPIOx->ODR & GPIO_Pin) != (uint32_t)Bit_RESET){bitstatus = (uint8_t)Bit_SET;}else{bitstatus = (uint8_t)Bit_RESET;}return bitstatus;
}

利用STM32库函数实现LED状态翻转,简洁明了,可移植性强。

http://www.hengruixuexiao.com/news/26203.html

相关文章:

  • 做海鲜批发去哪个网站seo自然排名优化
  • wordpress 未找到页面南宁seo外包要求
  • 怎么做免费网站推广软件培训机构
  • 网站右下角浮动效果如何做成长电影在线观看免费
  • 功能类网站手机如何做网站
  • 如何做网站拉动条谷歌商店下载官方正版
  • 日本做衣服的网站有哪些网络优化
  • 用织梦做政府网站老被黑建一个app平台的费用多少
  • 芜湖住房和城乡建设委员会网站国内军事新闻最新消息
  • 2020年楼市最新消息seo优化个人博客
  • 做兼职的网站贴吧百度首页排名优化哪家专业
  • 渝网互联重庆网站制作泰安seo推广
  • 品牌网站建设报价百度最新秒收录方法2022
  • 辽宁省住房和城乡建设网站免费b2b网站有哪些
  • 新疆工程建设云seo营销技巧培训班
  • 公司官网网站搭建郑州免费做网站
  • 哪里有做旅游包车的网站公司品牌宣传方案
  • 皮革 东莞网站建设寻找客户的渠道和方法
  • 日语网站建设需要注意什么找培训机构的app
  • wordpress的优点seo技术顾问阿亮
  • 怎么样自己建立一个网站国内新闻最新消息
  • 新网站做内链手机网络优化
  • 自助建站程序百度客服人工电话24小时
  • 企业网站招聘可以怎么做媒体资源网官网
  • 企业每月报账在哪个网站做网站搭建一般要多少钱
  • 火车头采集器 wordpress论坛发布潍坊seo外包平台
  • 湛江海田网站建设招聘关键词歌曲免费听
  • 委托网站建设流程图建立网站的详细步骤
  • 网站源码下载炫酷唯尚广告联盟平台
  • 怎样上传自己做的网站免费的网页网站