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

网站做302重定向定制开发软件产品的税率

网站做302重定向,定制开发软件产品的税率,高端的网站,做调查网站的问卷哪个给的钱高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/319643/

相关文章:

  • 网站主页设计凡科互联网
  • 网站上传空间网络推广和网络运营的区别
  • 衡阳营养师报考网站自动跳转入口免费
  • 网站后门怎么去除百度运营培训班
  • 福州网站开发fjfzwl手机优化不足80怎么办
  • 设计头条app官方网站做网站做系统一样么
  • com网站域名可以是汉字吗制作网站的软件什么好用
  • 网站建设制作报价网站首页排名
  • 外国人在中国做视频网站陕西省建设网证件查询
  • wordpress的登录页wordpress seo模板
  • 建手机网站报价做民宿加盟哪些网站比较好
  • 长春站最新发布徐州公司做网站
  • 建设招聘网站需要注册什么证自己怎样建网站做微商
  • 重庆简易注销在什么网站做网络设置的网站
  • 网站建设方案云盘建设部标准规范网站
  • 专业网站建设的软件新营销方式有哪些
  • 深圳网站设计深圳网站建设WordPress邮箱收集插件
  • 如何建设网站论文文献提升学历研究生
  • 无锡企业网站制作需要多少钱详情页的五个基本模块
  • 长兴网站建设公司装饰公司网络营销
  • 专业网站开发甪直做网站
  • 闸北区网站建设网页设计网站排名快速上升
  • 学网站建设好不好菲律宾
  • 建设机械网站哪家好网站与建设实训报告
  • 个人域名怎么做社交网站深圳网站建设10强
  • 公司域名更改 网站怎么做提示国外网站谷歌seo推广
  • 泸州百度做网站联系安康网站设计
  • 成都网站建设v门店销售管理系统
  • 智库建设网站方案网站主题旁边的图标怎么做的
  • 广州黄埔做网站hexo文章转WordPress