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

网页开发网站关键词优化软件

网页开发网站,关键词优化软件,wordpress时间差8小时,个人怎么注册家族公司08. 按键输入 按键原理图代码编写GPIO驱动代码按键驱动代码主函数 加上清除BSS段,代码不运行 按键原理图 按键KEY0连接到了UART1_CTS上。默认情况下,KEY0为高,当按下KEY0后,UART1_CTS为低电平 代码编写 在bsp下创建一个key和一个…

08. 按键输入

  • 按键原理图
  • 代码编写
    • GPIO驱动代码
    • 按键驱动代码
    • 主函数
  • 加上清除BSS段,代码不运行

按键原理图

在这里插入图片描述
按键KEY0连接到了UART1_CTS上。默认情况下,KEY0为高,当按下KEY0后,UART1_CTS为低电平

代码编写

在bsp下创建一个key和一个gpio文件夹

  1. 设置UART1_CTS复用为GPIO1_IO88
  2. 设置UART1_CTS的电气属性
  3. 配置GPIO_IO08为输出模式
  4. 读取按键值,获取高低电平

GPIO驱动代码

bsp_gpio.h

#pragma once
#include "imx6ul.h"
typedef enum _gpio_pin_direction
{kGPIO_DigitalInpput = 0U,  // 输入kGPIO_DigitalOutput = 1U,  // 输出
} gpio_pin_direction_t;typedef struct _gpio_pin_config
{gpio_pin_direction_t direction;	// GPIO方向,输入还是输出uint8_t outputLogic; 			// 如果是输出的话,默认输出电平
} gpio_pin_config_t;void gpio_init(GPIO_Type *base, int pin, gpio_pin_config_t *config);
int gpio_pinread(GPIO_Type *base, int pin);
void gpio_pinwrite(GPIO_Type *base, int pin, int value);

bsp_gpio.c

#include "bsp_gpio.h"
void gpio_init(GPIO_Type *base, int pin, gpio_pin_config_t *config)
{if(config->direction == kGPIO_DigitalInput) // 输入{base->GDIR &= ~(1 << pin);}else 										// 输出{base->GDIR |= 1 << pin;gpio_pinwrite(base, pin, config->outputLogic); // 默认输出电平}	
}int gpio_pinread(GPIO_Type *base, int pin)
{return (((base->DR) >> pin) & 0x1);
}// 指定GPIO输出高低电平
void gpio_pinwrite(GPIO_Type *base, int pin, int value)
{if(value == 0U){base->DR &= ~(1U<<pin); // 输出低电平}else{base->DR |= (1U<<pin);  // 输出高电平}
}

按键驱动代码

bsp_key.h

#include "imx6ul.h"
// 定义按键键值
enum keyvalue
{KEY_NONE = 0,KEY_VALUE,
};void key_init();
int key_getvalue();

bsp_key.c

void key_init()
{gpio_pin_config_t key_config;IOMUXC_SetPinMux(IOMUXC_UART1_CTS_B_GPIO1_IO18, 0); // 复用为GPIO1_IO18IOMUXC_SetPinConfig(IOMUXC_UART1_CTS_B_GPIO1_IO18, 0xf080);key_config.direction = kGPIO_DigitalInput;gpio_init(GPIO1, 18, &key_config);
}int key_getvalue()
{int ret = 0;static unsigned char release = 1; // 按键松开if((release == 1)&&(gpio_pinread(GPIO1, 18)==0)) // key0按下{delay(10); release = 0; // 标记按键按下if(gpio_pinread(GPIO1, 18)==0)ret = KEY0_VALUE;}else if(gpio_pinread(GPIO1, 18) == 1){ret = 0;release = 1; // 标记按键释放}return ret;
}

主函数

#include "bsp_clk.h"
#include "bsp_delay.h"
#include "bsp_led.h"
#include "bsp_beep.h"
#include "bsp_key.h"int main()
{int i = 0;int keyvalue = 0;unsigned char led_state = OFF;unsigned char beep_state = OFF;clk_enable();led_init();beep_init();key_init();while(1){keyvalue = key_getvalue();if(keyvalue){switch(keyvalue){case KEY0_VALUE:beep_state = !beep_state;beep_switch(beep_state);break;}}i++;if(i==50){i = 0;led_state = !led_state;led_switch(LED0, led_state);}delay(10);}return 0;
}

makefile文件
修改TARGET为key,INCDIRS和SRCDIRS中追加gpio和key的路径

加上清除BSS段,代码不运行

__bss_start=0x87800289。对于32位SOC来说,一般是以4字节访问的,因此会从0x87800288开始清除bss段,但是该地址不属于bss段,所以会出问题,也就需要我们进行内存对齐,即__bss_start=0x8780028c。就是在__bss_start之前进行. = ALIGN(4);然后再赋值

http://www.hrbkazy.com/news/16538.html

相关文章:

  • 织梦的网站数据还原怎么做网站推广优化方式
  • 牙膏的网站建设中国关键词官网
  • 响应式网站茶叶网站北京网
  • 国内做家具外贸的网站搜索引擎推广的常见形式有
  • 兴润建设集团有限公司网站关键词优化怎么做
  • 安卓系统上怎样做网站前端开发找广告商的平台
  • 怎么查自己的邮箱号seo排名优化方式方法
  • 漳州本地网站新产品推广
  • 如何用iis做网站高端网站建设公司排名
  • 郑州富士康目前状况seo搜索引擎优化师
  • 上海做企业网站的公司网站如何让百度收录
  • 手机老是下载一些做任务的网站seo信息是什么
  • 做网站有前景吗2022知名品牌营销案例100例
  • 漳州网站建设哪家好seo培训学院官网
  • 手机怎么安装网站程序html友情链接
  • c2c模式有哪些成都seo外包
  • 元做网站潮州seo
  • 做网站到底怎么赚钱怎样优化网站排名靠前
  • 沈阳旅游集团网站建设新手怎么做seo优化
  • 北方明珠网站建设沈阳网站seo排名公司
  • wordpress首页添加音乐做网络优化哪家公司比较好
  • 烟台网站开发广告安装接单app
  • 怎么建立一个网站及推广短视频seo代理
  • 无锡品牌网站建设最佳的资源磁力搜索引擎
  • 色弱做网站宁波网站推广排名
  • 网站弄好了怎么推广域名查询阿里云
  • 上海小企业网站建设四川游戏seo整站优化
  • 单纯做网站的公司如何学会推广和营销
  • 怎么用支付宝做发卡网站周口seo推广
  • 经营网站备案网络营销的基本功能