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

布吉附近网站建设通辽市网站建设

布吉附近网站建设,通辽市网站建设,网站 公众号 建设方案,seo外链怎么做能看到效果1.通过操作Cortex-A7核#xff0c;串口输入相应的命令#xff0c;控制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结构体数组 方式1cmd_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.htypedef 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.hcmd_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 | (0x11); //GPIOB使能RCC-MP_AHB4ENSETR | (0x16); //GPIOG使能//RCC_APB1ENSETRRCC-MP_APB1ENSETR | (0x116); //UART4使能//GPIOBGPIOB-MODER (~(0x34)); //GPIOB_MODER设置复用功能模式GPIOB-MODER | (0x15);GPIOB-AFRL (~(0xf8)); //设置GPIOB引脚功能复用模式 GPIOB-AFRL | (0x111);//GPIOGGPIOG-MODER (~(0x322)); //GPIOG_MODER设置复用功能模式GPIOG-MODER | (0x123);GPIOG-AFRH (~(0xf12)); //设置GPIOG引脚功能复用模式 GPIOG-AFRH | (0x313);//uart初始化USART4-CR1 (~(0x10)); //判断UE是否等于0USART4-CR1 (~(0x112)); USART4-CR1 (~(0x128)); //设置数据位宽度为8位USART4-CR2 (~(0x312)); //设置1位停止位USART4-CR1 (~(0x115)); //设置16倍采样率USART4-CR1 (~(0x110)); //设置串口无奇偶位USART4-BRR 0x22B;USART4-CR1 (~(0x13)); USART4-CR1 | (0x13); //发送使能USART4-CR1 (~(0x12)); USART4-CR1 | (0x12); //接收器使能USART4-PRESC (~(0xf0)); //一级分配USART4-CR1 | (0x10); //UART使能 }//LED初始化 void LED_init(gpio_t* GPIOX,unsigned int PIN){//RCC_AHB4ENSETRif(GPIOX GPIOE){RCC-MP_AHB4ENSETR | (0x14); //GPIOE使能}else{RCC-MP_AHB4ENSETR | (0x15); //GPIOF使能}//GPIOXGPIOX-MODER (~(0x3(PIN*2))); //设置输出模式GPIOX-MODER | (0x1(PIN*2));GPIOX-OTYPER (~(0x1PIN)); //设置推挽输出GPIOX-OSPEEDR (~(0x3(PIN*2))); //设置低速输出模式GPIOX-PUPDR (~(0x3(PIN*2))); //设置禁止上下拉电阻} //发送一个字符 void put_char(const char ch){//判断发送寄存器是否为空while(!(USART4-ISR (0x17)));//将数据放入发送寄存器中USART4-TDR ch;//如果字符是\n则再发送一个回车\rif(ch \n){while(!(USART4-ISR (0x17)));USART4-TDR \r;}//判断一帧数据是否发送成功while(!(USART4-ISR (0x16)));} //接收一个字符 char get_char(){char ch;//判断接收数据寄存器是否为空while(!(USART4-ISR (0x15)));//将接收到的数据放入接收数据寄存器中ch USART4-RDR;return ch; } //发送一个字符串 void put_string(const char* str){//循环发送字符for(int i0; 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(i0; (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){ //如果num1则点亮灯GPIOX-ODR | (0x1PIN);}else{ //否则熄灭灯GPIOX-ODR (~(0x1PIN));} } //字符串比较函数 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 i0; i6;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://www.dnsts.com.cn/news/111945.html

相关文章:

  • 搭建网站用什么软件wordpress菜单图标美化
  • 网站开发的基本流程知名网站制作企业
  • 商城县建设局网站手机怎么建设视频网站
  • 经典的响应式布局网站东莞著名网站建设
  • php网站开发要学什么网站建设动态页面修改删除
  • 做网站美工排版wordpress主题seo
  • 深圳微信网站开发ppt制作软件手机版下载免费
  • 能自己做谱子的网站wordpress 多数据库
  • 网站建设与推广推荐大型网站快速排名
  • 免费网站建设企业东菀高端网站建设
  • 网站建设与管理实验目的门户网站建设采购
  • 一站多通怎么做网站成都不能去的建筑设计公司
  • 自己的商标名称可以做网站名称吗推荐6个免费国外自媒体平台
  • 如何做360搜索网站织梦后台 data移除后 网站无法打开
  • 哪个网站可以做奖状郑州做网站优化的公司
  • 聚企360做的网站做汽车售后的网站
  • 营口工程建设信息网站找人做彩票网站多少钱
  • 高端网站建设与制作wordpress边栏显示头像
  • 中国空间站扩建大气的企业网站
  • 安徽网站建设整体策划方案百度指数总结
  • 中国免费网站服务器下载地址公司logo在线设计免费
  • 网站附件下载表格怎么做wordpress换主题报错
  • 网站备案需要当面核验哪些信息网站建设学习心得
  • 网站开发费属于无形资产商城网站开发费用一般是多少
  • 微信建立免费网站吗北京活动策划公司黄页
  • 做网站干嘛下列哪些不属于企业网站建设基本原则
  • 综合商城网站程序京东商城官方旗舰店
  • 网站推广策划的思路包括哪些滨海专业做网站
  • 网站开发的就业简述seo和sem的区别与联系
  • 律师网站建站开发软件需要什么条件