- 博客(45)
- 资源 (7)
- 收藏
- 关注
原创 Diving into the STM32 HAL-----HAL_GPIO笔记
在HAL中,已经定义了GPIOA,并将用户通过GPIO_InitStruct结构体设置的参数,使用HAL_GPIO_Init函数写入上面所说的GPIO_TypeDef结构体(在地址0x48000000开始的内存)。接下来,要将引脚拉高,我们必须在输出数据寄存器 (ODR) 中设置相应的位[5],根据下表,该位映射到 GPIOA + 0x14 内存位置,即 0x4800 0000 + 0x14。要注意,这些总线中的每一个都连接到不同的时钟源,这些时钟源决定了连接到该总线的外设操作的最大速度。
2024-10-29 17:10:13
434
原创 数据结构与算法JavaScript描述练习------第14章高级算法
2. 写一个程序,允许用户改变背包问题的约束条件,以便于观察条件的变化对结果的影 响。比如,你可以改变背包的容量、物品的价值,或物品的重量。每次最好只改一个约 束条件。3. 使用贪心算法找零钱,不过这次不允许使用 10 美分,假设要找的零钱一共是 30 美分, 请尝试找到一个解。1. 写一个程序,使用暴力技巧来寻找最长公共子串。
2024-10-16 15:41:49
343
原创 数据结构与算法JavaScript描述练习------第13章检索算法
3. 创建一个函数用来查找数据集中的次小元素。你能否归纳一下,如何实现查找第三小、 第四小,等等的搜索函数?在至少有 1000 个元素的数据集上测试你的函数。请同时在 数字和文本数据集上进行测试。2. 对同一个数据集进行测试,比较顺序查找算法执行所花费的时间与同时使用插入排序算 法和二分查找算法花费的总时间。你得到的结果是什么?1. 顺序查找算法总是查找数据集中匹配到的第一个元素。请重写该算法使之返回匹配到的 最后一个元素。
2024-10-16 11:27:56
288
原创 数据结构与算法JavaScript描述练习------第12章排序算法
2. 创建一个包含 1000 个整数的有序数组。编写一个程序,用本章讨论的所有算法对这个 数组排序,分别记下它们的执行时间,并进行比较。4. 创建一个包含 10 000 个随机整数的数组,使用快速排序和 JavaScript 内置的排序函数分 别对它进行排序,记录下它们的执行时间。3. 创建一个包含 1000 个整数的倒序数组。编写一个程序,用本章讨论的所有算法对这个 数组排序,分别记下它们的执行时间,并进行比较。1. 使用本章讨论的所有算法对字符串数据而非数字数据进行排序,并比较不同算法的执行 时间。
2024-10-16 10:25:45
301
原创 数据结构与算法JavaScript描述练习------第11章图和图算法
1. 编写一个程序,测试广度优先和深度优先这两种图搜索算法哪一种速度更快。请使用不 同大小的图来测试你的程序。4. 构建一个图,用它为你居住地的地图建模。测试一下从一个开始顶点到最后顶点的最短路径。5. 对上一题中创建的图执行深度优先搜索和广度优先搜索。2. 编写一个用文件来存储图的程序。3. 编写一个从文件读取图的程序。
2024-10-15 13:52:48
205
原创 数据结构与算法JavaScript描述练习------第10章二叉树和二叉查找树
5. 写一段程序,读入一个较大的文本文件,并将其中的单词保存到 BST 中,显示每个单词 在文本中出现的次数。3. 为 BST 类增加一个新方法 max(),该方法返回 BST 中的最大值。4. 为 BST 类增加一个新方法 min(),该方法返回 BST 中的最小值。1. 为 BST 类增加一个新方法,该方法返回 BST 中节点的个数。2. 为 BST 类增加一个新方法,该方法返回 BST 中边的个数。
2024-10-14 15:14:52
228
原创 数据结构与算法JavaScript描述练习------第9章集合
3. 为 Set 类增加一个 higher(element) 方法,该方法返回比传入元素大的元素中最小的那 个。写一段测试代码来测试这个方法。4. 为 Set 类增加一个 lower(element) 方法,该方法返回比传入元素小的元素中最大的那 个。写一段测试代码来测试这个方法。2. 修改 Set 类,将存储方式从数组替换为链表。写一段测试代码来测试你的修改。1. 修改 Set 类,使里面的元素按顺序存储。写一段测试代码来测试你的修改。
2024-10-14 11:22:52
223
原创 数据结构与算法JavaScript描述练习------第8章散列
1. 使用线性探测法创建一个字典,用来保存单词的定义。该程序需要包含两个部分:第一 部分从文本文件中读取一组单词和它们的定义,并将其存入散列表;第二部分让用户输 入单词,程序给出该单词的定义。3. 读取一个文本文件,使用散列显示该文件中出现的单词和它们在文件中出现的次数。2. 使用开链法重新实现练习 1。
2024-10-12 18:28:05
297
原创 数据结构与算法JavaScript描述练习------第7章字典
2. 使用 Dictionary 类写一个程序,该程序用来存储一段文本中各个单词出现的次数。比如下面一段话“the brown fox jumped over the blue fox”,程序的输出应为: the: 2 brown: 1 fox: 2 jumped: 1 over: 1 blue: 1。1. 写一个程序,该程序从一个文本文件中读入名字和电话号码,然后将其存入一个字典。该程序需包含如下功能:显示单个电话号码、显示所有电话号码、增加新电话号码、删 除电话号码、清空所有电话号码。
2024-10-12 13:56:39
275
原创 数据结构与算法JavaScript描述练习------第6章链表
他 们围成一个圈,从一个人开始,数到第三个人时将第三个人杀死,然后再数,直到杀光 所有人。约瑟夫和另外一个人决定不参加这个疯狂的游戏,他们快速地计算出了两个位 置,站在那里得以幸存。写一段程序将 n 个人围成一圈,并且第 m 个人会被杀掉,计算 一圈人中哪两个人最后会存活。1. 实现 advance(n) 方法,使当前节点向前移动 n 个节点。2. 实现 back(n) 方法,使当前节点向后移动 n 个节点。3. 实现 show() 方法,只显示当前节点上的数据。5. 使用双向链表重写例 6-4 的程序。
2024-10-12 10:47:52
415
原创 数据结构与算法JavaScript描述练习------第5章队列
4. 修改例 5-5 中的候诊室程序,使得候诊室内的活动可以被控制。写一个类似菜单系统, 让用户可以进行如下选择: a. 患者进入候诊室;c. 显示等待就诊患者名单。1. 修改 Queue 类,形成一个 Deque 类。这是一个和队列类似的数据结构,允许从队列两端 添加和删除元素,因此也叫双向队列。写一段测试程序测试该类。3. 修改例 5-5 中的优先队列,使得优先级高的元素优先码也大。写一段程序测试你的改动。2. 使用前面完成的 Deque 类来判断一个给定单词是否为回文。
2024-10-11 14:59:59
199
原创 数据结构与算法JavaScript描述练习------第4章栈
2. 一个算术表达式的后缀表达式形式如下: op1 op2 operator 使用两个栈,一个用来存储操作数,另外一个用来存储操作符,设计并实现一个 JavaScript 函 数,该函数可以将中缀表达式转换为后缀表达式,然后利用栈对该表达式求值。编写一个函数,该函数接受一个算 术表达式作为参数,返回括号缺失的位置。想象一下你有一盒佩兹糖果,里面塞满了红 色、黄色和白色的糖果,但是你不喜欢黄色的糖果。使用栈(有可能用到多个栈)写一 段程序,在不改变盒内其他糖果叠放顺序的基础上,将黄色糖果移出。
2024-10-11 14:01:16
278
原创 数据结构与算法JavaScript描述练习------第3章列表
1. 增加一个向列表中插入元素的方法,该方法只在待插元素大于列表中的所有元素时才执 行插入操作。这里的大于有多重含义,对于数字,它是指数值上的大小;5. 为影碟租赁程序创建一个 check-in() 函数,当客户归还一部影片时,将该影片从已租列 表中删除,同时添加到现有影片列表中。4. 修改本章的影碟租赁程序,当一部影片检出后,将其加入一个已租影片列表。每当有客 户检出一部影片,都显示该列表中的内容。2. 增加一个向列表中插入元素的方法,该方法只在待插元素小于列表中的所有元素时才执 行插入操作。
2024-10-10 17:55:57
410
原创 数据结构与算法JavaScript描述练习------第2章数组
3. 修改本章前面出现过的 weeklyTemps 对象,使它可以使用一个二维数组来存储每月的有 用数据。想深入知道为什么,先看深入浅出HTML与CSS,深入浅出HTML5编程,深入浅出JavaScript语言等书籍,这几天花了时间把这三本书草草看了一遍,大概有些印象。4. 创建这样一个对象,它将字母存储在一个数组中,并且用一个方法可以将字母连在一 起,显示成一个单词。1. 创建一个记录学生成绩的对象,提供一个添加成绩的方法,以及一个显示学生平均成绩 的方法。
2024-10-10 17:34:37
300
原创 STM32F1 HAL库笔记2_HAL 系统驱动程序
通用 HAL 驱动程序包含一组通用的 API,PPP 外设驱动程序可以使用这些 API 来开始使用 HAL。HAL 包含两个 API 类别: • 常见的 HAL API • 服务 HAL API 本节提供的功能: • 初始化闪存接口、NVIC 分配和初始时钟配置。它还会在需要超时时初始化 systick,并在启用时初始化备份域。 • 去初始化 HAL 的公共部分。 • 将时基源配置为具有 1ms 时基和专用的 Tick 中断优先级。 –
2024-09-11 09:50:45
989
原创 STM32F1 HAL库笔记1_HAL 驱动程序概述(2)
LL驱动程序旨在提供快速、轻量级、面向专家的层,它比 HAL 更接近硬件。与 HAL 相反,LL API 不适用于以下外设:不需要代码优化的外设,软件配置复杂的外设,复杂的上层堆栈(如 USB)的外设。LL 驱动程序特征:一组初始化函数,用于根据数据结构中指定的参数初始化外设主要功能一组初始化函数,用于用每个字段的重置值填充初始化数据结构执行外设去初始化的函数(外设寄存器恢复为默认值)一组内联函数,用于直接和原子寄存器访问。
2024-09-10 17:44:58
1186
原创 STM32F1 HAL库笔记0_HAL 驱动程序概述(1)
_HAL_PPP_CLK_ENABLE/__HAL_PPP_CLK_DISABLE //启用/禁用外设时钟 __HAL_PPP_FORCE_RESET/__HAL_PPP_RELEASE_RESET //强制/释放外设复位 __HAL_PPP_CLK_SLEEP_ENABLE/__HAL_PPP_CLK_SLEEP_DISABLE //在睡眠模式下启用/禁用外设时钟。stm32f1xx_hal.h包含了stm32f1xx_hal_conf.h。
2024-09-04 18:07:01
1401
原创 JZ2440笔记:驱动调试
18: e5923000 ldr r3, [r2] //根据r3 : bf003000 r2 : 56000050 r1 : bf003c24 r0 : 00000000,有 ldr bf003000,[56000050],结合上文对应的C为*gpfcon &= ~(0x3<<(4*2)|(0x3<<(5*2))|(0x3<<(6*2)));可以看到*gpfcon &= ~(0x3<<(4*2)|(0x3<<(5*2))|(0x3<<(6*2)));
2024-06-06 18:00:15
692
原创 JZ2440笔记:热插拔驱动
原来是驱动中出口函数exit写错了,并且没有卸载所有的led设备文件,呵呵。6、vi add_remove_udisk.sh 添加#!(2)修改mdev.conf(修改后要重启啊,不然不行)4、vi add_remove_led.sh 添加。remove时没有反应,没成功?
2024-06-05 13:38:49
707
原创 JZ2440笔记:声卡驱动
在s3c2410-uda1341.c修改驱动,修改硬件部分的控制接口,I2S部分通用不用修改。测试驱动:确认内核已经配置了I2S驱动,同时将s3c-wm8976.c编译到uImage里。3、修改音量uda1341_volume相关设置smdk2410_mixer_ioctl。1、增加写寄存器操作函数wm8976_write_reg。2、修改控制器初始化函数init_wm8976。
2024-05-31 17:58:23
420
原创 JZ2440笔记:I2C驱动
i2c-adapter i2c-0: Invalid probe address 0xa0 //地址值只能是7位,呵呵!加载成功,没有打印at24cxx detect。//原来JZ2440没有IIC设备,呵呵!(3)vi at24cxx.c(构造i2c_client,用于收发数据)(5)vi at24cxx.c(使用I2C传输函数完成字符设备读写)(4)vi at24cxx.c(增加字符设备驱动程序)(2)vi at24cxx.c(强制匹配)无,JZ2440不支持IIC。
2024-05-31 14:28:06
399
原创 JZ2440笔记:DM9000C网卡驱动
5、dmfe_open中if (request_irq(dev->irq,&dmfe_interrupt,0,dev->name,dev))修改为if (request_irq(dev->irq,&dmfe_interrupt,IRQF_TRIGGER_RISING,dev->name,dev))=0) || ((chip_info&(1<<2))!3、在dm9000c_init入口函数,增加iobase = (int)ioremap(0x20000000,1024);
2024-05-30 14:00:10
432
原创 JZ2440笔记:虚拟网卡
没有实现dev_hard_start_xmit。(2)vi virt_net.c(实现发包函数)(3)vi virt_net.c(假回包)
2024-05-30 11:41:50
722
原创 JZ2440笔记:NAND FLASH驱动程序
然后到Freeing init memory: 140K后没有输出,呵呵。估计守护进程init运行错误,使用与编译kernel相同的交叉编译器来编译busybox,重新制作根文件系统。注意:在s3c_nand_init里添加s3c_nand->ecc.mode = NAND_ECC_SOFT;需要去掉自带nand驱动,并且使用nfs挂接根文件系统。(1)vi s3c_nand.c(识别nand)(2)vi s3c_nand.c(添加分区)
2024-05-29 17:25:14
726
原创 JZ2440笔记:USB设备驱动程序
(2)vi usbmouseaskey.c(读取设备描述符信息)(3)vi usbmouseaskey.c(增加输入子系统)(3)vi usbmouseaskey.c(增加上报按键)使用去掉自带的USB驱动的uImage。使用去掉自带的USB驱动的uImage。
2024-05-29 11:22:03
723
原创 JZ2440笔记:触摸屏驱动程序
运行./ts_calibrate程序,触摸屏矫正图标没有反应。网上所说的cat /dev/input/event0有乱码出现不能确定触摸屏驱动是没问题的,应该是驱动还是有问题。(3)vi /etc/ts.conf 使能module_raw input。(4)vi s3c_ts.c(增加定时器支持长按和滑动)(2)vi s3c_ts.c(增加adc测量xy坐标)(3)vi s3c_ts.c(优化测量xy坐标)(5)vi s3c_ts.c(输入子系统上报)(2)安装s3c_ts.ko,lcd.ko。
2024-05-28 17:40:48
995
原创 JZ2440笔记:LCD驱动程序
vi /etc/inittab添加tty1:::askfirst:-/bin/sh,重启后insmod上面的模块和button.ko,就可以在通过按键操作LCD显示。测试驱动:先去掉uImage里的S3C2410 LCD驱动,
2024-05-28 12:39:46
313
原创 JZ2440笔记:总线驱动设备模型
(1)总线驱动设备模型中的hello world。(2)总线驱动设备模型(添加字符设备驱动惯例)vi ledtest.c测试程序。
2024-05-24 11:08:23
181
1
原创 JZ2440笔记:输入子系统编写按键驱动程序
驱动中增加set_bit(EV_REP,buttons_dev->evbit);vi button.c(实现input_dev)
2024-05-23 17:26:41
389
1
原创 JZ2440笔记:字符设备驱动程序之同步互斥阻塞
变更为timer_setup(&button_timer,button_timer_function,0);将static void button_timer_function(unsigned long data){}变更为static void button_timer_function(struct timer_list *t){}vi third_drv.c增加信号量button_lock。
2024-05-22 16:21:16
1677
原创 JZ2440笔记:字符设备驱动程序之异步通知(快递员直接给我打电话啊,要什么门卫通知)
(4)vi third_drv.c增加异步通知代码(快递员直接给我打电话)
2024-05-22 11:17:52
218
原创 JZ2440笔记:字符设备驱动程序之中断方式的按键驱动(等快递等到睡着)
再次make出现warning: passing argument 2 of 'copy_to_user' makes pointer from integer without a cast,则copy_to_user(buf,key_val,1);再次make出现error: implicit declaration of function 's3c2410_gpio_getpin',则将s3c2410_gpio_getpin() 换成 gpio_get_value()
2024-05-21 15:47:03
959
原创 JZ2440笔记:字符设备驱动程序之查询方式的按键驱动程序(一直在等快递,心神不灵)
再次make出现second_drv.c:54:6: warning: unused variable 'i' [-Wunused-variable],在vi中使用命令 :set nu显示出行号,找到第54行,使用命令dd删除此行即可。在上回的代码上修改,将first_drv.c改成second_drv.c,firstdrvtest.c改成seconddrvtest.c。注意:在vi里批量替换使用命令 :%s/first/second/gc 将first字样全部改成second。
2024-05-17 13:53:24
368
原创 JZ2440笔记:字符设备驱动程序之LED驱动程序_测试改进2
make出现error: implicit declaration of function 'ioremap' [-Werror=implicit-function-declaration],则加头文件#include ,编译成功。原来是指针操作错误,加解引用符号后为:*gpfcon &= ~(0x3
2024-05-16 17:48:32
971
原创 JZ2440笔记:字符设备驱动程序之LED驱动程序_编写编译1
和printk("first_drv_exit");和printk("first_drv_exit\n");3、# lsmod出现的first_drv 854 0 - Live 0xbf00c000 (O)中,854不是设备号。于是man 3 printf,得到并在.c中添加头文件 #include <stdio.h>后编译通过。表示该模块没有任何依赖的其他模块。是模块的名称,表示这是一个名为 "first_drv" 的内核模块。是模块在内核内存空间中的地址,这表明模块已被映射到这个地址进行执行。
2024-05-16 16:15:10
1866
原创 JZ2440字符设备驱动(设备树)
(3)根节点“/”里面的xxx{}都是子节点;根节点“/”里面的#address-cells = ,#size-cells = 表明leds子节点的reg属性值,0x56000050是起始地址,0x04是地址范围。和不使用设备树相比,就是改一下nd = of_find_node_by_path("/leds");注意:(1)根节点“/”必须要有compatible属性,代替不使用设备树时的machid,用于内核启动后匹配这块板子或者SoC;
2024-05-09 14:24:05
246
CFP SMT Trainging Material for FP.pdf
2019-11-05
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人