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

烟台微信网站建设seo网络推广到底是做什么的

烟台微信网站建设,seo网络推广到底是做什么的,哈尔滨权威做网站,无锡网站建设培训学校1.通过操作Cortex-A7核,串口输入相应的命令,控制LED灯进行工作 1>例如在串口输入led1on,开饭led1灯点亮 2>例如在串口输入led1off,开饭led1灯熄灭 3>例如在串口输入led2on,开饭led2灯点亮 4>例如在串口输入led2off,开饭led2灯熄灭 5>例如…

1.通过操作Cortex-A7核,串口输入相应的命令,控制LED灯进行工作

1>例如在串口输入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); //处理LED状态的函数指针

}cmd_t;

头文件:

#ifndef __NEW_H__
#define __NEW_H__#include "stm32mp1xx_rcc.h"
#include "stm32mp1xx_gpio.h"
#include "stm32mp1xx_uart.h"
//led初始化
void led_init();
void led1_init();
void led2_init();
void led3_init();//uart初始化
void uart4_init();
//接收一个字符
char get_char();
//接收一串字符
char *get_string();
//发送一个字符
void put_char(const char ch);
//发送一个字符串
void put_string(const char *sr);typedef enum{GPIO_RESET_T,GPIO_SET_T,
}status_t;#define GPIO_PIN_0 0
#define GPIO_PIN_1 1
#define GPIO_PIN_2 2
#define GPIO_PIN_3 3
#define GPIO_PIN_4 4
#define GPIO_PIN_5 5
#define GPIO_PIN_6 6
#define GPIO_PIN_7 7
#define GPIO_PIN_8 8
#define GPIO_PIN_9 9
#define GPIO_PIN_10 10
#define GPIO_PIN_11 11
#define GPIO_PIN_12 12
#define GPIO_PIN_13 13
#define GPIO_PIN_14 14
#define GPIO_PIN_15 15typedef struct{char* cmd;//命令gpio_t* gpiox;//组号unsigned int pin;//引脚status_t status;//灯的状态void(*gpio_write_pin)(gpio_t* gpiox,unsigned int pin,status_t status);//设置灯的状态
}cmd_t;/*
//灯亮
void led_on(int i);
//灯灭
void led_off(int i);
*/void hal_gpio_write(gpio_t* gpiox,unsigned int pin,status_t status);
cmd_t* find_command(char *string);
//比较字符串
int strcmp(char *arr,const char *src);#endif

源文件:

#include "new.h"
extern void printf(const char *fmt,...);
extern void delay_ms(int ms);
cmd_t cmd_arr[6] = {[0] = {.cmd = "led1on",.gpiox = GPIOE,.pin = GPIO_PIN_10,.status = GPIO_SET_T,.gpio_write_pin = hal_gpio_write,},[1] = {.cmd = "led1off",.gpiox = GPIOE,.pin = GPIO_PIN_10,.status = GPIO_RESET_T,.gpio_write_pin = hal_gpio_write,},[2] = {.cmd = "led2on",.gpiox = GPIOF,.pin = GPIO_PIN_10,.status = GPIO_SET_T,.gpio_write_pin = hal_gpio_write,},[3] = {.cmd = "led2off",.gpiox = GPIOF,.pin = GPIO_PIN_10,.status = GPIO_RESET_T,.gpio_write_pin = hal_gpio_write,},[4] = {.cmd = "led3on",.gpiox = GPIOE,.pin = GPIO_PIN_8,.status = GPIO_SET_T,.gpio_write_pin = hal_gpio_write,},[5] = {.cmd = "led3off",.gpiox = GPIOE,.pin = GPIO_PIN_8,.status = GPIO_RESET_T,.gpio_write_pin = hal_gpio_write,}
};
//led初始化
void led_init()
{/********RCC章节*********/RCC->MP_AHB4ENSETR |= (0x1 << 4);//GPIOE使能   RCC->MP_AHB4ENSETR |= (0x1 << 5);//GPIOF使能led1_init();led2_init();led3_init();
}void led1_init()
{/********GPIO章节********/GPIOE->MODER &= (~(0x3 << 20));GPIOE->MODER |= (0x1 << 20);//输出模式GPIOE->OTYPER &= (~(0x1 << 10));//推挽GPIOE->OSPEEDR &= (~(0x3 << 20));//低速GPIOE->PUPDR &= (~(0x3 << 20));//无上下拉
}void led2_init()
{/********GPIO章节********/GPIOF->MODER &= (~(0x3 << 20));GPIOF->MODER |= (0x1 << 20);//输出模式GPIOF->OTYPER &= (~(0x1 << 10));//推挽GPIOF->OSPEEDR &= (~(0x3 << 20));//低速GPIOF->PUPDR &= (~(0x3 << 20));//无上下拉
}void led3_init()
{/********GPIO章节********/GPIOE->MODER &= (~(0x3 << 16));GPIOE->MODER |= (0x1 << 16);//输出模式GPIOE->OTYPER &= (~(0x1 << 8));//推挽GPIOE->OSPEEDR &= (~(0x3 << 16));//低速GPIOE->PUPDR &= (~(0x3 << 16));//无上下拉
}//uart初始化
void uart4_init()
{/********RCC章节*********/RCC->MP_AHB4ENSETR |= (0x1 << 1);//GPIOB使能RCC->MP_AHB4ENSETR |= (0x1 << 6);//GPIOG使能RCC->MP_APB1ENSETR |= (0x1 << 16);//UART4使能/********GPIO章节********/GPIOB->MODER &= (~(0x3 << 4));GPIOB->MODER |= (0x2 << 4);//复用模式GPIOG->MODER &= (~(0x3 << 22));GPIOG->MODER |= (0x2 << 22);//复用模式GPIOB->AFRL &= (~(0xf << 8));GPIOB->AFRL |= (0x8 << 8);//设置复用功能RXGPIOG->AFRH &= (~(0xf << 12));GPIOG->AFRH |= (0x6 << 12);//设置复用功能TX/********uart4章节*******/if(USART4->CR1 & (0x1)){delay_ms(500);USART4->CR1 &= (~(0x1));//禁止UE}USART4->CR1 &= (~(0x1 << 12));USART4->CR1 &= (~(0x1 << 28));//设置8位数据位USART4->CR1 &= (~(0x1 << 10));//无奇偶校验位USART4->CR1 &= (~(0x1 << 15));//x16采样率USART4->CR2 &= (~(0x3 << 12));//无停止位USART4->PRESC &= (~(0xf));//一级分配USART4->BRR = 0x22B;//115200USART4->CR1 |= (0x1 << 2);//读端使能USART4->CR1 |= (0x1 << 3);//写端使能USART4->CR1 |= 0x1;//UE使能}
//接收一个字符
char get_char()
{char ch;//检查接收寄存器是否有数据可读while(!(USART4->ISR & (0x1 << 5)));//接收字符ch = USART4->RDR;put_char(ch);return ch;
}
//接收一串字符
char buf[50] = "";
char *get_string()
{int i;for(i = 0;(buf[i] = get_char()) != '\r';i++);buf[i] = '\0';put_char('\n');put_char('\r');put_string(buf);return buf;
}
//发送一个字符
void put_char(const char ch)
{while(!(USART4->ISR & (0x1 << 7)));USART4->TDR = ch;while(!(USART4->ISR & (0x1 << 6)));
}
//发送一个字符串
void put_string(const char *sr)
{for(int i=0;sr[i] != '\0';i++){put_char(sr[i]);}put_char('\n');put_char('\r');
}
/*
//灯亮
void led_on(int i)
{switch(i){case 1:GPIOE->ODR |= (0x1 << 10);//led1亮break;case 2:GPIOF->ODR |= (0x1 << 10);//led2亮break;case 3:GPIOE->ODR |= (0x1 << 8);//led3亮break;}
}//灯灭
void led_off(int i)
{switch(i){case 1:GPIOE->ODR &= (~(0x1 << 10));//led1灭break;case 2:GPIOF->ODR &= (~(0x1 << 10));//led2灭break;case 3:GPIOE->ODR &= (~(0x1 << 8));//led3灭break;}
}*/
//比较字符串
int strcmp(char *arr,const char *src)
{while(*arr != '\0' || *src != '\0'){if(*arr == *src){arr++;src++;}else{return (*arr - *src);}}return 0;
}void hal_gpio_write(gpio_t* gpiox,unsigned int pin,status_t status)
{if(1 == status) gpiox->ODR |= (0x1 << pin);elsegpiox->ODR &= (~(0x1 << pin));
}cmd_t* find_command(char *string)
{for(int i=0;i < 6;i++){if(strcmp(cmd_arr[i].cmd,string) == 0){return &cmd_arr[i];}}return 0;
}

Main文件:

#include "new.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()
{led_init();uart4_init();put_string("start....");while(1){char *string = get_string();cmd_t *arr = find_command(string);if(0 == arr){printf("error commond\n");}else{arr->gpio_write_pin(arr->gpiox,arr->pin,arr->status);}        }return 0;
}

实现效果:

http://www.tj-hxxt.cn/news/90083.html

相关文章:

  • b2b网站大全前十名seo 网站排名
  • 做自媒体网站需要注册什么公司学电商哪个培训学校好
  • 比特币交易网站可以做空吗手机怎么搭建网站
  • 视频网站建设难吗优化绿松石什么意思
  • 网站建设中html下载青岛网站seo推广
  • 公司网站做一下多少钱百度一下你就知道了百度一下
  • 有效的网站建设搜狗推广管家
  • wordpress网站如何播放视频成都网站搜索排名优化公司
  • 用别人的二级域名做网站搜索关键词网站
  • 无锡专业做网站的公司有哪些能打开任何网站浏览器
  • 网站建设公司招聘面试廊坊seo排名
  • 邵东做网站百度手机助手下载
  • 网店怎么开怎么运营seo软件优化工具软件
  • 餐饮公司的网站建设西安seo服务
  • 在北京注册公司在哪个网站上广州seo关键词优化是什么
  • 返利网站怎么做的晚上国网app
  • 天津市建设工程信息网站百度网盘登录入口 网页
  • 网站建设有云端吗重庆森林壁纸
  • 网站建设中 英文最近的大新闻
  • 大气的网站模板钓鱼网站制作教程
  • 哪些网站做批发佛山全市核酸检测
  • 做网站要学点什么漯河网站推广公司
  • 维护一个网站优化大师
  • 目前做那些网站能致富南宁市优化网站公司
  • 广点通企业网站优化方案案例
  • 做爰网站爱情岛在线之家
  • 蝶山网站建设网络营销包括几个部分
  • 网站建设中页面模板企业网站设计
  • 做淘宝客需要自己建网站吗怎样利用互联网进行网络推广
  • 为什么小城市做不出来好的网站网站设计与制作公司