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

服务周到的上海网站建设公老闵行小学排名

服务周到的上海网站建设公,老闵行小学排名,在线网页代理搭建,阿里云可以建设多个网站题目#xff1a;通过操作Cortex-A7核#xff0c;串口输入相应的命令#xff0c;控制LED灯进行工作---上传CSDN 1.例如在串口输入led1on,开饭led1灯点亮 2.例如在串口输入led1off,开饭led1灯熄灭 3.例如在串口输入led2on,开饭led2灯点亮 4.例如在串口输入led2off,开饭led…题目通过操作Cortex-A7核串口输入相应的命令控制LED灯进行工作---上传CSDN 1.例如在串口输入led1on,开饭led1灯点亮 2.例如在串口输入led1off,开饭led1灯熄灭 3.例如在串口输入led2on,开饭led2灯点亮 4.例如在串口输入led2off,开饭led2灯熄灭 5.例如在串口输入led3on,开饭led3灯点亮 6.例如在串口输入led3off,开饭led3灯熄灭编程要求 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,...........)}代码mix.h#ifndef __MIX_H__ #define __MIX_H__ #include stm32mp1xx_rcc.h #include stm32mp1xx_gpio.h #include stm32mp1xx_uart.h #include gpio.h typedef struct { char* cmd_arr; gpio_t* gpiox; unsigned int pin; gpio_status_t status; void(*gpio_write_pin)(gpio_t* gpiox,unsigned int pin,gpio_status_t status); }cmd_t; void hal_mix_rcc(); void hal_mix_gpio(); void hal_mix_uart(); void func(); void hal_gpio_write(gpio_t* gpiox,unsigned int pin,gpio_status_t status); cmd_t* find_command(const char* str); char *get_string(); #endif mix.c#include mix.hextern void delay_ms(int ms); cmd_t cmd_arr[6] {[0]{.cmd_arrled1on,.gpioxGPIOE,.pinGPIO_PIN_10,.statusGPIO_SET_T,.gpio_write_pinhal_gpio_write,},[1]{.cmd_arrled1off,.gpioxGPIOE,.pinGPIO_PIN_10,.statusGPIO_RESET_T,.gpio_write_pinhal_gpio_write,},[2]{.cmd_arrled2on,.gpioxGPIOF,.pinGPIO_PIN_10,.statusGPIO_SET_T,.gpio_write_pinhal_gpio_write,},[3]{.cmd_arrled2off,.gpioxGPIOF,.pinGPIO_PIN_10,.statusGPIO_RESET_T,.gpio_write_pinhal_gpio_write,},[4]{.cmd_arrled3on,.gpioxGPIOE,.pinGPIO_PIN_8,.statusGPIO_SET_T,.gpio_write_pinhal_gpio_write,},[5]{.cmd_arrled3off,.gpioxGPIOE,.pinGPIO_PIN_8,.statusGPIO_RESET_T,.gpio_write_pinhal_gpio_write,} };void hal_mix_rcc() {RCC-MP_AHB4ENSETR|(0x11);RCC-MP_AHB4ENSETR|(0x14);RCC-MP_AHB4ENSETR|(0x15);RCC-MP_AHB4ENSETR|(0x16);RCC-MP_APB1LPENSETR|(0x116); } void hal_mix_gpio() {GPIOB-MODER(~(0x34));GPIOB-MODER|(0x24);GPIOG-MODER(~(0x322));GPIOG-MODER|(0x222);GPIOB-AFRL(~(0xf8));GPIOB-AFRL|(0x88);GPIOG-AFRH(~(0xf12));GPIOG-AFRH|(0x612);GPIOE-MODER(~(0x320));GPIOE-MODER|(0x120);GPIOF-MODER(~(0x320));GPIOF-MODER|(0x120);GPIOE-MODER(~(0x316));GPIOE-MODER|(0x116);GPIOE-OTYPER(~(0x110));GPIOF-OTYPER(~(0x110));GPIOE-OTYPER(~(0x18));GPIOE-OSPEEDR(~(0x320));GPIOF-OSPEEDR(~(0x320));GPIOE-OSPEEDR(~(0x316));GPIOE-PUPDR(~(0x320));GPIOF-PUPDR(~(0x320));GPIOE-PUPDR(~(0x316)); } void hal_led_on(int num) {switch(num){case 1:GPIOE-ODR|(0x110);break;case 2:GPIOF-ODR|(0x110);break;case 3:GPIOE-ODR|(0x18);break;} } void hal_led_off(int num) {switch(num) { case 1: GPIOE-ODR(~(0x110));break; case 2: GPIOF-ODR(~(0x110));break; case 3: GPIOE-ODR(~(0x18)); break; } } void hal_mix_uart() {delay_ms(20);USART4-CR1(~(0x10));USART4-CR1(~(0x128));USART4-CR1(~(0x112));USART4-CR1(~(0x115));USART4-CR1(~(0x110));USART4-CR2(~(0x312));USART4-PRESC(~(0xf0));USART4-BRR0x22B;USART4-CR1|(0x13);USART4-CR1|(0x12);USART4-CR1|(0x10); } void put_char(const char ch) {while(!(USART4-ISR(0x17)));USART4-TDRch;while(!(USART4-ISR(0x16))); } void put_string(const char *string) {int i0;char ch;while(1){chstring[i];put_char(ch);if(ch\0){break;}i;} } char get_char() {char ch;while(!(USART4-ISR(0x15)));chUSART4-RDR; return ch; } char buffer[20]; char *get_string() {for(int i0;i19;i){buffer[i]get_char();put_char(buffer[i]);if(buffer[i]\r){put_char(\n);buffer[i]\0;break;}}return buffer; } int my_strcmp(const char *a,char *b) {int i0;int j0;while(*(ai)!\0*(bj)!\0*(ai)*(bj)){i;j;}return *(ai)-*(bj); } void buffer_clear() {for(int i0;i20;i){buffer[i]0;} } void func() {get_string();if(my_strcmp(buffer,led1on)0){hal_led_on(1);}else if(my_strcmp(buffer,led1off)0){hal_led_off(1);}else if(my_strcmp(buffer,led2on)0){hal_led_on(2);}else if(my_strcmp(buffer,led2off)0){hal_led_off(2);}else if(my_strcmp(buffer,led3on)0){hal_led_on(3);}else if(my_strcmp(buffer,led3off)0){hal_led_off(3);} } void hal_gpio_write(gpio_t* gpiox,unsigned int pin,gpio_status_t status) {if(statusGPIO_SET_T){gpiox-ODR|(0x1pin);}else{gpiox-ODR(~(0x1pin));} } cmd_t* find_command(const char* str) {//串口中输入的字符串与结构体中每个元素中的cmd_arr变量进行比较//遍历比较自己编写strcmp比较的函数 for(int i0;i6;i){if(my_strcmp(str,cmd_arr[i].cmd_arr)0){return cmd_arr[i];}}return 0;//失败返回0 } main.c #include mix.hextern 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(){hal_mix_rcc(); hal_mix_gpio(); hal_mix_uart(); cmd_t* cmd_arr1;while(1){char* string get_string();cmd_arr1 find_command(string);if(cmd_arr1 0){ printf(find warning\n); }else{cmd_arr1-gpio_write_pin(cmd_arr1-gpiox,\cmd_arr1-pin,\cmd_arr1-status); }}return 0;}运行结果
http://www.hkea.cn/news/14592336/

相关文章:

  • 网站建设技术方面平台网站建设需求
  • 做网站是如何实施的网站平台做推广
  • 在哪个网站做外快设计定制网站建设服务
  • 江苏网站seo平台湖北企业建站系统信息
  • 儿童 网站 设计wordpress购物主题
  • 网站空间要备案吗建筑模板公司
  • 不错的网站建设公seo的优化步骤
  • 怎么给公司免费做网站济南三合一网站建设
  • 网站死了怎么办做网站开发的是不是程序员
  • 利用免费网站做SEO建设银行悦生活网站
  • 上海缘魁网站建设做平面哪个网站的素材最好
  • 请问聊城网站建设邢台区域最新调整
  • 广州品牌型网站10m网站空间
  • 招聘网站销售怎么做网上下的网站模版后门
  • 深圳坂田做网站互联网销售平台
  • 房价2024年暴跌排名优化怎么做
  • wap网站开发多少钱wordpress博客推荐
  • 中小企业网站开发韵茵网址转化短链接
  • 网站建设推广选stso88效果好代刷网站是怎么做的
  • 网站切换语言怎么做wordpress当前菜单
  • 专门 做鞋子团购的网站有哪些绵阳低价网站建设
  • mvc 门户网站开发框架北京网站建设哪个好
  • 网易严选的网站建设网站做多长时间才有流量
  • 视频网站代言人福州专业做网站
  • 建站大师管理类培训课程
  • 网站建设专业的有哪些有没有做网站
  • iis下建立asp网站wordpress论坛优化
  • 网站 被攻击_主业篡改 被黑了 织梦做的站app外包平台的服务水平
  • 网站如何跟域名绑定做博客网站
  • 门头沟营销型网站建设东营利津网站建设