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

企业网站开发数据库设计wordpress 文章付费

企业网站开发数据库设计,wordpress 文章付费,海外公司推广,盘多多搜索引擎入口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.yayakq.cn/news/109155/

相关文章:

  • 网站架构价格cosy wordpress主题
  • 响应式网站自助建设电子商务网站开发与管理实验报告
  • 制作企业网站页面的实训报告我想代理一个产品
  • wap网站做微信小程序龙岩网站建设极速建站
  • html5做手机网站长春网络安全公司
  • 网站外链购买电子商务策划书模板
  • 建筑公司网站常用长尾词网站界面友好
  • 医院做网站的费用多少微信的网站开发
  • 网络推广 网站制作ip域名找网站
  • 德文网站建设网站手机版建设项目书
  • 社区做图网站齐河县工程建设监理有限公司网站
  • 东兴移动网站建设百度官方网站
  • 网站域名解析ip查询手机网站建设和
  • 成都个人网站品牌推广图片
  • iis默认网站路径360免费建站连接
  • 济南网站建设 选搜点owordpress文章点击次数插件
  • 服务器云平台长宁网站建设优化seo
  • 天长两学一做网站网站后台可视化编辑
  • 链家在线网站是哪个公司做的设置wordpress导航栏
  • 秦皇岛做网站seo的zeronet网站开发
  • 江西城市建设管理协会网站网站建设可以用350摸板
  • 织梦制作手机网站模板网络服务有点问题别紧张试试看刷新页面
  • 网站的站外推广手段终身免费vps
  • 阿里云怎么上传网站有关做聚合物电池公司的网站
  • 网站改版 信科网络网站是用织梦系统做的首页打开超慢
  • 莆田网站建设维护手机报价大全2021中关村
  • 手机网站关闭窗口代码代理服务器免费网页版
  • 建一个全部由自己控制的网站需要多少钱黑龙江省建设局网站首页
  • 一个网站只有一个核心关键词seo排名优化关键词
  • 有什么好的网站查做外贸出口的企业看房子的网站