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

泉州效率网络网站建设推广普通话宣传周活动方案

泉州效率网络网站建设,推广普通话宣传周活动方案,好的网站推广,应用中心下载1.通过操作Cortex-A7核,串口输入相应的命令,控制LED灯进行工作 例如在串口输入led1on,开饭led1灯点亮 2.例如在串口输入led1off,开饭led1灯熄灭 3.例如在串口输入led2on,开饭led2灯点亮 4.例如在串口输入led2off,开饭led2灯熄灭 5.例如在串口输入led…

1.通过操作Cortex-A7核,串口输入相应的命令,控制LED灯进行工作
例如在串口输入led1on,开饭led1灯点亮

2.例如在串口输入led1off,开饭led1灯熄灭

3.例如在串口输入led2on,开饭led2灯点亮

4.例如在串口输入led2off,开饭led2灯熄灭

5.例如在串口输入led3on,开饭led3灯点亮

6.例如在串口输入led3off,开饭led3灯熄灭

2.编程要求:

1)结构体封装

typedef struct{

char* cmd_arr; //命令行字符串

gpio_t* gpiox;//GPIO组号

unsigned int pin; //引脚编号

status_t status; //LED灯状态

void(*gpio_write_pin)(gpio_t* gpiox,unsigned int pin,status_t status);

}cmd_t;

2)结构体数组

方式1:cmd_t cmd_arr[6] = {{"led1off",GPIOE,GPIO_PIN_10,GPIO_RESET_T},{},};

cmd_t cmd_arr[6] = {

[0] ={ .cmd_arr = "led1off", .gpiox = GPIOE, .pin = GPIO_PIN_10, .status = GPIO_RESET_T, .gpio_write_pin = hal_gpio_write, }, [1] = {}, [2] = {}, };

3)在串口输入一个字符串

1>在串口输入一个字符串,需要定义一个变量接收,串口接收到的字符串 char* string = uart_get_string();

2>串口中输入的字符串,与结构体中每个元素中的cmd_arr变量进行比较

3>如果比较成功,代表查到输入的字符串 思考:函数实现如何编写?

cmd_t* find_command(const char* str) {

//串口中输入的字符串,与结构体中每个元素中的cmd_arr变量进行比较

//遍历比较,自己编写strcmp比较的函数 return 0;

//失败返回0 }

4)思考main.c函数编写

cmd_t* cmd_arr;

char* string = uart_get_string();

cmd_arr = find_command(string);

if(cmd_arr == 0)

{

查找失败

}else {

cmd_arr->gpio_write_pin(cmd_arr->gpiox,...........)

}

头文件

#ifndef __TEST_H__
#define __TEST_H__#include "stm32mp1xx_rcc.h"
#include "stm32mp1xx_gpio.h"
#include "stm32mp1xx_uart.h"
#include "gpio.h"typedef struct{char* cmd_str;  //命令行字符串gpio_t* gpiox;  //GPIO组号unsigned int pin;  //引脚编号gpio_status_t status;  //LED灯状态void(*gpio_write_pin)(gpio_t* gpiox,unsigned int pin,gpio_status_t status);
}cmd_t;//UART初始化
void uart_init();
//LED初始化
void LED_init(gpio_t* GPIOX,unsigned int PIN);
//发送一个字符
void put_char(const char ch);
//接收一个字符
char get_char();
//发送一个字符串
void put_string(const char* str);
//接收一个字符串
char* get_string();
//点亮LED
void LED_lighting(gpio_t* GPIOX,unsigned int PIN,gpio_status_t status);
//字符串比较函数
int strcmp(const char* string,const char* arr_string);
cmd_t* find_command(const char* str);#endif


源文件

#include "test.h"cmd_t cmd_arr[6] = {                                     [0] ={                                               .cmd_str = "led1on",                             .gpiox = GPIOE,                                  .pin = gpio_PIN_10,                              .status = gpio_set,                              .gpio_write_pin = LED_lighting,                  },                                                   [1] ={                                               .cmd_str = "led1off",                            .gpiox = GPIOE,                                  .pin = gpio_PIN_10,                              .status = gpio_reset,                            .gpio_write_pin = LED_lighting,                  },                                                   [2] ={                                               .cmd_str = "led2on",                             .gpiox = GPIOF,                                  .pin = gpio_PIN_10,                              .status = gpio_set,                              .gpio_write_pin = LED_lighting,                  },                                                   [3] ={                                               .cmd_str = "led2off",                            .gpiox = GPIOF,                                  .pin = gpio_PIN_10,                              .status = gpio_reset,                            .gpio_write_pin = LED_lighting,                  },                                                   [4] ={                                               .cmd_str = "led3on",                             .gpiox = GPIOE,                                  .pin = gpio_PIN_8,                               .status = gpio_set,                              .gpio_write_pin = LED_lighting,                  },                                                   [5] ={                                               .cmd_str = "led3off",                            .gpiox = GPIOE,                                  .pin = gpio_PIN_8,                               .status = gpio_reset,                            .gpio_write_pin = LED_lighting,                  }                                                    
};                                                       //UART初始化
void uart_init(){//RCC_AHB4ENSETRRCC->MP_AHB4ENSETR |= (0x1<<1);   //GPIOB使能RCC->MP_AHB4ENSETR |= (0x1<<6);   //GPIOG使能//RCC_APB1ENSETRRCC->MP_APB1ENSETR |= (0x1<<16);  //UART4使能//GPIOBGPIOB->MODER &= (~(0x3<<4));  //GPIOB_MODER设置复用功能模式GPIOB->MODER |= (0x1<<5);GPIOB->AFRL &= (~(0xf<<8));   //设置GPIOB引脚功能复用模式 GPIOB->AFRL |= (0x1<<11);//GPIOGGPIOG->MODER &= (~(0x3<<22));  //GPIOG_MODER设置复用功能模式GPIOG->MODER |= (0x1<<23);GPIOG->AFRH &= (~(0xf<<12));   //设置GPIOG引脚功能复用模式 GPIOG->AFRH |= (0x3<<13);//uart初始化USART4->CR1 &= (~(0x1<<0));   //判断UE是否等于0USART4->CR1 &= (~(0x1<<12));  USART4->CR1 &= (~(0x1<<28));   //设置数据位宽度为8位USART4->CR2 &= (~(0x3<<12));   //设置1位停止位USART4->CR1 &= (~(0x1<<15));   //设置16倍采样率USART4->CR1 &= (~(0x1<<10));   //设置串口无奇偶位USART4->BRR = 0x22B;USART4->CR1 &= (~(0x1<<3));  USART4->CR1 |= (0x1<<3);   //发送使能USART4->CR1 &= (~(0x1<<2)); USART4->CR1 |= (0x1<<2);   //接收器使能USART4->PRESC &= (~(0xf<<0));  //一级分配USART4->CR1 |= (0x1<<0);   //UART使能
}//LED初始化
void LED_init(gpio_t* GPIOX,unsigned int PIN){//RCC_AHB4ENSETRif(GPIOX == GPIOE){RCC->MP_AHB4ENSETR |= (0x1<<4);   //GPIOE使能}else{RCC->MP_AHB4ENSETR |= (0x1<<5);   //GPIOF使能}//GPIOXGPIOX->MODER &= (~(0x3<<(PIN*2)));   //设置输出模式GPIOX->MODER |= (0x1<<(PIN*2));GPIOX->OTYPER &= (~(0x1<<PIN));  //设置推挽输出GPIOX->OSPEEDR &= (~(0x3<<(PIN*2))); //设置低速输出模式GPIOX->PUPDR &= (~(0x3<<(PIN*2)));  //设置禁止上下拉电阻}
//发送一个字符
void put_char(const char ch){//判断发送寄存器是否为空while(!(USART4->ISR & (0x1<<7)));//将数据放入发送寄存器中USART4->TDR = ch;//如果字符是\n,则再发送一个回车\rif(ch == '\n'){while(!(USART4->ISR & (0x1<<7)));USART4->TDR = '\r';}//判断一帧数据是否发送成功while(!(USART4->ISR & (0x1<<6)));}
//接收一个字符
char get_char(){char ch;//判断接收数据寄存器是否为空while(!(USART4->ISR & (0x1<<5)));//将接收到的数据放入接收数据寄存器中ch = USART4->RDR;return ch;
}
//发送一个字符串
void put_string(const char* str){//循环发送字符for(int i=0; str[i]!='\0'; i++){put_char(str[i]);}put_char('\n');put_char('\r');
}
char buf[50]={0};
//接收一个字符串
char* get_string(){int i = 0;for(i=0; (buf[i]=get_char()) != '\r';i++){put_char(buf[i]);}buf[i]='\0';put_char('\n');put_char('\r');return buf;
}
//点亮LED
void LED_lighting(gpio_t* GPIOX,unsigned int PIN,gpio_status_t status){if(status == gpio_set){    //如果num=1,则点亮灯GPIOX->ODR |= (0x1<<PIN);}else{          //否则熄灭灯GPIOX->ODR &= (~(0x1<<PIN));}
}
//字符串比较函数
int strcmp(const char* string,const char* arr_string){while((*string != '\0') && (*arr_string != '\0')){if(*string > *arr_string){return *string-*arr_string;}else if(*string < *arr_string){return *string-*arr_string;}string++;arr_string++;}return 0;
}
cmd_t* find_command(const char* str){for(int i=0; i<6;i++){if(strcmp(str,cmd_arr[i].cmd_str)==0){return &cmd_arr[i];}}return 0;
}


main.c

#include "test.h"
extern void printf(const char *fmt, ...);
void delay_ms(int ms)
{int i,j;for(i = 0; i < ms;i++)for (j = 0; j < 1800; j++);
}int main()
{	//初始化UARTuart_init();//初始化LED1LED_init(GPIOE,10);//初始化LED2LED_init(GPIOF,10);//初始化LED3LED_init(GPIOE,8);put_string("UART AND LED TEST!!!");while(1){cmd_t* cmd_p;char* string = get_string();cmd_p = find_command(string);   //让接收到的字符串进行比较if(cmd_p == 0){printf("输入错误\n");}else{cmd_p->gpio_write_pin(cmd_p->gpiox,cmd_p->pin,cmd_p->status);}}return 0;
}

运行结果

 


文章转载自:
http://rsl.hqbk.cn
http://deromanticize.hqbk.cn
http://hydroxyketone.hqbk.cn
http://ataxy.hqbk.cn
http://painkiller.hqbk.cn
http://unknightly.hqbk.cn
http://morbilliform.hqbk.cn
http://careless.hqbk.cn
http://teratoma.hqbk.cn
http://maecenas.hqbk.cn
http://eon.hqbk.cn
http://almswoman.hqbk.cn
http://mohave.hqbk.cn
http://incurvature.hqbk.cn
http://splenization.hqbk.cn
http://unimplemented.hqbk.cn
http://fancify.hqbk.cn
http://hyperirritability.hqbk.cn
http://murder.hqbk.cn
http://microsystem.hqbk.cn
http://woodpile.hqbk.cn
http://roentgenise.hqbk.cn
http://mneme.hqbk.cn
http://nagasaki.hqbk.cn
http://gauzily.hqbk.cn
http://curtly.hqbk.cn
http://craniota.hqbk.cn
http://lambaste.hqbk.cn
http://polyether.hqbk.cn
http://stylistician.hqbk.cn
http://exoterical.hqbk.cn
http://paleoclimatology.hqbk.cn
http://seeder.hqbk.cn
http://aripple.hqbk.cn
http://zesty.hqbk.cn
http://annuities.hqbk.cn
http://coconscious.hqbk.cn
http://collunarium.hqbk.cn
http://vainglorious.hqbk.cn
http://patisserie.hqbk.cn
http://microvolt.hqbk.cn
http://irreparable.hqbk.cn
http://shaviana.hqbk.cn
http://avascular.hqbk.cn
http://cabernet.hqbk.cn
http://militarise.hqbk.cn
http://bucovina.hqbk.cn
http://resonant.hqbk.cn
http://barn.hqbk.cn
http://bow.hqbk.cn
http://ultramicroscope.hqbk.cn
http://steadfastness.hqbk.cn
http://rubor.hqbk.cn
http://employe.hqbk.cn
http://strictness.hqbk.cn
http://bizarrerie.hqbk.cn
http://granuliform.hqbk.cn
http://rarest.hqbk.cn
http://samizdatchik.hqbk.cn
http://soerakarta.hqbk.cn
http://nocturnal.hqbk.cn
http://spheroidal.hqbk.cn
http://flub.hqbk.cn
http://shat.hqbk.cn
http://reactively.hqbk.cn
http://lanceolate.hqbk.cn
http://ait.hqbk.cn
http://photocompose.hqbk.cn
http://routineer.hqbk.cn
http://dryopithecine.hqbk.cn
http://coversed.hqbk.cn
http://inez.hqbk.cn
http://effectual.hqbk.cn
http://compunication.hqbk.cn
http://meninges.hqbk.cn
http://weatherwise.hqbk.cn
http://eyespot.hqbk.cn
http://escapement.hqbk.cn
http://setem.hqbk.cn
http://cannulation.hqbk.cn
http://lackwit.hqbk.cn
http://zoysia.hqbk.cn
http://hydrogenolysis.hqbk.cn
http://macroscale.hqbk.cn
http://noctiluca.hqbk.cn
http://unnamable.hqbk.cn
http://fooper.hqbk.cn
http://bony.hqbk.cn
http://extensile.hqbk.cn
http://fris.hqbk.cn
http://eurybenthic.hqbk.cn
http://frontlessly.hqbk.cn
http://inkling.hqbk.cn
http://lazuli.hqbk.cn
http://inlaid.hqbk.cn
http://canonry.hqbk.cn
http://systole.hqbk.cn
http://adlib.hqbk.cn
http://formwork.hqbk.cn
http://schiller.hqbk.cn
http://www.dt0577.cn/news/94678.html

相关文章:

  • 做网站的简称关键词优化举例
  • 素材网站视频百度关键词排名原理
  • 筛选选功能形网站建设百度sem竞价推广pdf
  • html网站制作模板阜新网站seo
  • 电商网站开发流程河南网站推广
  • 做品牌推广用什么网站网站统计工具有哪些
  • 渭南网站制作百度识图入口
  • 亿建联网站是谁做的优化网站首页
  • 做装修的网站有哪些内容市场营销策划书范文5篇精选
  • myeclipse做web网站新闻软文自助发布平台
  • 郑州餐饮网站建设公司合肥建站公司seo
  • 门户网站平台建设方案网站软文推广范文
  • 网站设计标题百度首页广告
  • 企业托管成都关键词seo推广平台
  • 女生做a视频的网站是什多少爱站网关键词挖掘查询工具
  • 合肥高端网站建设公司哪家好手机网站自助建站系统
  • 初创企业网站建设流程站长工具的网址
  • 加强门户网站建设 信息公开米拓建站
  • 中国建设教育协会是个什么网站安仁网络推广
  • 杭州网站搭建整站seo服务
  • 一般网站是用什么框架做的做互联网推广的公司
  • 网站集约化建设困难如何网上免费做推广
  • 天津做网站哪个公司好汕头seo计费管理
  • 成都设计网站建设百度竞价开户3000
  • 成都网站制作设计互联网广告推广
  • 常德行业网站惠州seo计费
  • 做慈善黄色网站国际新闻最新消息
  • wordpress页面标题标签百度搜索关键词排名优化
  • 网站建设免费模版网络推广营销方案免费
  • 传播文化有限公司网站建设0元入驻的电商平台