360网站卖东西怎么做电商系统开发公司

diannao/2026/1/24 14:59:57/文章来源:
360网站卖东西怎么做,电商系统开发公司,加强网站建设 统计局,wix wordpress1.模仿 STM32 寄存器定义 为了开发方便#xff0c; ST 官方为 STM32F103 编写了一个叫做 stm32f10x.h 的文件#xff0c;在这个文件 里面定义了 STM32F103 所有外设寄存器#xff0c;我们可以使用其定义的寄存器来进行开发#xff0c;比如我 们可以用如下代码来初始…1.模仿 STM32 寄存器定义 为了开发方便 ST 官方为 STM32F103 编写了一个叫做 stm32f10x.h 的文件在这个文件 里面定义了 STM32F103 所有外设寄存器我们可以使用其定义的寄存器来进行开发比如我 们可以用如下代码来初始化一个 GPIO 上述代码是初始化 STM32 的 PE5 这个 GPIO 为推挽输出需要配置的就是 GPIOE 的寄存 器 CRL 和 ODR “GPIOE”的定义 可以看出“ GPIOE ”是个宏定义是一个指向地址 GPIOE_BASE 的结构体指针结构体为 GPIO_TypeDef GPIO_TypeDef 和 GPIOE_BASE 的定义如下 上述定义中 GPIO_TypeDef 是个结构体结构体里面的成员变量有 CRL 、 CRH 、 IDR 、 ODR 、 BSRR、 BRR 和 LCKR 这些都是 GPIO 的寄存器每个成员变量都是 32 位 (4 字节 ) 这些寄存 器在结构体中的位置都是按照其地址值从小到大排序的。GPIOE_BASE 就是 GPIOE 的基地址 其为 GPIOE_BASE 的基地址为 0x40011800 宏 GPIOE 指向这个地址因此 GPIOE 的寄存器 CRL 的地址就是 0X40011800 寄存器 CRH 的地址就是 0X4001180040X40011804 其他寄存 器地址以此类推。我们要操作 GPIOE 的 ODR 寄存器的话就可以通过“ GPIOE-ODR ”来实现 这个方法是借助了结构体成员地址连续递增的原理。 2.I.MX6U 寄存器定义  1、编写外设结构体 先将同属于一个外设的所有寄存器编写到一个结构体里面如 IO 复用寄存器组的结构体 如下 //示例代码 11.1.2.1 寄存器 IOMUX_SW_MUX_Type /* * IOMUX 寄存器组*/ 1 typedef struct 2 { 3 volatile unsigned int BOOT_MODE0; 4 volatile unsigned int BOOT_MODE1; 5 volatile unsigned int SNVS_TAMPER0; 6 volatile unsigned int SNVS_TAMPER1; ……… 107 volatile unsigned int CSI_DATA00; 108 volatile unsigned int CSI_DATA01; 109 volatile unsigned int CSI_DATA02; 110 volatile unsigned int CSI_DATA03; 111 volatile unsigned int CSI_DATA04; 112 volatile unsigned int CSI_DATA05; 113 volatile unsigned int CSI_DATA06; 114 volatile unsigned int CSI_DATA07; /* 为了缩短代码其余 IO 复用寄存器省略 */ 115}IOMUX_SW_MUX_Tpye; 上述结构体 IOMUX_SW_MUX_Type 就是 IO 复用寄存器组成员变量是每个 IO 对应的复 用寄存器每个寄存器的地址是 32 位每个成员都使用“ volatile ”进行了修饰目的是防止编 译器优化。 2、定义 IO 复用寄存器组的基地址 根据结构体 IOMUX_SW_MUX_Type 的定义其第一个成员变量为 BOOT_MODE0 也就 是 BOOT_MODE0 这个 IO 的 IO 复用寄存器查找 I.MX6U 的参考手册可以得知其地址为 0X020E0014 所以 IO 复用寄存器组的基地址就是 0X020E0014定义如下 3、定义访问指针  访问指针定义如下 通过上面三步我们就可以通过“ IOMUX_SW_MUX-GPIO1_IO03 ”来访问 GPIO1_IO03 的 IO 复用寄存器 4.实验程序编写  本实验对应的例程路径为 开发板光盘 - 1 、裸机例程 - 3_ledc_stm32 。 创建 VSCode 工程工作区名字为“ ledc_stm32 ”新建三个文件 start.S 、 main.c 和 imx6ul.h 。 其中 start.S 是汇编文件 start.S 文件的内容和第十章的 start.S 一样直接复制过来就可以。 main.c 和 imx6ul.h 是 C 文件完成以后如图 文件 imx6ul.h 用来存放外设寄存器定义在 imx6ul.h 中输入如下代码 /* * 外设寄存器组的基地址 */ 1 #define CCM_BASE (0X020C4000) 2 #define CCM_ANALOG_BASE (0X020C8000) 3 #define IOMUX_SW_MUX_BASE (0X020E0014) 4 #define IOMUX_SW_PAD_BASE (0X020E0204) 5 #define GPIO1_BASE (0x0209C000) 6 #define GPIO2_BASE (0x020A0000) 7 #define GPIO3_BASE (0x020A4000) 8 #define GPIO4_BASE (0x020A8000) 9 #define GPIO5_BASE (0x020AC000) 10 11 /* 12 * CCM 寄存器结构体定义分为 CCM 和 CCM_ANALOG 13 */ 14 typedef struct 15 { 16 volatile unsigned int CCR; 17 volatile unsigned int CCDR; 18 volatile unsigned int CSR; …… 46 volatile unsigned int CCGR6; 47 volatile unsigned int RESERVED_3[1]; 48 volatile unsigned int CMEOR; 49 } CCM_Type; 50 51 typedef struct 52 { 53 volatile unsigned int PLL_ARM; 54 volatile unsigned int PLL_ARM_SET; 55 volatile unsigned int PLL_ARM_CLR; 56 volatile unsigned int PLL_ARM_TOG; …… 110 volatile unsigned int MISC2; 111 volatile unsigned int MISC2_SET; 112 volatile unsigned int MISC2_CLR; 113 volatile unsigned int MISC2_TOG; 114 } CCM_ANALOG_Type; 115 116 /* 117 * IOMUX 寄存器组 118 */ 119 typedef struct 120 { 121 volatile unsigned int BOOT_MODE0; 122 volatile unsigned int BOOT_MODE1; 123 volatile unsigned int SNVS_TAMPER0; …… 241 volatile unsigned int CSI_DATA04; 242 volatile unsigned int CSI_DATA05; 243 volatile unsigned int CSI_DATA06; 244 volatile unsigned int CSI_DATA07; 245 }IOMUX_SW_MUX_Type; 246 247 typedef struct 248 { 249 volatile unsigned int DRAM_ADDR00; 250 volatile unsigned int DRAM_ADDR01; 419 volatile unsigned int GRP_DDRPKE; 420 volatile unsigned int GRP_DDRMODE; 421 volatile unsigned int GRP_DDR_TYPE; 422 }IOMUX_SW_PAD_Type; 423 424 /* 425 * GPIO 寄存器结构体 426 */ 427 typedef struct 428 { 429 volatile unsigned int DR; 430 volatile unsigned int GDIR; 431 volatile unsigned int PSR; 432 volatile unsigned int ICR1; 433 volatile unsigned int ICR2; 434 volatile unsigned int IMR; 435 volatile unsigned int ISR; 436 volatile unsigned int EDGE_SEL; 437 }GPIO_Type; 438 439 440 /* 441 * 外设指针 442 */ 443 #define CCM ((CCM_Type *)CCM_BASE) 444 #define CCM_ANALOG ((CCM_ANALOG_Type *)CCM_ANALOG_BASE) 445 #define IOMUX_SW_MUX ((IOMUX_SW_MUX_Type *)IOMUX_SW_MUX_BASE) 446 #define IOMUX_SW_PAD ((IOMUX_SW_PAD_Type *)IOMUX_SW_PAD_BASE) 447 #define GPIO1 ((GPIO_Type *)GPIO1_BASE) 448 #define GPIO2 ((GPIO_Type *)GPIO2_BASE) 449 #define GPIO3 ((GPIO_Type *)GPIO3_BASE) 450 #define GPIO4 ((GPIO_Type *)GPIO4_BASE) 451 #define GPIO5 ((GPIO_Type *)GPIO5_BASE) 在编写寄存器组结构体的时候注意寄存器的地址是否连续有些外设的寄存器地址可能不 是连续的会有一些保留地址因此我们需要在结构体中留出这些保留的寄存器。这个就是 第 47 行 RESERVED_3[1] 的来源。 如果不添加保留位来占位的话就会导致寄存器地址错位 main.c 文件中输入如下所示内容 1 #include imx6ul.h 2 3 /* 4 * description : 使能 I.MX6U 所有外设时钟 5 * param : 无 6 * return : 无 7 */ 8 void clk_enable(void) 9 { 10 CCM-CCGR0 0XFFFFFFFF; 11 CCM-CCGR1 0XFFFFFFFF; 12 CCM-CCGR2 0XFFFFFFFF; 13 CCM-CCGR3 0XFFFFFFFF; 14 CCM-CCGR4 0XFFFFFFFF; 15 CCM-CCGR5 0XFFFFFFFF; 16 CCM-CCGR6 0XFFFFFFFF; 17 } 18 19 /* 20 * description : 初始化 LED 对应的 GPIO 21 * param : 无 22 * return : 无 23 */ 24 void led_init(void) 25 { 26 /* 1、初始化 IO 复用 */ 27 IOMUX_SW_MUX-GPIO1_IO03 0X5; /* 复用为 GPIO1_IO03 */ 28 29 30 /* 2、配置 GPIO1_IO03 的 IO 属性 31 *bit 16:0 HYS 关闭 32 *bit [15:14]: 00 默认下拉 33 *bit [13]: 0 kepper 功能 34 *bit [12]: 1 pull/keeper 使能 35 *bit [11]: 0 关闭开路输出 36 *bit [7:6]: 10 速度 100Mhz 37 *bit [5:3]: 110 R0/6 驱动能力 38 *bit [0]: 0 低转换率 39 */ 40 IOMUX_SW_PAD-GPIO1_IO03 0X10B0; 41 42 43 /* 3、初始化 GPIO */ 44 GPIO1-GDIR 0X0000008; /* GPIO1_IO03 设置为输出 */ 45 46 /* 4、设置 GPIO1_IO03 输出低电平打开 LED0 */ 47 GPIO1-DR ~(1 3); 48 49 } 50 51 /* 52 * description : 打开 LED 灯 53 * param : 无 54 * return : 无 55 */ 56 void led_on(void) 57 { 58 /* 将 GPIO1_DR 的 bit3 清零 */ 59 GPIO1-DR ~(13); 60 } 61 62 /* 63 * description : 关闭 LED 灯 64 * param : 无 65 * return : 无 66 */ 67 void led_off(void) 68 { 69 /* 将 GPIO1_DR 的 bit3 置 1 */ 70 GPIO1-DR | (13); 71 } 72 73 /* 74 * description : 短时间延时函数 75 * param - n : 要延时循环次数(空操作循环次数模式延时) 76 * return : 无 77 */ 78 void delay_short(volatile unsigned int n) 79 { 80 while(n--){} 81 } 82 83 /* 84 * description : 延时函数,在 396Mhz 的主频下 85 * 延时时间大约为 1ms 86 * param - n : 要延时的 ms 数 87 * return : 无 88 */ 89 void delay(volatile unsigned int n) 90 { 91 while(n--) 92 { 93 delay_short(0x7ff); 94 } 95 } 96 97 /* 98 * description : main 函数 99 * param : 无 100 * return : 无 101 */ 102 int main(void) 103 { 104 clk_enable(); /* 使能所有的时钟 */ 105 led_init(); /* 初始化 led */ 106 107 while(1) /* 死循环 */ 108 { 109 led_off(); /* 关闭 LED */ 110 delay(500); /* 延时 500ms */ 111 112 led_on(); /* 打开 LED */ 113 delay(500); /* 延时 500ms */ 114 } 115 116 return 0; 117 } main.c 中 7 个函数这 7 个函数的含义和第十章中的 main.c 文件一样只是函数体写法变 了寄存器的访问采用 imx6ul.h 中定义的外设指针。比如第 27 行设置 GPIO1_IO03 的复用功能就可以通过“IOMUX_SW_MUX-GPIO1_IO03 ”来给寄存 SW_MUX_CTL_PAD_GPIO1_IO03 赋值。 编译下载验证  编写 Makefile 和链接脚本 Makefile 文件的内容 1 objs : start.o main.o 2 3 ledc.bin:$(objs) 4 arm-linux-gnueabihf-ld -Timx6ul.lds -o ledc.elf $^ 5 arm-linux-gnueabihf-objcopy -O binary -S ledc.elf $ 6 arm-linux-gnueabihf-objdump -D -m arm ledc.elf ledc.dis 7 8 %.o:%.s 9 arm-linux-gnueabihf-gcc -Wall -nostdlib -c -O2 -o $ $ 10 11 %.o:%.S 12 arm-linux-gnueabihf-gcc -Wall -nostdlib -c -O2 -o $ $ 13 14 %.o:%.c 15 arm-linux-gnueabihf-gcc -Wall -nostdlib -c -O2 -o $ $ 16 17 clean: 18 rm -rf *.o ledc.bin ledc.elf ledc.dis 编译下载 使用 Make 命令编译代码编译成功以后使用软件 imxdownload 将编译完成的 ledc.bin 文 件下载到 SD 卡中命令如下 烧写成功以后将 SD 卡插到开发板的 SD 卡槽中然后复位开发板如果代码运行正常的 话 LED0 就会以 500ms 的时间间隔亮灭

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/88618.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

商城开发网站无锡高端网站设计

地毯填补问题 题目描述 相传在一个古老的阿拉伯国家里,有一座宫殿。宫殿里有个四四方方的格子迷宫,国王选择驸马的方法非常特殊,也非常简单:公主就站在其中一个方格子上,只要谁能用地毯将除公主站立的地方外的所有地…

用rem做移动网站电脑室内装修设计软件

最近在复习数据结构,早上刚复习完链表,就想到了学生信息管理系统这个经典的大作业,然后呢,花了一早上加一中午的功夫给重新实现了一遍,里面可能会有写的不好的地方,但也代表了我实现的一些想法,在这里我将分享出来。我…

网站空间内存我的世界做壁纸的网站

目录 前言: 题单: P3386 【模板】二分图最大匹配 P1525 [NOIP2010 提高组] 关押罪犯 P3385 【模板】负环 P3371 【模板】单源最短路径(弱化版) SPFA写法 Dij写法: P3385 【模板】负环 P5960 【模板】差分约束…

中小学生做试卷的网站6阿联酋网站后缀

当我们使用float来使元素并排显示的时候,可以使用margin来控制元素之间的距离,而在很多版式里(例如产品图片的列表),需要浮动的元素达到两端对齐的效果,如图1所示。 图1 两端对齐的版式 单纯使用float:left…

做美食直播哪个网站最好网站备案不通过怎么解决

RTlinux主要的api函数实时应用程序分为两部分,内核部分和应用部分,应用部分需要和内核部分通过FIFO进行数据交换和控制,除此之外和一般应用程序没有太多区别,内核部分比较复杂,程序以模块方式挂入内核,这部分程序的编写需要对底层的东西有较高的要求,除了掌握RTLinux的API以外还…

Mac怎么搭建网站开发环境科技创新导报

一、JVM 1、jvm的内存组成 五大内存区域,分1.7和1.8 1.堆内存:引用类型的数据,内部组成:1.新生代(伊甸区和幸存者区)2.老年代。该区域经常发生垃圾回收的操作 堆是JVM中最大的一块内存区域,用…

网站开发研发工程师岗位职责成都网站推广哪家专业

1. ActionContext ActionContext是被存放在当前线程中的,获取ActionContext也是从ThreadLocal中获取的。所以在执行拦截器、 action和result的过程中,由于他们都是在一个线程中按照顺序执行的,所以可以可以在任意时候在ThreadLocal中获取 Act…

免费企业自助建站信息发布网网络营销的主要内容是什么

💡本篇内容:YOLOv8改进PIoU损失函数:PIoU v2损失增强了专注于中等质量锚盒的能力,v1版本使用非单调聚焦机制更直接、更快的边界框回归损失 💡附改进源代码及教程,用来改进🚀PIoU损失函数 Powerful-IoU损失函数论文地址:https://www.sciencedirect.com/science/art…

淘客网站开发源代码wordpress漂亮手机网站模板

之前的文章记录了oracle客户端和服务端的下载与安装,内容参见: 在Windows中安装Oracle_windows安装oracle 如果不想安装oracle客户端(或者是电脑因为某些原因无法安装oracle客户端),还想能够连接oracle远程服务&#…

健网站怎样建十大ui培训机构

DB-GPT:彻底改变数据库与私有LLM技术的交互 智能SQL生成:后端技术与LLM的完美结合 智能SQL生成:后端技术与LLM的完美结合_llm sql-CSDN博客 GitHub - eosphoros-ai/DB-GPT: AI Native Data App Development framework with AWEL(Agentic Wor…

后台网站下载做高端网站建设公司

学习了解PHP中Memcached扩展的使用 说实话,在目前的开发环境中,使用 Memcache 的项目还真的不多。在 Redis 大行其道的今天,Memcache 的衰退也可以说是大势所趋。不过,可能很多刚开始学习 PHP 的新同学不知道,当年在 L…

皮具网站设计把WordPress搬家

广度优先搜索(BFS)在JavaScript编程中有许多实际应用场景,特别是在解决图、树等数据结构相关问题时非常常见。在JavaScript中,可以使用队列来实现广度优先搜索算法。通过将起始节点加入队列,然后迭代地将节点的邻居节点…

教学网站建设与管理局网站

我给VBA的定义:VBA是个人小型自动化处理的有效工具。利用好了,可以大大提高自己的工作效率,而且可以提高数据的准确度。我的教程一共九套,分为初级、中级、高级三大部分。是对VBA的系统讲解,从简单的入门,到…

内蒙古网站建设电话网站页面设计与制作实践

网关和路由器是数据通信行业被广泛使用的通信设备,它们都是网络连接的组成部分。那么,4G物联网网关和传统工业路由器有哪些区别呢?接下来飞畅科技的小编就来为大家详细介绍下4G物联网网关和工业路由器的区别,一起来看看吧&#xf…

制作网站是什么专业注册个人工作室流程及费用

今天带大家做川菜系中的 水煮牛肉 这个菜是比较费辣椒的 制作成本相对一般菜来说 会高一些 一块牛肉 泡水划冰 从超时买的干腐竹 切成小片 温水浸泡五分钟 泡软它 然后捞出来 去干水分 牛肉切片 尽量切薄一点 三瓣左右蒜 一块生姜 去皮切末 牛肉中下入 一个鸡蛋 小半勺…

社保减员要怎么做 国税局网站全网搜索引擎

说到vivo X27,相信很多小伙伴都会第一时间想到其帅气的颜值以及强悍的拍照!的确,就颜值来说,vivo X27凭借着升降式摄像头、零界全面屏、不凸出的后置三摄以及孔雀纹理的确称的上是2019年的最美旗舰;而拍照就更不用说了…

广告加工厂临淄关键词网站优化哪家好

c#给定编码中的字符无效Input two strings and check whether they are equal or not using C# program. 输入两个字符串,并使用C#程序检查它们是否相等。 用于字符串比较的C#代码 (C# code for string comparison) Here, we are asking for…

大型网站服务器价格企业邮箱申请

不同的数据文档,会获得不同日期格式,常见的有str(20200101),datetime(20200101),又或者是2020-01-01,,2020-1-1,20-1-1,20-Apr_20th,2020/01/01,20/01/01等等,总之类型很多。因此需要我们对日期格式进行统一化。这里我…

我有域名和云服务器怎么做网站wordpress搬家_后台错乱

在 Uni-app 中,你可以使用本地缓存来存储应用程序的数据。Uni-app 提供了两种本地缓存方式:uni.setStorageSync 和 uni.setStorage。其中,uni.setStorageSync 同步方式存储数据,适合小数据量的存储;而 uni.setStorage …