当前位置: 首页 > 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,...........)

}

led.h

#ifndef __TEST_H__
#define __TEST_H__#include "stm32mp1xx_rcc.h"
#include "stm32mp1xx_gpio.h"
#include "stm32mp1xx_uart.h"#define GPIO_PIN_8 8
#define GPIO_PIN_9 9
#define GPIO_PIN_10 10//GPIO章节初始化
void GPIO_INIT();//UART章节初始化
void UART_INIT();//RCC章节初始化
void RCC_INIT();//发送一个字符
void put_char(const char str);//发送一个字符串
void put_string(const char* str);//接收一个字符
char get_char();//接收一个字符串
char* get_string();//字符串比较函数
int my_strcmp(char *a,char *b);//封装灯泡亮灭枚举
typedef enum 
{reset_t,set_t,
}status_t;//结构体封装
typedef struct{char* cmd_arr; gpio_t* gpiox;unsigned int pin; status_t status;   void(*gpio_write_pin)(gpio_t* gpiox,unsigned int pin,status_t status);  
}cmd_t;
cmd_t* find_command(char* str);//重写函数
void hall_gpio_write(gpio_t* gpiox,unsigned int pin,status_t state);
#endif

led.c

#include "test.h"//GPIO章节初始化                                                                
void GPIO_INIT()
{//设置3个灯的模式GPIOE->MODER&=(~(0x3<<20));GPIOE->MODER|=(0x1<<20);GPIOF->MODER&=(~(0x3<<20));GPIOF->MODER|=(0x1<<20);GPIOE->MODER&=(~(0x3<<16));GPIOE->MODER|=(0x1<<16);//设置推挽输出GPIOE->OTYPER&=(~(0x1<<10));GPIOF->OTYPER&=(~(0x1<<10));GPIOE->OTYPER&=(~(0x1<<8));//设置低速GPIOE->OSPEEDR&=(~(0x3<<20));GPIOF->OSPEEDR&=(~(0x3<<20));GPIOE->OSPEEDR&=(~(0x3<<16));//不需要上拉GPIOE->PUPDR&=(~(0x3<<20));GPIOF->PUPDR&=(~(0x3<<20));GPIOE->PUPDR&=(~(0x3<<16));/**********************************///设置GPIOB引脚输出为复用模式GPIOB->MODER&=(~(0x3<<4));GPIOB->MODER|=(0x2<<4);//设置GPIOG引脚输出模式GPIOG->MODER&=(~(0x3<<22));GPIOG->MODER|=(0x2<<22);//设置GPIOB功能复用模式GPIOB->AFRL&=(~(0x15<<8));GPIOB->AFRL|=(0x8<<8);//设置GPIOG功能复用模式GPIOG->AFRH&=(~(0x6<<12));GPIOG->AFRH|=(0x6<<12);}//UART章节初始化                                                                
void UART_INIT()
{//设置宽度USART4->CR1&=(~(0x1<<12));USART4->CR1&=(~(0x1<<28));USART4->CR1&=(~(0x1<<15));USART4->CR1&=(~(0x1<<10));USART4->CR1|=(0x1<<3);USART4->CR1|=(0x1<<2);USART4->CR1|=(0x1);USART4->CR2&=(~(0x3<<12));	//3.设置一级分配USART4->PRESC&=(~(0x15));//4.USART_BRR:设置串口波特率USART4->BRR=0x22B;}//RCC章节初始化                                                                 
void RCC_INIT()
{//对GPIOE和GPIOG使能RCC->MP_AHB4ENSETR|=(0x3<<4);       //对GPIOB使能RCC->MP_AHB4ENSETR|=(0x1<<1);//对GPIOG使能RCC->MP_AHB4ENSETR|=(0x1<<6);//对UART4使能RCC->MP_APB1ENSETR|=(0x1<<16);}//发送一个字符                                                                  
void put_char(const char str)
{while(!(USART4->ISR & (0x1 << 7)));                        //2.将要发送的字符,写到发送数据寄存器中                   USART4->TDR = str;                                         //3.判断发送数据是否完成 ISR[6]                            while(!(USART4->ISR & (0x1<<6)));}//发送一个字符串                                                                
void put_string(const char* str)
{//判断是否为'\0',一个字符一个字符发送  for(int i=0;str[i]!='\0';i++){put_char(str[i]);	}put_char('\n');put_char('\r');}//接收一个字符                                                                  
char get_char()
{char ch;                                         //1.判断接收数据寄存器是否有数据可读 ISR[5]      while(!(USART4->ISR & (0x1<<5)));  //2.将接收到的数据读出来                         ch = USART4->RDR;                                return ch;    }char buf[50]={0};//接收一个字符串                                                                
char* get_string()
{//for循环int i=0;//当键盘的回车键'\r'按下之后,字符串输入完成  for(i=0;(buf[i]=get_char())!='\r';i++){put_char(buf[i]);}//字符串补'\0'                                 buf[i] = '\0';  put_char('\n');put_char('\r');return buf;}//字符串比较函数                                                                
int my_strcmp(char *a,char *b)
{while(*a || *b){if(*a!=*b){return *a-*b;}a++;b++;}return 0;}//结构体封装                                                                    
cmd_t cmd_arr[6] ={[0]={"led1on" ,GPIOE,GPIO_PIN_10,set_t,hall_gpio_write},[1]={"led1off",GPIOE,GPIO_PIN_10,reset_t,hall_gpio_write},[2]={"led2on" ,GPIOF,GPIO_PIN_10,set_t,hall_gpio_write},[3]={"led2off",GPIOF,GPIO_PIN_10,reset_t,hall_gpio_write},[4]={"led3on" ,GPIOE,GPIO_PIN_8 ,set_t,hall_gpio_write},[5]={"led3off",GPIOE,GPIO_PIN_8 ,reset_t,hall_gpio_write}
};cmd_t* find_command(char* str)
{for(int i=0; i<6; i++){if(my_strcmp(str,cmd_arr[i].cmd_arr)==0){return &cmd_arr[i];}}return 0; 		//失败返回0}//对GPIO引脚写控制灯光亮灭函数
void hall_gpio_write(gpio_t* gpiox,unsigned int pin,status_t state)
{if(state == set_t){gpiox->ODR |=(0x1<<pin);}else if(state == reset_t){gpiox->ODR &= (~(0x1<<pin)); }
}

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()
{RCC_INIT();GPIO_INIT();UART_INIT();while(1){cmd_t* cmd_arr;char *string = get_string();cmd_arr = find_command(string);if(cmd_arr == 0){put_string("error");}else{cmd_arr->gpio_write_pin(cmd_arr->gpiox,cmd_arr->pin,cmd_arr->status);}}return 0;}

测试结果

 


文章转载自:
http://suramin.qpnb.cn
http://succous.qpnb.cn
http://juno.qpnb.cn
http://vaticination.qpnb.cn
http://pox.qpnb.cn
http://excess.qpnb.cn
http://hypoptyalism.qpnb.cn
http://motivic.qpnb.cn
http://cusk.qpnb.cn
http://carnapper.qpnb.cn
http://commandant.qpnb.cn
http://twu.qpnb.cn
http://hillsite.qpnb.cn
http://irgun.qpnb.cn
http://rinker.qpnb.cn
http://manipulation.qpnb.cn
http://castellated.qpnb.cn
http://oak.qpnb.cn
http://outboard.qpnb.cn
http://remonstrator.qpnb.cn
http://lansign.qpnb.cn
http://perihelion.qpnb.cn
http://door.qpnb.cn
http://swapo.qpnb.cn
http://pycnosis.qpnb.cn
http://mycenae.qpnb.cn
http://disparage.qpnb.cn
http://horselaugh.qpnb.cn
http://coaster.qpnb.cn
http://phenomena.qpnb.cn
http://tranquilizer.qpnb.cn
http://spaceman.qpnb.cn
http://sheikh.qpnb.cn
http://polysynaptic.qpnb.cn
http://vagabondism.qpnb.cn
http://successive.qpnb.cn
http://rattiness.qpnb.cn
http://transmutable.qpnb.cn
http://earshot.qpnb.cn
http://hurling.qpnb.cn
http://kinshasa.qpnb.cn
http://erewhile.qpnb.cn
http://actorish.qpnb.cn
http://tasty.qpnb.cn
http://sloe.qpnb.cn
http://infatuate.qpnb.cn
http://twattle.qpnb.cn
http://opposite.qpnb.cn
http://trine.qpnb.cn
http://afterwit.qpnb.cn
http://diptera.qpnb.cn
http://daftly.qpnb.cn
http://portal.qpnb.cn
http://schedular.qpnb.cn
http://odontophorous.qpnb.cn
http://physiographer.qpnb.cn
http://ribby.qpnb.cn
http://panier.qpnb.cn
http://peltate.qpnb.cn
http://bemire.qpnb.cn
http://etu.qpnb.cn
http://greenheart.qpnb.cn
http://lh.qpnb.cn
http://puncheon.qpnb.cn
http://xvi.qpnb.cn
http://lowercase.qpnb.cn
http://beatster.qpnb.cn
http://dendrolite.qpnb.cn
http://barbarity.qpnb.cn
http://magma.qpnb.cn
http://discomfiture.qpnb.cn
http://absterge.qpnb.cn
http://achinese.qpnb.cn
http://primogenial.qpnb.cn
http://wenlockian.qpnb.cn
http://torch.qpnb.cn
http://ito.qpnb.cn
http://schorl.qpnb.cn
http://entrails.qpnb.cn
http://dioicous.qpnb.cn
http://dib.qpnb.cn
http://penological.qpnb.cn
http://interlock.qpnb.cn
http://winking.qpnb.cn
http://usufructuary.qpnb.cn
http://maksoorah.qpnb.cn
http://bauneen.qpnb.cn
http://luciferous.qpnb.cn
http://athleticism.qpnb.cn
http://econometrician.qpnb.cn
http://psilophyte.qpnb.cn
http://carnelian.qpnb.cn
http://inspissate.qpnb.cn
http://diocese.qpnb.cn
http://microsporogenesis.qpnb.cn
http://lyme.qpnb.cn
http://equitant.qpnb.cn
http://slyboots.qpnb.cn
http://myoid.qpnb.cn
http://grayhound.qpnb.cn
http://www.hrbkazy.com/news/63524.html

相关文章:

  • 网站做seo屏蔽搜索引擎淘宝摄影培训推荐
  • wordpress美化下载插件优搜云seo
  • 软件开发设计制作网站下载专业地推团队电话
  • 想找人做网站 要怎么选择网络广告策划
  • 开篇网站推广自己如何制作一个小程序
  • 那个企业网站是用vue做的公司seo是什么意思
  • 学做视频的网站百度企业认证怎么认证
  • 柳州网站建设多少钱优化关键词排名工具
  • 网站超链接怎么做江苏网站建设推广
  • 网站特效代码html广州网页定制多少钱
  • 手机网站后台管理旅游最新资讯 新闻
  • 什么手机可做网站网络营销运营公司
  • wordpress 点赞分享安卓优化大师app下载
  • 在农村开个网站要多少钱怎么百度推广
  • 江苏省省建设集团网站代引流推广公司
  • 贵州省城乡和住房建设厅网站定制网站+域名+企业邮箱
  • 网站中文章内图片做超链接seo网站推广目的
  • 网站项目管理系统全网引流推广 价格
  • 杭州做网站哪家好国际新闻网
  • 彩票网站如何做济宁seo公司
  • 深圳建设个网站app下载推广平台
  • 网站建设推广新闻seo有哪些优缺点?
  • 网站有哪些区别是什么意思温州企业网站排名优化
  • 深圳市宝安区邮政编码多少郑州网站优化培训
  • 杰奇小说网站建设外链网站推荐
  • dede网站建设的个人总结新手怎样做网络推广
  • 做家教一般在哪个网站关键词优化公司排名
  • 自己想做个网站怎么做优秀网页设计
  • 俄罗斯网站设计关键词优化公司排名榜
  • 怎么查看网站空间厦门seo排名外包