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

网站推广都有哪些微商网站

网站推广都有哪些,微商网站,华硕建设公司网站,免费做那个的视频网站好1.实验目的 编写LED灯的驱动#xff0c;在应用程序中编写控制LED灯亮灭的代码逻辑实现LED灯功能的控制#xff1b; 2.LED灯相关寄存器分析 LED1-PE10 LED1亮灭#xff1a; RCC寄存器[4]-1 0X50000A28 GPIOE_MODER[21:20]-01 (输出) 0X50006000 GPIOE_ODR[10]-在应用程序中编写控制LED灯亮灭的代码逻辑实现LED灯功能的控制 2.LED灯相关寄存器分析 LED1-PE10 LED1亮灭 RCC寄存器[4]-1 0X50000A28 GPIOE_MODER[21:20]-01 (输出) 0X50006000 GPIOE_ODR[10]-1(输出高电平) 0输出低电平0X50006014 LED2-PF10 LED2亮灭 RCC寄存器[5]-1 0X50000A28 GPIOE_MODER[21:20]-01 (输出) 0X50006000 GPIOE_ODR[10]-1(输出高电平) 0输出低电平0X50006014 LED3-PE8 LED3亮灭 RCC寄存器[4]-1 0X50000A28 GPIOE_MODER[17:16]-01 (输出) 0X50006000 GPIOE_ODR[8]-1(输出高电平) 0输出低电平0X50006014 GPIOE_OTYPER默认为00 GPIOE_PUPDR默认为0 GPIOE_OSPEEDR默认为00 3.编写代码 ---Makefile---工程管理文件 modname?demo arch?arm ifeq ($(arch),arm) KERNELDIR: /home/ubuntu/FSMP1A/linux-stm32mp-5.10.61-stm32mp-r2-r0/linux-5.10.61 #编译生成ARM架构 else KERNELDIR:/lib/modules/$(shell uname -r)/build #编译生成X86架构 endifPWD:$(shell pwd) #模块化编译文件路径 all:make -C $(KERNELDIR) M$(PWD) modules clean:make -C $(KERNELDIR) M$(PWD) cleanobj-m:$(modname).o---head.h---头文件 #ifndef __HEAD_H__ #define __HEAD_H__typedef struct {unsigned int MODER;unsigned int OTYPER;unsigned int OSPEEDR;unsigned int PUPDR;unsigned int IDR;unsigned int ODR; }gpio_t;//LED1和LED3寄存器地址 #define LED1_ADDR 0x50006000 #define LED2_ADDR 0x50007000 #define LED3_ADDR 0x50006000 #define RCC_ADDR 0x50000A28#endif ---mychrdev.c---驱动程序 #include linux/init.h #include linux/module.h #include linux/fs.h #include linux/uaccess.h #include linux/io.h #include head.h #includelinux/device.hchar kbuf[128] {0}; unsigned int major; gpio_t *vir_led1; gpio_t *vir_led2; gpio_t *vir_led3; unsigned int *vir_rcc;struct class *cls; struct device *dev;//封装操作方法 int mycdev_open(struct inode *inode, struct file *file) {printk(%s:%s:%d\n,__FILE__,__func__,__LINE__);return 0; }ssize_t mycdev_read(struct file *file, char *ubuf, size_t size, loff_t *lof) {int ret;if(size sizeof(kbuf)){size sizeof(kbuf);}ret copy_to_user(ubuf,kbuf,size);if(ret){printk(copy_to_user err\n);return -EIO;}return 0; } ssize_t mycdev_write(struct file *file, const char *ubuf, size_t size, loff_t *lof) {unsigned long ret;if(size sizeof(kbuf)){size sizeof(kbuf);}ret copy_from_user(kbuf,ubuf,size);if(ret){printk(copy_from_user err\n); return -EIO; }switch(kbuf[0]){case 1:if(kbuf[1] 1) //开灯vir_led1-ODR | (0x1 10);else if(kbuf[1] 0) //关灯vir_led1-ODR (~(0x1 10));break;case 2:if(kbuf[1] 1) //开灯vir_led2-ODR | (0x1 10);else if(kbuf[1] 0) //关灯vir_led2-ODR (~(0x1 10));break;case 3:if(kbuf[1] 1) //开灯vir_led3-ODR | (0x1 8);else if(kbuf[1] 0) //关灯vir_led3-ODR (~(0x1 8));break;default:printk(输入错误\n); }return 0; } int mycdev_close(struct inode *inode, struct file *file) {printk(%s:%s:%d\n,__FILE__,__func__,__LINE__);return 0; }struct file_operations fops{.openmycdev_open,.readmycdev_read,.writemycdev_write,.releasemycdev_close, };//相关寄存器地址映射及初始化 int all_led_init(void) {//相关寄存器的内存映射vir_led1ioremap(LED1_ADDR,sizeof(gpio_t));if(vir_led1 NULL){printk(物理内存映射失败%d\n,__LINE__);return -ENOMEM;}vir_led2ioremap(LED2_ADDR,sizeof(gpio_t));if(vir_led2 NULL){printk(物理内存映射失败%d\n,__LINE__);return -ENOMEM;}vir_led3 vir_led1;vir_rccioremap(RCC_ADDR,4);if(vir_rcc NULL){printk(物理内存映射失败%d\n,__LINE__);return -ENOMEM;}printk(寄存器内存映射成功\n);//硬件寄存器的初始化(*vir_rcc) | (0x3 4);//LED1vir_led1-MODER (~(0x3 20));vir_led1-MODER | (0x1 20);vir_led1-ODR (~(0x1 10));//LED2vir_led2-MODER (~(0x3 20));vir_led2-MODER | (0x1 20);vir_led2-ODR (~(0x1 10));//LED3vir_led3-MODER (~(0x3 16));vir_led3-MODER | (0x1 16);vir_led3-ODR (~(0x1 8));printk(寄存器初始化成功\n);return 0; }//入口函数 static int __init mycdev_init(void) {major register_chrdev(0,mychrdev,fops);if(major 0){printk(字符设备驱动注册失败\n);return major;}printk(字符设备驱动注册成功:major%d\n,major);//寄存器映射及初始化all_led_init();//向上提交目录cls class_create(THIS_MODULE,mychrdev);if(IS_ERR(cls)){printk(向上提交目录失败\n);return -PTR_ERR(cls);}printk(向上提交目录成功\n);//向上提交设备节点信息int i;for(i0; i3; i){dev device_create(cls,NULL,MKDEV(major,i),NULL,mychrdev%d,i);if(IS_ERR(dev)){printk(向上提交设备节点信息失败\n);return -PTR_ERR(dev);}}printk(向上提交设备节点信息成功\n);return 0; }//出口函数 static void __exit mycdev_exit(void) {//销毁设备节点信息int i;for(i0; i3; i){device_destroy(cls,MKDEV(major,i));}//销毁目录信息class_destroy(cls);//取消物理内存的映射iounmap(vir_led1);iounmap(vir_led2);iounmap(vir_rcc);//字符设备驱动注销unregister_chrdev(major,mychrdev); }//声明 //入口函数地址 module_init(mycdev_init); //出口函数地址 module_exit(mycdev_exit); //遵循的GPL协议 MODULE_LICENSE(GPL); ---test.c---应用程序测试程序 #include stdio.h #include sys/types.h #include sys/stat.h #include fcntl.h #include unistd.h #include stdlib.h #include string.hint main(int argc,char const *argv[]) {char buf[128]{0};int fd open(/dev/mychrdev0,O_RDWR);if(fd 0){printf(设备文件打开失败\n);exit(-1);}while(1){printf(第一个字符1(LED1) 2(LED2) 3(LED3)\n);printf(第二个字符1(开灯)0(关灯)\n);printf(输入控制灯的两个字符 );fgets(buf,sizeof(buf),stdin);buf[strlen(buf)-1] \0;//像设备文件中写write(fd,buf,sizeof(buf));}close(fd);return 0; } 4.测试
http://www.hkea.cn/news/14544672/

相关文章:

  • 电商平台网站建设网站跳转站代码
  • 移动网站 制作建设企业网站的
  • 网站改版 数据迁移wordpress付费汉化主题
  • 温州做外贸网站湖南建设局网站
  • seo竞争对手网站分析沈阳网势科技有限公司怎么样
  • wordpress图片整站如何用手机做网站
  • 郑州网站建设求职简历做网站怎么云存储
  • 网站备案号密码网站建设网站徒手整形
  • 建设邮费自己的网站 要不要购买服务器的wordpress 置顶
  • 基于asp网站开发 论文有人知道网站怎么做吗
  • dedecms三合一网站源码笑话网站源码下载
  • 网站程上传php网站开发小程序
  • 网站建设 实施计划网站建设沟通
  • 网站建设的合理建议南通网站制作公司
  • 知名网站建设制作阳江招聘网最新招聘2023
  • 网站一元空间有哪些呀帮忙建网站的人
  • 电子商务网站建设功能wordpress 变更域名
  • 修机械师怎么做我小样网站角仰望阿里云 企业 网站
  • 做网站需要学什么软件wordpress 文章调用
  • 本地网站怎么建设怎么申请小程序流程
  • sns社交网站三原网站开发
  • 网站建设 应酷wordpress关于
  • 网站开发就业培训班4399游戏官网
  • 做短视频的网站卖汽车的网站怎么做的吗
  • 晋江市住房与城乡建设局网站好看又免费的图片素材
  • 河北省建设厅网站备案网络网站建设10大指标
  • 江苏网站建设哪家有破解wordpress可见
  • jsp网站服务建设是什么株洲网站制作与设计
  • 电商网站 服务器网站开发与实现文献综述
  • 商务网站建设流程步骤东莞百度seo服务公司