中断服务程序

2019-2020-1 20175301 20175305 20175318 实验二 固件程序设计

家住魔仙堡 提交于 2019-12-04 18:16:16
实验一 开发环境的熟悉 本小组成员 20175301 20175305 20175318 一、实验步骤 1-MDK 实验要求 1.参考云班课资源中“信息安全系统实验箱指导书.pdf “第一章,1.1-1.5安装MDK,JLink驱动,注意,要用系统管理员身分运行uVision4,破解MDK(破解程序中target一定选ARM) 2.提交破解程序中产生LIC的截图 3.提交破解成功的截图 实验步骤 按照实验指导书上的操作进行软件安装-->运行 uVision4,点 File>>License Management-->复制 CID-->运行keil-MDK注册机(在“Z32开发指南\2.软件资料\keil-MDK 注册机”双击“keil mdk474注册机”)-->粘贴 CID 并选择 ARM。 2-LED 实验要求 1.参考云班课资源中“信息安全系统实验箱指导书.pdf “第一章,1.4” KEIL-MDK 中添加 Z32 SC-000 芯片库,提交安装截图 2.参考云班课资源中“信息安全系统实验箱指导书.pdf “第一章,1.9”完成LED实验,注意“打开Z32的电源开关前,按住Reboot按键不放,两次打开电源开关,Z32即可被电脑识别,进行下载调试。提交运行结果截图 3.实验报告中分析代码 实验步骤 首先先在 KEIL-MDK 中添加 Z32 SC-000 芯片库,操作过程为

2019-2020-2-20175315 20175322 20175334-实验二固件程序设计

心已入冬 提交于 2019-12-04 18:00:35
2019-2020-2-20175315 20175322 20175334-实验二固件程序设计 实验二 固件程序设计 实验二 固件程序设计-1-MDK 0. 注意不经老师允许不准烧写自己修改的代码 1. 三人一组 2. 参考云班课资源中“信息安全系统实验箱指导书.pdf “第一章,1.1-1.5安装MDK,JLink驱动,注意,要用系统管理员身分运行uVision4,破解MDK(破解程序中target一定选ARM) 3. 提交破解程序中产生LIC的截图 4. 提交破解成功的截图 实验截图 实验二 固件程序设计-2-LED 0. 注意不经老师允许不准烧写自己修改的代码 1. 参考云班课资源中“信息安全系统实验箱指导书.pdf “第一章,1.4” KEIL-MDK 中添加 Z32 SC-000 芯片库,提交安装截图 2. 参考云班课资源中“信息安全系统实验箱指导书.pdf “第一章,1.9”完成LED实验,注意“打开Z32的电源开关前,按住Reboot按键不放,两次打开电源开关,Z32即可被电脑识别,进行下载调试。提交运行结果截图 3. 实验报告中分析代码 程序分析 主函数代码的执行过程为: 1、系统初始化,中断设置使能所有; 2、判断按键,返回 boot 条件,确认是否进行程序下载; 3、设置 GPIO0 状态为上拉输出; 4、进入循环程序, LED 灯间隔 100ms 闪烁。

2019-2020-1 20175307 20175308 20175319 实验二 固件程序设计

好久不见. 提交于 2019-12-04 16:36:35
2019-2020-1 20175307 20175308 20175319 实验二 固件程序设计 小组成员 20175307高士淳 20175308杨元 20175319江野 实验步骤 1.MDK 实验要求 0.注意不经老师允许不准烧写自己修改的代码 1.三人一组 2.参考云班课资源中“信息安全系统实验箱指导书.pdf “第一章,1.1-1.5安装MDK,JLink驱动,注意,要用系统管理员身分运行uVision4,破解MDK(破解程序中target一定选ARM) 3.提交破解程序中产生LIC的截图 4.提交破解成功的截图 实验步骤 下载并运行安装程序,安装MDK MDK安装结束页面,点击安装ULINK驱动 Ulink安装结束后自动退出,安装结束 运行uVision4,点击 文件>>许可证管理 ,复制CID 运行keil-MDK注册机,粘贴CID并选择 ARM ,点击 generate 生成 LIC 将生成的LIC复制到keil4中的LIC输入框中,点击 Add LIC ,破解完成。 2.LED 实验要求 0.注意不经老师允许不准烧写自己修改的代码 1.参考云班课资源中“信息安全系统实验箱指导书.pdf “第一章,1.4” KEIL-MDK 中添加 Z32 SC-000 芯片库,提交安装截图 2.参考云班课资源中“信息安全系统实验箱指导书.pdf “第一章,1.9”完成LED实验

2019-2020-1 20175208 20175218 20175230 实验二 固件程序设计

不想你离开。 提交于 2019-12-04 15:55:24
2019-2020-1 20175208 20175218 20175230 实验二 固件程序设计 一、实验内容 1、固件程序设计-1-MDK 注意不经老师允许不准烧写自己修改的代码 三人一组 参考云班课资源中“信息安全系统实验箱指导书.pdf “第一章,1.1-1.5安装MDK,JLink驱动,注意,要用系统管理员身分运行uVision4,破解MDK(破解程序中target一定选ARM) 提交破解程序中产生LIC的截图 提交破解成功的截图 2、固件程序设计-2-LED 注意不经老师允许不准烧写自己修改的代码 参考云班课资源中“信息安全系统实验箱指导书.pdf “第一章,1.4” KEIL-MDK 中添加 Z32 SC-000 芯片库,提交安装截图 参考云班课资源中“信息安全系统实验箱指导书.pdf “第一章,1.9”完成LED实验,注意“打开Z32的电源开关前,按住Reboot按键不放,两次打开电源开关,Z32即可被电脑识别,进行下载调试。提交运行结果截图 实验报告中分析代码 3、固件程序设计-3-UART 注意不经老师允许不准烧写自己修改的代码 参考云班课资源中“信息安全系统实验箱指导书.pdf “第一章,1.4” KEIL-MDK 中添加 Z32 SC-000 芯片库,提交安装截图 参考云班课资源中“信息安全系统实验箱指导书.pdf “第一章,1.0

外部中断实验

前提是你 提交于 2019-12-04 04:22:05
1.外部中断介绍 1.1 EXTI简介 STM32F10x外部中断/事件控制器(EXTI)包含多达 20 个用于产生事 件/中断请求的边沿检测器。EXTI的每根输入线都可单独进行配置,以选 择类型(中断或事件)和相应的 触发事件(上升沿触发、下降沿触发或 边沿触发),还可独立地被屏蔽。 1.2 EXTI结构框图 1.3 外部中断/事件线映射 STM32F10x的EXTI具有20个中断/事件线,如下: 2.外部中断配置步骤 要使用外部中断我们就需要先配置它,通常都需经过这几步:(EXTI 相关库函数在stm32f10x_exti.c和stm32f10x_exti.h文件中) 1)使能IO口时钟,配置IO口模式为输入 (2)开启 AFIO 时钟,设置 IO 口与中断线的映射关系 RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE); void GPIO_EXTILineConfig(uint8_t GPIO_PortSource, uint8_t GPIO_PinSource); GPIO_EXTILineConfig(GPIO_PortSourceGPIOA, GPIO_PinSource0); (3)配置中断分组(NVIC),使能中断 (4)初始化EXTI,选择触发方式 void EXTI_Init(EXTI_InitTypeDef*

STM32中断系统

大兔子大兔子 提交于 2019-12-04 03:48:28
1.中断介绍: 1.1 中断概念 CPU执行程序时,由于发生了某种随机的事件(外部或内部),引起CPU暂 时中断正在运行的程序,转去执行一段特殊的服务程序(中断服务子程序 或中断处理程 序),以处理该事件,该事件处理完后又返回被中断的程序 继续执行,这一过程称为中断。引发中断的称为中断源。比如:看电视 时突然门铃响,那么门铃响就相当于中 断源。有些中断还能够被其他高 优先级的中断所中断,那么这种情况又叫做中断的嵌套。 STM32F10x芯片有84个中断通道,包括 16 个内核中断和 68 个可屏蔽中 断,这些中断通道已按照不同优先级顺序固定分配给相应的外部设备。 (参考《STM32F10x中文参考手册》-9 中断和事件章节) 1.2 NVIC介绍 NVIC英文全称是Nested Vectored Interrupt Controller,中文意思 就是嵌套向量中断控制器,它属于M3内核的一个外设,控制着芯片的中 断相关功能。由于ARM给NVIC预 留了非常多的功能,但对于使用M3内核设 计芯片的公司可能就不需要这么多功能,于是就需要在NVIC上裁剪。ST 公司的STM32F103芯片内部中断数量就是NVIC裁剪后 的结果。 中断控制相关寄存器在固件库core_cm3.h文件NVIC结构体内。可打开 任意库函数工程即可查看到。 1.3 中断优先级  

关于中断

荒凉一梦 提交于 2019-12-03 13:17:27
一、什么是中断   当计算机在执行程序时,当出现异常情况(信号),计算机停止当前程序的运行,转而去处理异常情况,处理完成后再返回继续执行,这种情况叫中断。 二、中断的处理过程   在S5PV210中,ARM设计了一个完成的中断系统,中断程序独立于主程序之外,中断响应过程是:     1、主程序正常在执行,中断事件、中断源产生一个中断请求。     2、CPU接收到中断请求后,将主程序暂停,产生一个中断点。     3、中断系统响应中断请求,转而执行中断服务程序。     4、执行完成中断响应程序后返回到主程序的中断点处,继续执行主程序。 三、中断系统的优点   现在绝大多数的嵌入式芯片都具有中断系统,使用它的好处:     1、实现实时处理,根据CPU的内部功能模块(硬件上的)来响应中断请求,为其服务,不需要主程序做任务的监控,因此可以实时处理任务。     2、实现分时操作,根据需要设计若干个中断源,这样就可以同时响应多个外部设备的中断请求,只有在外部设备产生中断时,CPU才转而为它服务,这样可以让多个外部设备同时工作,实现分时操作。     3、故障处理,与轮询模式相比,中断处理异常情况、或故障时会更及时,可以实现紧急故障及时处理。     4、待机唤醒,嵌入式设备最大的一个特点就是低功耗,因此就需要具有休眠的功能,而从休眠状态快速切换到正常工作模式,就是通过中断实现的。 四

[现代操作系统] I/O之硬件原理

匿名 (未验证) 提交于 2019-12-03 00:28:02
I/O 硬件原理 把信息存储在固定大小的块中, 每个块都有自己的地址. 每个块可以独立于其他块读写. 如 硬盘, CD-ROM , USB 盘 … 字符设备以字符为单位发送或接收一个字符流, 而不考虑任何块结构. 它是不可寻址的. 如打印机, 网络接口, 鼠标 (用作指点设备)… I/O 设备一般由两部分组成: 机械部分和电子部分. 电子部分就是设备控制器. 常以插入 (PCI) 扩展槽中的印刷电路板的形式出现. 控制器与设备之间的接口是很低层次的接口. 它的任务就是把串行的位流转换为字节块, 并进行必要的错误校正. 每个控制器有几个寄存器, OS 可以读写来了解, 更改设备的状态信息. 控制器还有 OS 可以读写的 数据缓冲区 . 问题来了: CPU 如何与设备的控制寄存器和数据缓冲区通信. 方法一: 每个控制寄存器被分配一个 I/O 端口 (所有端口形成端口空间, 受保护不被普通用户访问). 然后可以设置指令来读写, 如 IN REG, PORT 将读取控制器寄存器 PORT 中的内容到 CPU 寄存器 REG 方法二: 内存映射 I/O. 将所有控制寄存器映射到内存空间, 都被分配唯一的地址, 且这些内存地址不会再分配. CPU 读入一个字时, 不论是从内存还是 I/O 端口, 都将目的地址放在总线的地址线上, 总线控制线置 READ 信号看. 还要用一条线表明是 I/O

FREERTOS队列

匿名 (未验证) 提交于 2019-12-03 00:21:02
http://forum.armfly.com/forum.php 本章节为大家讲解 FreeRTOS 的一个重要的通信机制----消息队列,初学者要熟练掌握,因为消息队 消息队列的概念及其作用 消息队列就是通过 RTOS 内核提供的服务,任务或中断服务子程序可以将一个消息( 注意,FreeRTOS 消息队列传递的是实际数据,并不是数据地址,RTX,uCOS-II 和 uCOS-III 是传递的地址 )放入到队列。 同样,一个或者多个任务可以通过 RTOS 内核服务从队列中得到消息。通常,先进入消息队列的消息先传 给任务,也就是说,任务先得到的是最先进入到消息队列的消息,即先进先出的原则(FIFO),FreeRTOS 的消息队列支持 FIFO 和 LIFO 两种数据存取方式。 也许有不理解的初学者会问采用消息队列多麻烦,搞个全局数组不是更简单,其实不然。在裸机编程 时,使用全局数组的确比较方便,但是在加上 RTOS 后就是另一种情况了。 相比消息队列,使用全局数组 使用消息队列可以让 RTOS 内核有效地管理任务,而全局数组是无法做到的,任务的超时等机制需要用户自己去实现。 使用了全局数组就要防止多任务的访问冲突,而使用消息队列则处理好了这个问题,用户无需担心。 使用消息队列可以有效地解决中断服务程序与任务之间消息传递的问题。 FIFO 机制更有利于数据的处理。 FreeRTOS

6.用户态和核心态的区别

匿名 (未验证) 提交于 2019-12-03 00:19:01
用户态和核心态的区别 1. 操作系统需要两种 CPU 状态: 内核态( Kernel Mode ):运行操作系统程序 用户态( User Mode ):运行用户程序 2. 指令划分: 特权指令: 只能由操作系统使用、用户程序不能使用的指令。 举例:启动 内存清零 修改程序状态字 设置时钟 允许 / 禁止终端 停机 非特权指令:用户程序可以使用的指令。 举例:控制转移 算数运算 取数指令 访管指令(使用户程序从用户态陷入内核态) 3. 特权级别: 特权环: R0 、 R1 、 R2 和 R3 R0 相当于内核态, R3 相当于用户态; 不同级别能够运行不同的指令集合; 4.CPU 状态之间的转换: 用户态 ---> 内核态: 唯一途径是通过中断、异常、陷入机制(访管指令) 内核态 ---> 用户态: 设置程序状态字 PSW 5. 内核态与用户态的区别: 1 ) 内核态与用户态是操作系统的两种运行级别,当程序运行在 3 级特权级上时,就可以称之为运行在用户态。 因为这是最低特权级,是普通的用户进程运行的特权级, 大部分用户直接面对的程序都是运行在用户态; 2 ) 当程序运行在 0 级特权级上时,就可以称之为运行在内核态。 3 ) 运行在用户态下的程序不能直接访问操作系统内核数据结构和程序。 当我们在系统中执行一个程序时,大部分时间是运行在用户态下的,在