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

都匀网站开发长沙广告招牌制作公司

都匀网站开发,长沙广告招牌制作公司,个人网站icp备案网,泾川建设路网站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.yayakq.cn/news/400315/

相关文章:

  • 网站开发使用软件帝国程序和WordPress
  • 简阳电力建设立项网站吉林省建设厅证件查询网站
  • 张家港做网站费用模版网站建设步骤详解
  • 商务网站建设教程邢台网站建设多少钱
  • 莱芜二中网站东莞网站建设 塑胶五金
  • 网站在政务新媒体建设方案广州建设网站
  • 广州黄埔做网站旅游网站建设网站推广
  • 建设产品网站搜索引擎优化的英文
  • 龙华新区网站制作两学一做专题网站
  • 免费建网站推广旅游网站建设的结论
  • 网站策划书的要点iis网站属性里
  • 做淘宝的网站的多少钱手机版网站设计风格
  • 做网站分辨率多少好的网址推荐
  • 长沙建网站公司网络云网站
  • wordpress 前端会员中心网站字头优化
  • 自己做网站和推广龙岩kk网手机版
  • 网站收录查询临沂seo贵州住房和城乡建设厅网站
  • 艺术品交易网站开发电子商务搭建平台
  • 驻马店网站开发公司电话网页设计图片排版怎么设置
  • 做app和做网站那个难大气的网站模板
  • 那些网站可以做团购wordpress弹幕视频插件
  • 环球易购招聘网站建设广告创意设计图片赏析
  • asp.net网站开发框架免费软件网站建设
  • 有谁想做网站 优帮云网站开发的费用
  • 如何利用国外网站开发客户天津网络项目公司
  • 学做网站要多久网页制作素材服装类
  • 深圳网站建设龙华新科燕郊做网站
  • 地下城封号做任务网站南宁seo服务优化
  • ssh做的网站上海百度分公司电话
  • 网站服务器租用需要什么材料内蒙古头条新闻发布信息