在Keil MDK环境下使用STM32v3.4

在Keil MDK环境下使用STM32v3.4
在Keil MDK环境下使用STM32v3.4

写这篇“小”教程主要是和大家分享使用STM32的基本方法。在一年以前,我开始接触并开始使用STM32。STM32价格便宜,外设丰富,开发和仿真环境使用方便,一下子便爱上了它。我当时使用了IAR编译环境,固件库也是以前的V2版本。由于ST公司更新了STM32的固件库,所以想试着使用新固件库。刚开始使用新库时也遇到了一些问题,但是慢慢熟悉不但觉得不难不烦,反而觉得V3比V2更好用。在这里我和大家分享一下使用V3.4库的方法,希望大家喜欢,如有错误请指出,在下不慎感激。

这篇“小”教程分以下四步来说,第一步,获得库文件,并进行适当的整理;第二步,建立工程,并建立条理清晰的GROUP;第三步,修改工程的Option属性;第四步:使用JLINK 仿真调试。下面就分这四大步来逐个说明。

第一步获得库文件,并进行适当的整理

第一步非常的简单,访问ST的官网上就可以获得最新的固件库,在我写“小”教程的时候最新的固件库是V3.4。除了获得固件库之外还可以获得和固件库相关的说明文档。在以前的官网上可以下载到一篇名为《如何从 STM32F10xxx 固件库 V2.0.3 升级为 STM32F10xxx标准外设库 V3.0.0》的应用手册,但是在现在的ST官网上却找不到这篇十分有用的应用文档,不过却可以在百度文库中找到,这篇文档详

细说明了新固件库的文件结构,在Keil工程建立之前,值得一看。

图1是新固件库改动比较大的部分,ST称为CMSIS。在这个文件夹下面出现了一些新的源文件、头文件和启动代码,新的源文件如core_cm.c system_stm32f10x.c,也有新的启动代码如start_stm32f10x_h/m/ld.s。在第二部分会详细介绍这些文件到底有什么作用,以及和V2版本的区别。在这里我也补充一句,V3.4还是和V3.0有点区别,V3.4又比V3.0多出了几个启动代码。

我个人觉得这些文件“埋”的太深,使用起来有点不方便,所以我一般对这些文件进行一些整理,把相关文件放在一起,并取上一个标准化的名字,这些文件夹的名字一般和原始固件库文件夹的名字相同,只是把需要的文件放在一起。例如我把启动代码(startup)放在一个文件夹下面,而在这个文件下面只放Keil MDK有关的启动代码,把IAR

和GCC的文件全部给去除了,这样做不但使得文件夹内容“清爽”也可以避免不必要的错误。一般在工程目录下面我会建立以下几个文件夹,如图2所示。当然还会建立两个很有用的文件夹,一个取名为Listing,另一个取名为Object。这两个文件夹会保存Keil编译连接过程中产生的一些文件,虽然是一个不起眼的细节但是也请大家关注,不然在工程目录下面“邋遢”的很!

下面来简单说说这些文件各有什么作用。在下重在应用,对里面的内容也知之甚少。

core_cm3.c/core_cm3.h

该文件是内核访问层的源文件和头文件,查看其中的代码多半是使用汇编语言编写的。在线不甚了解。

stm32f10x.h

该文件是外设访问层的头文件,该文件是最重要的头文件之一。例如定义了CPU是哪种容量的CPU,中断向量等等。除了这些该头文件还定义了和外设寄存器相关的结构体,例如:

typedef struct

{

__IO uint32_t CRL;

__IO uint32_t CRH;

__IO uint32_t IDR;

__IO uint32_t ODR;

__IO uint32_t BSRR;

__IO uint32_t BRR;

__IO uint32_t LCKR;

} GPIO_TypeDef;

包含了那么多寄存器的定义,那么在应用文件中(例如自己编写的main源文件)只需要包含stm32f10x.h即可,

而不是以前固件库的需要包含stm32f10x_conf.h这个头文件。

system_stm32f10x.c/h

该头文件也可以称为外设访问层的头文件和源文件。在该文件中可以定义系统的时钟频率,定义低速时钟总线和高速时钟总线的频率,其中最关键的函数就是SystemInit()了,这个后面会详细介绍。总之这两个文件是新固件库的重点,有了它粮也大大简化了使用stm32的初始化工作。

stm32f10x_conf.h

这个文件和V2版本的库的内容是一样的,需要使用哪些外设就取消哪些外设的注释。例如需要使用GPIO功能,但不使用SPI功能,就可以这样操作。

#include "stm32f10x_gpio.h"

/* #include "stm32f10x_spi.h" */

main.c

这个文件就不用多说了,自己编写。

stm32f10x_it.c/h

这两个文件包含了stm32中断函数,在源文件和头文件中并没有把所有的中断入口函数都写出来,而只写了ARM内核的几个异常中断,其他的中断函数需要用户自己编写。stm32f10x_it.c的最后给了这样一个模板。

/************************************************** ****************************/

/* STM32F10x Peripherals Interrupt Handlers */

/* Add here the Interrupt Handler for the used peripheral(s) (PPP), for the */

/* available peripheral interrupt handler's name please refer to the startup */

/* file

(startup_stm32f10x_xx.s). */

/************************************************** ****************************/

/**

* @brief This function handles PPP interrupt request.

* @param None

* @retval None

*/

/*void PPP_IRQHandler(void)

{

}*/

从注释中的英文提示可以看出,中断向量的名称可以从相应的启动代码中找出,例如可以在startup_stm32f10x_md.s 中找到USART1中断函数的名称——USART1_IRQHandler。其他的中断函数名可以以此类推,一一获得,在这里我就不一一复述了。

StdPeriph_Driver文件夹

该文件夹有包含两个文件夹,一个是src文件夹,另一个是inc文件夹,顾名思义,一个里面放的是元件一个里面放的是头文件。这两个文件夹包含了所有的STM32的外设驱动函数,其实和V2版本也没有太大的变化。简单来说,外设的驱动相当于windows的驱动函数API,这些驱动函数看到函数名基本就可以明白这个函数的作用,例如:

GPIO_SetBits可以置位某个IO口,相反GPIO_ResetBits则可以复位某个IO口。我个人认为熟练使用库可以大大提高编程的效率,同时规范使用库函数也可以提高程序的可读性,让团队中的其他程序员可以快速的明白代码的作用。STM32

在Keil MDK环境下使用STM32 V3.4库“小”教程第二步

第二步,建立工程,并建立条理清晰的GROUP

从这一步开始就开始和Keil MDK打交道了。首先建立一个Keil工程,这一小步再简单不过了,Project菜单项中点击New uVision Project,然后保存工程文件,路径自由设定并可以包含中文。

然后选择指定的CPU型号,如图3所示。例如选择STM32F103RB。

接着弹出一个添加启动代码的窗口,在这里请大家点击否。因为这个启动代码是旧版本库的启动代码,新版的启动代码和这个不同,需要自己添加。所谓启动代码就是在main函数之前运行的代码。

以上的几个步骤和在Keil环境下使用51很相似,所以也不必多说。

选择CPU型号后就需要建立一个条理清晰的Group,在这里我强调的是一个“条理性”。我尽可能的把同类的文件放在一起,并取名和工程文件目录中相同的名字,这样便于管理也避免不必要的错误。在Target 1选项上右击,在弹出菜单上选择manage components,如图5所示。

建立相应的Group。例如User,CMSIS,StdPeriph_Driver 和StartUP,这些Group的名称和工程文件夹的名称保持一致,如图6所示。为每个Group添加同名文件夹下的源文件或者头文件,为了便于查看代码,我把源文件和头文件都添加进Group中(除StdPeriph_Driver),在这里注意过滤文件的类型。StdPeriph_Driver中只添加需要的源文件,例如建立一个LED闪烁的工程,那么这个工程除了进行必要的初始化之外,只需要包含GPIO的操作函数,当然需要使用GPIO 就必须要使能GPIO的时钟,RCC是绝对少不了的。所以只需

要包含misc.c,stm32f10x_gpio.c和stm32f10x_rcc.c。需要说明的是,虽然在有些Group中包含了一些头文件,但是Keil在编译连接的时却不知道头文件在什么地方,所以一定要指定头文件的路径。添加需要的文件之后,工程目录如图

7所示。

系统分类: ARM | 用户分类: STM32 | 来源: 原创 | 【推荐给朋友】 | 【添加到收藏夹】

标签:STM32

在Keil MDK环境下使用STM32 V3.4库“小”教程第三步

第三步修改工程的Option属性

修改工程属主要目的是指定相关头文件的路径。接着上面说就是右击工程目录的LED Toggle则会出现Option选项卡,当然右击User或者其他的Group就不会出现Option选项卡,初学者极容易犯这个错误。

给Output选择一个名为Object的文件夹,当然文件夹也可以是其他任何名称。给Listing选择一个名为Listing的文件夹,当然这个文件夹也可以是其他的名称。

在C/C++选项卡下,需要输入两个非常重要的宏,一个宏是USE_STDPERIPH_DRIVER,定义了这个宏和外设有关的函数才会包括进来,还有一个宏是STM32F10X_MD,这个宏指定了CPU的容量,即中等容量的STM32。除了设定两个宏之外,还要确定和工程有关的头文件的路径。在工程目录下面除了

StartUP中没有相关头文件,而其他的文件中都有头文件,所以需要逐个指定。

写到这里除了仿真的选项没有设置之外,其他的参数都设定好了,此时如果编译连接工程的话,就应该显示没有错误和没有警告。当然也会遇到有错误和有警告的情况,根据错误提示耐心地寻找错误,总可以把问题迎刃而解。

:STM32

在Keil MDK环境下使用STM32 V3.4库“小”教程最后一步和后记

(536.45 K) 该附件被下载次数 562

第四步使用JLINK仿真调试

在说JLINK仿真调试之前,我先说说我在main.c中写了点什么,为什么这样写,还有一个比较要命的问题的是如何初始化系统时钟。先说说我在main函数中写点什么,其实就是利用一个软件延时函数点亮然后熄灭一盏LED。第一步需要初始化该IO口的时钟,第二步把该IO口配置成推挽输出形式,第三步就是进入无限循环,不断置位和复位该IO 口。

具体的代码如下

int main(void)

{

/*!< At this stage the microcontroller clock setting is already configured,

this is done through SystemInit() function which is called from startup

file (startup_stm32f10x_xx.s) before to branch to application main.

To reconfigure the default setting of SystemInit() function, refer to

system_stm32f10x.c file

*/

/* 初始化GPIOD时钟 */

RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOD , ENABLE);

/* 初始化GPIOD的Pin_2为推挽输出*/

GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2;

GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; GPIO_InitStructure.GPIO_Speed =

GPIO_Speed_50MHz;

GPIO_Init(GPIOD, &GPIO_InitStructure);

while (1)

{

/* 关闭LED1 */

GPIO_SetBits(GPIOD,GPIO_Pin_2);

/* 延时 */

Delay(0xAFFFF);

/* 点亮LED1 */

GPIO_ResetBits(GPIOD,GPIO_Pin_2);

/* 延时 */

Delay(0xAFFFF);

}

}

这段代码其实也非常简单,也是我从新固件库的例程中直接修改过来的。我想请大家注意的是其中的一段英文注释,这段英文注释什么意思呢。“在运行main函数之前,系统时钟已经完成初始化工作,在main函数之前,通过调用启动代码运行了SystemInit函数,而这个函数位于

system_stm32f10x.c”。根据文中的提示我们回到

system_stm32f10x.c看看SystemInit如何初始化系统的。在system_stm32f10x.c的开头便定义了系统的时钟频率,从下面的这段代码可以看出系统的频率被定义为72MHZ,这也是绝大多数STM32运行时的频率。

#if defined (STM32F10X_LD_VL) || (defined

STM32F10X_MD_VL) || (defined STM32F10X_HD_VL)

/* #define SYSCLK_FREQ_HSE HSE_VALUE */

#define SYSCLK_FREQ_24MHz 24000000

#else

/* #define SYSCLK_FREQ_HSE HSE_VALUE */

/* #define SYSCLK_FREQ_24MHz 24000000 */

/* #define SYSCLK_FREQ_36MHz 36000000 */

/* #define SYSCLK_FREQ_48MHz 48000000 */

/* #define SYSCLK_FREQ_56MHz 56000000 */

#define SYSCLK_FREQ_72MHz 72000000

#endif

紧接着根据这个宏定义程序试图把系统时钟初始化为

72MHz,代码有点冗长,这里就不一一列出。在SystemInit 函数中,调用了SetSysClock函数,如果设定时钟的频率为72MHZ则SetSysCloc调用SetSysClockTo72函数,该函数和V2版本固件库中的各范例中的RCC_Configuration很相似,主要完成把外部时钟9倍频后分配给系统时钟,APB1时钟和APB2又由系统时钟分频获得。关键代码如下

/* HCLK = SYSCLK */

RCC->CFGR |= (uint32_t)RCC_CFGR_HPRE_DIV1;

/* PCLK2 = HCLK */

RCC->CFGR |= (uint32_t)RCC_CFGR_PPRE2_DIV1;

/* PCLK1 = HCLK */

实验报告_实验1 C程序的运行环境和运行方法()

实验报告_实验1 C程序的运行环境和运行方法 一、实验目的: 1、熟悉VS 2005/2008/2010的下载、安装及使用,能够在IDE环境中编辑、编译、链接、运行C程序; 2、熟悉C程序的基本结构,能够参考例题代码编写简单C程序; 3、熟悉C语言中注释的用法。 二、实验内容 说明:基础题为必做题,提高题为选做题 1、(基础题) 操作内容:请学生建立新项目(lab_1_1),输入下列代码,并编译、链接、运行:(独立完成) 程序代码: #include int main( ) { printf ("This is a C program.\n"); return 0; }

问题:C程序的编译、链接、运行可以一次性完成吗?清理、重新生成项目(或程序)有什么作用? 答:可以,生成:如果程序没有编译过就全部编译,已编译过的只编译修改的部分,从新生成:先清除一遍,再对所有文件编译。 2、(基础题) 请学生上机编译下列程序,修改其错误,再运行: #include ; main( ) { int a scanf(“%d”,a); Printf(“%d*%d=%d”,a,a,a*a); ] 修改后的程序代码: #include int main() { int a; scanf(“%d”,a); printf(“%d%d%d”,a,a,a*a); return 0; } 3、(基础题)请参考例题代码,按下列要求,写出相应的C程序: 程序代码:#include

int main() { printf(" *\n"); printf(" **\n"); printf(" ***\n"); printf(" ****\n"); printf("*****\n"); return 0; } 4、(提高题)请参考例题代码,按下列要求,写出相应的C程序: 输入圆的半径,输出其周长与面积; 程序代码: #include #define Pi 3.14 int main() { float r,l,s,pi; scanf("%f",&r); l=2*pi*r; s=pi*r*r; printf("%d%d\n",s,l); return 0; }

实验一 C程序的运行环境和运行C程序的方法实验报告

实验一C程序的运行环境和运行C程序的方法 1.实验目的: (1)了解所用的计算机系统的基本操作方法,学会独立使用该系统 (2)了解在该系统上如何编辑,编译、连接和运行一个C程序 (3)通过运行简单的C程序,初步了解C源程序的特点 2. 实验内容和步骤 (1)检查所用的计算机系统是否已安装了C 编译系统并确定它所在的子目录(2)进入所用的集成环境 (3)熟悉集成环境的界面和有关菜单的使用方法 (4)输入并运行一个简单的、正确的程序 输入下面的程序 # include void main() { printf(“This is a c program..\n”); } ①下面是屏幕上显示的编译信息。无错,进行连接。 --------------------Configuration: L1 - Win32 Debug-------------------- Compiling... L1.c L1.obj - 0 error(s), 0 warning(s) ②连接无错误,使程序运行,观察分析运行结果。 --------------------Configuration: L1 - Win32 Debug-------------------- Linking... L1.exe - 0 error(s), 0 warning(s) 运行输出结果 This is a c program. Press any key to continue This is a c program. Press any key to continue 分析:输入自己编写的源程序,检查程序有无语法错误,可以通过编译来实现,它会自动查出程序的语法错误,如果有错误应该找出原因,并改正过来,再进行编译和连接,仔细分析编译信息,确定没错误就可以运行程序,输入数据。 第一个程序运行的结果是This is a c program.。符合我们原来设计这个程序的目的,说明这个程序是正确的。 (5)输入并编辑一个有错误的C程序 输入程序 #include

使用 db2pd 进行监视和故障诊断

使用 db2pd 进行监视和故障诊断 因为 db2pd 工具可从 DB2? 内存集合迅速返回即时信息,所以该工具可用于故障诊断。 该工具不需要获得任何锁存器或使用任何引擎资源就可以收集信息。因此,在 db2pd 收集 信息时,有可能(并且预计)会检索到正在更改的信息;这样,数据可能不是十分准确。 如果遇到正在更改的内存指针,可使用信号处理程序来防止 db2pd 异常终止。这可能会导 致输出中出现诸如以下的消息:“正在更改的数据结构已强制终止命令”。虽然如此,该工 具对于故障诊断却非常有用。在不锁存的情况下收集信息有两个好处:检索速度更快并且 不会争用引擎资源。 如果要在出现特定 SQLCODE、ZRC 代码或 ECF 代码时捕获关于数据库管理系统的信息,那 么可以使用 db2pdcfg -catch 命令完成此操作。捕获到错误时,将启动 db2cos(调出脚本)。db2cos 文件可以自动改变,以便运行解决问题所需的任何 db2pd 命令、操作系统命令或任何其他命令。在 UNIX? 和Linux? 上,模板文件 db2cos 位于 sqllib/bin 中。在 Windows? 操 作系统上,db2cos 位于 $DB2PATH in 目录中。 以下是使用 db2pd 快速故障诊断的一组示例。 场景 1:诊断锁定等待 使用 db2pd -db -locks -transactions -applications -dynamic 命令来获取下列 结果: 锁定: Address TranHdl Lockname Type Mode Sts Owner Dur HldCnt Att ReleaseFlg 0x07800000202E5238 3 00020002000000040000000052 Row ..X G 3 1 0 0x0000 0x40000000 0x07800000202E4668 2 00020002000000040000000052 Row ..X W* 2 1 0 0x0000 0x40000000 对于使用 -db 数据库名称选项指定的数据库,开头的结果会显示该数据库的锁定。您会发 现 TranHdl 2 正在等待 TranHdl 3 挂起的锁定。 事务: Address AppHandl [nod-index] TranHdl Locks State Tflag Tflag2 Firstlsn Lastlsn LogSpace SpaceReserved TID AxRegCnt GXID

db2pd命令捕获死锁信息

本文通过一个实例讲解了在DB2版本9以后,如何使用db2pd命令捕获死锁信息 死锁经常会存在于我们的应用系统中,如何捕获死锁信息并解决死锁问题,是一个比较复杂的问题。DB2提供了死锁事件监控器来获取死锁信息,可以非常方便地获取死锁信息。从DB2版本8.2.2开始,DB2也可以使用db2pd命令和db2cos脚本来获取死锁信息,提供了一种新的途径来获取死锁信息。 从DB2版本9开始,我们可以使用db2pd -catch 命令来捕获错误信息,然后调用一个sqllib/db2cos 的脚本收集出错时的现场信息。该命令的使用语法如下: Usage: -catch clear | status | [] [count=] Sets catchFlag to catch error or warning. Error Codes: [,] / sqlcode=[,] ZRC (hex or integer) ECF (hex or integer) "deadlock" or "locktimeout" Actions: [db2cos] (default) Run sqllib/db2cos callout script [lockname=] Lockname for catching specific lock (lockname=000200030000001F0000000052) [locktype=] Locktype for catching specific lock (locktype=R or locktype=52) 下面我们通过一个实例来讲解如何使用db2pd -catch命令获取死锁信息。如无特殊说明,命令均使用DB2实例用户执行。 1、将$HOME/sqllib/cfg/db2cos例子脚本拷贝到$HOME/sqllib下,并改变属性为实例用户添加执行权限: cp $HOME/sqllib/cfg/db2cos $HOME/sqllib

java的开发环境和运行环境是一回事吗

Java程序开发与运行环境 Java不仅提供了一个丰富的语言和运行环境,而且还提供了一个免费的Java开发工具集(JavaDevelopersKits,简称JDK)。编程人员和最终用户可以利用这个工具来开发java 程序或调用Java内容。JDK包括以下工具:javacJava语言编译器,输出结果为Java字节码java,Java字节码解释器javapDisassembeler:Java字节码分解程序,本程序返回Java程序的成员变量及方法等信息。javaprof资源分析工具,用于分析Java程序在运行过程中调用了哪些资源,包括类和方法的调用次数和时间,以及各数据类型的内存使用情况等。javahC代码处理工具,用于从Java类调用C++代码javaAppletViewer小应用程序浏览工具,用于测试并运行Java小应用程序javaDebuggerAPIJava调试工具APIPrototypeDebuggerJava调试工具原型 Java开发环境还包括Java类库(包括I/O类库、用户界面类库、网络类库等)和HotJavaWWW浏览器。其中,HotJava浏览器提供了在WWW环境下运行Java代码的一个运行系统,而且还为WWW开发人员提供了一个Java开发框架。Java解释器是面向Java程序的一个独立运行系统,它可以一种稳定、高性能方式运行那些独立于平台的Java 字节码,Java编译器则用于生成这种字节码。 JDK 是整个Java的核心,包括了Java运行环境(Java Runtime Envirnment),一堆Java工具和Java基础的类库(rt.jar)。JDK由一个标准类库和一组建立,测试及建立文档的Java实用程序组成。其核心Java API是一些预定义的类库,开发人员需要用这些类来访问Java语言的功能。Java API包括一些重要的语言结构以及基本图形,网络和文件I/O.一般来说,Java API的非I/O部分对于运行Java的所有平台是相同的,而I/O部分则仅在通用Java环境中实现。 JRE(Java Runtime Environment,Java运行环境),运行JAVA程序所必须的环境的集合,包含JVM标准实现及Java核心类库。 在实际应用上讲,JRE的类库只是JDK所有类库里面的一小部分,只是用来支持Java运行的,把其余的调试编辑一类的应用项都去除了!

编译环境

VC++6.0编译环境介绍(1) 大家可能一直在用VC开发软件,但是对于这个编译器却未必很了解。原因是多方面的。大多数情况下,我们只停留在“使用”它,而不会想去“了解”它。因为它只是一个工具,我们宁可把更多的精力放在C++语言和软件设计上。我们习惯于这样一种“模式”:建立一个项目,然后写代码,然后编译,反反复复调试。但是,所谓:“公欲善其事,必先利其器”。如果我们精于VC开发环境,我们是不是能够做得更加游刃有余呢? Visual C++可新建的 Projects项目 Visual C++可新建的 File文件 Visual C++的Build设置

https://www.360docs.net/doc/158711491.html,pile TEST.cpp选项只编译当前文件而不调用链接器或其它工具。输出窗口将显示编译过程检查出的错误或警告信息,在错误信息处单击鼠标右键,可以得到错误代码的位置 2. Build TEST.exe 选项对最后修改过的源文件进行编译和链接 3. Rebuild All选项该选项允许用户编译所有的源文件,而不管它们何时曾经被修改过 4. Batch Build选项该选项能单步重新建立多个工程文件,并允许用户指定要建立的项目类型.VC提供了两种目标应用程序类型 Win32 Release(发行版)、Win32 Debug(调试版)。 我们先来看一下VC的处理流程,大致分为两步:编译和连接。源文件通过编译生成了.obj文件;所有.obj文件和.lib文件通过连接生成.exe文件或.dll 文件。下面,我们分别讨论这两个步骤的一些细节。 工程配置对话框在这个对话框中,左上方的下拉列表框用于选择一种工程配置,包括有Win32 Debug、Win32 Release和All Configurations(指前两种配置一起),某些选项在不同的工程配置中有不同的缺省值。左边的树形视图给出了当前工程所有的文件及分类情况。如果我们把工程“Schedule”置为高亮显示(正如图9-1那样),对话框的右边就会出现总共十个选项卡,其中列出了与工程有关的各种选项,不少选项卡中有一个Reset按钮,按下它后可以把选项卡内的各项设置恢复到生成工程时的初始值。如果我们在树形视图中选择一个文件类或一个文件,那么对话框右边的选项卡会自动减少到一个或两个,其中列出的都是与选中的文件类或文件有关的选项。 编译参数的设置。主要通过VC的菜单项Project->Settings->C/C++页来完成。我们可以看到这一页的最下面Project Options中的内容,一般如下:

005_MyEclipse中编译环境和运行环境不一致的问题

MyEclipse中编译环境和运行环境不一致的问题 2012/9/12 常常我们在开发java程序的时候我们会遇到如下图所示的错误 为什么会出现这样一个问题主要是因为运行环境版本过低或则说是编译环境版本过高的问题,也就是说我们java程序使用高版本的编译器编译的而放到低版本的运行环境中运行,在高版本编译环境中编译的时候会用高版本的java规范来编译、解析java源程序,放到低版本的运行环境中后找不到高版本的里面用到的API,所以会报这样的错误 解决的问题当然是有两个: 1是用较低版本的编译环境来编译源代码,这个时候也就会限制在开发的过程中用到高版本JDK的新特性 2用较高版本的运行环境去运行在较高版本的编译去编译出来的代码 我们可以在建立一个java工程的时候就选择这些项:

上图是我们建立JavaProject的时候出现的界面,我们先看画红线1处,一般我们在MyEclipse中都会用MyEclipse默认自带的运行环境,这里面运行环境是JRE1.5点击画红线2处我们我们可以看到以下界面

我们看划红线的2处有这里是MyEclipse中自带的JRE我们可以点击1处添加一个我们想要的JRE,一般都是我们电脑中安装的JDK中代的JRE

这里我们可以点击划红线处选择我们我的运行环境

我们再找到我们安装JDK的时候会有上面如图的目录结构 划红线1处jdk1.6.0_10这里面是既有开发环境又有运行环境我们可以选它(个人习惯选它) 划红线2处jre6是我们的运行环境我们也可以选它 选择后我们可以点击3处确定然后有如下界面出现:

我们点击OK即可最后回到初始界面我们选择一下便会有

db2 实战常用命令

db2 force application all –断开所有链接数据库的应用 db2 list application-查看连接数据库的应用 db2 bakup db ksdbs 备份数据库 db2start db2stop启停数据库 db2 connect reset断开所有链接 scp get trans.ini -r back@10.10.9.160/home/back/bccbin \ scp local_file remote_username@remote_ip:remote_folder 或者 scp local_file remote_username@remote_ip:remote_file scp -r ip:/db/dbhome/dbguard 【1】 db2top –d ksdbs db2pd -d ksdbs -stat >stat.log 查看数据库状态(数据超大超详细) 【1】find -type f | xargs dos2unix 遍历格式转换 【1】 find . -name [A-Z]* -print 查找当前目录下以大写字母命名的文件 【1】 >db2ckbkp 检查数据库的完整性 >tee 命令 用途--显示程序的输出并将其复制到一个文件中。 【1】db2 connect reset db2 list directory db2 list active databases db2 get db cfg db2 get db cfg 【1】归档日志 db2 update db cfg for db_name using LOGRETAIN ON 更改归档目录: db2 update db cfg for db_name using LOGARCHMETH1 "disk:/archive/db_name_db_log" 在我重新连接数据库的时候提示: db2 connect to t_1 to mydb SQL1116N A connection to or activation of database "T_1" cannot be made because of BACKUP PENDING. SQLSTATE=57019 网上找了n多最后才知道 若修改数据库LOGRETAIN参数,从循环日志模式改为归档日志模式,则会导致数据库backup pending状态。

(环境管理)C的运行环境和过程

【目的与要求】 1.了解Dos、Windows环境下C语言的运行环境,了解所用的计算机系统的基本操作方法,学会独立使用该系统。 2.了解在该系统上如何编辑、编译、连接和运行一个C程序。 3.通过运行简单的C程序,初步了解C源程序的特点。 【上机内容】 【基础知识】 通过课堂上学习,我们对C语言已有了初步了解,对C语言源程序结构有了总体的认识,那么如何在机器上运行C语言源程序呢?任何高级语言源程序都要“翻译”成机器语言,才能在机器上运行。“翻译”的方式有两种,一种是解释方式,即对源程序解释一句执行一句;另一种是编译方式,即先把源程序“翻译”成目标程序(用机器代码组成的程序),再经过连接装配后生成可执行文件,最后执行可执行文件而得到结果。 C语言是一种编译型的程序设计语言,它采用编译的方式将源程序翻译成目的程序(机器代码)。运行一个C程序,从输入源程序开始,要经过编辑源程序文件(·C)、编译生成目标文件(·obj)、连接生成可执行文件(·exe)和执行四个步骤。 下面主要介绍Turbo C下运行C语言源程序。 Turbo C是美国Borland公司推出的IBM PC系列机的C语言编译程序。它具有方便、直观、易用的界面和丰富的库函数。它向用户提供了集成环境,把程序的编辑、编译、连接和运行等操作全部集中在一个界面上进行,使用十分方便。 1 Turbo C工作环境介绍 一个C语言程序的实施是从进入Turbo C的集成环境开始的,而进入C语言的环境,一般有两种途径:从DOS环境进入和从Windows环境进入。 (1) 从DOS环境进入: 在DOS命令行上键入: C>CD \TC↙(指定当前目录为TC子目录) C>TC↙(进入Turbo C环境)

实验1 C语言的运行环境和运行过程#完成

实验一C语言的运行环境和运行过程 班级电信132 学号201315100221 姓名林青辉 一、实验目的 1、掌握c程序设计编程环境visual c++,掌握运行一个c程序设计的基本步骤,包括编辑、编译、连接和运行。 2、掌握c语言程序设计的基本框架,能够编写简单的c程序。 3、了解程序调试的思想,能找出并改正c程序中的语法错误。 二、实验内容 1、在“我的电脑”上新建一个文件夹,用于存放c程序,文件夹名字可以是学号姓名。 2、调试示例,在屏幕上显示一个短句“Hello World!”。 源程序 #include void main() { printf(“Hello World!\n”); } 运行结果: Hello World! 基本步骤:(要求熟练掌握) (1)启动VC++ “开始”->“程序”->“Microsoft Visual Studio 6.0”->“Microsoft Visual C++6.0”进入VC++编程环境。 (2)新建文件(*.cpp) “文件”->“新建”,单击“文件”选项卡,选择“C++Source Files”,修改文件保存“目录”和“文件”(文件名),单击“确定”。 (3)编辑和保存(注意:源程序一定要在英文状态下输入,即字符标点都要在半角状态下,同时注意大小写,一般都用小写) 在编辑窗口输入源程序,然后执行“文件”->“保存”或“文件”->“另存为” (4)编译(*.obj)用来检查语法错误 “编译”->“编译”或Ctrl+F7,在产生的工作区队话框中,选择“是”。 (5)连接(*.exe) “编译”->“构件”或F7 (6)运行 “编译”->“执行”或Ctrl+F5 (7)关闭程序工作区 “文件”->“关闭工作区” (8)打开文件 “文件”->“打开” (9)查看C源文件、目标文件和可执行文件的存放位置。

IBM DB2 Connect 简介

IBM DB2 Connect 简介: 内有乾坤 2005 年 4 月 对于那些脱离大型机的应用程序——分布式应用程序来说,IBM? DB2? Connect? 已成为向它们开放 DB2 for z/OS 数据库以及 zSeries 硬件平台传统公认的所有优点的首选方法。本文是一个由 5 部分组成的系列中的第一篇文章,这个系列将介绍 DB2 Connect 的一些主要特性,这些特性有助于提高交付随需应变解决方案的能力。 简介 1993 年,计算机界的专家们预测大型机(mainframe)将迅速退出历史舞台。他们宣称,未来的计算基础设施将会是一个高度分布的、松散连接的个人电脑和客户机-服务器系统的集合。作为该行业的相关参与者,IBM 几乎无立身之处。 我们都知道后来是怎么回事。IBM 设法在分布式市场重新占得先机,并成为大型机(mainframe)技术的“主要”支持力量。从价格的角度来看,IBM 大大缩减了大型机的价格。从技术的角度来看,IBM 放弃了为其大型机提供动力的双极技术(bi-polar technology),而将大量赌注放在 CMOS 芯片技术上,试图通过这种方式,以剧减的价格交付大型机级别的计算。更重要的是,对于所谓大型机是一种过时的技术,属于大型机的时代已经一去不复返这类荒诞的说法,这是一个直接有力的反击。 如今,企业比以前更多地使用大型机作为其计算基础设施的基础。与此同时,Linux?、UNIX?、Windows? 和其他客户机-服务器系统(在此处被称作分布式平台)并没有消失,因为大型机又重新为它们在企业中赢得了地位。 实际上,这些分布式计算基础设施经历了一个发展的过程。最终的结果是,客户希望将分布式平台的简单性和长处与大型机技术无可匹敌的强大性相结合。如果说信息技术(IT)中有一个领域能让这种结合产生立杆见影的效果,那么这个领域一定是数据库应用领域。 IBM DB2 Universal Database? for z/OS (DB2 for z/OS) 原本是一种大型机数据库,现在已转型为世界上第一种用于客户机-服务器应用程序的数据库服务器。在如今的数据中心里,当您使用运行在大型机上的 CICS 或 COBOL 应用程序时,很可能会遇到 DB2 for z/OS 被用作运行在 Windows、UNIX 和 Linux 上的应用程序的数据库服务器的情况。 正是在这种环境下,我发现 IBM DB2 Connect (DB2 Connect) 产品扮演着一个中心角色。如今,对于那些脱离大型机的应用程序——分布式应用程序来说,DB2 Connect 已成为向它们开放 DB2 for z/OS 数据库和 zSeries 硬件平台的所有传统公认优点的事实上的首选。 为什么当其他产品遭遇失败的时候,DB2 Connect 却能获得成功呢?这个关于DB2 Connect 的系列试图描述 DB2 Connect 的一些关键特性,我们相信正是这

Pages 的简介与使用方法

株洲职业技术学院专业论文(设计)

题目: 关于Pages 的简介与使用方法 Pages on the history and method of use 学院株洲职业技术学院 年级专业苹果动漫1201班 学生姓名龙甜 学号201210330124 指导教师李思静 完 成 日 期 2012 年 12 月 株洲职业技术学院专业论文 诚信声明 本人郑重声明:所呈交的专业论文,题目《 关于Pages的简介与使用方法》 是本人在指导教师的指导下,进行研究工作所取得的成果。对本文的研究做出重要贡献的个人和集体,均已在文中以明确方式注明。除此之外,本论文不包含任何其他个人或集体已经发表或撰写过的作品成果。本人完全意识到本声明应承担的法律责任。

作者签名:龙甜 日期:2012年12月21日 关于P a g e s的简介与使用方法 龙甜 摘要 P a g e s是苹果公司多功能办公软件套装A p p l e W o r k s的继承者,是一个用于文字处理和页面排版的应用程序。它是由苹果公司所开发,包括在i W o r k软件套装中。P a g e s支持多栏排版,文本段落样式,脚注和其他高级文字处理功能,并为用户提供了强大的模板功能。创建的文档可以导出多种文件格式,同样也能导入A p p l e W o r k s和微软W o r d文件。文档中可直接绘制形状,并修改属性;可以环绕文本;可以插入图形,并设置阴影,多角度旋转等。并且,P a g e s可以制作各种宣传海报,新闻报道,贺卡,请柬,论文和教学材料等。并能从i T u n e s,i M o v i e和i P h o t o中接受数据,设置U R L链接。 关键词:P a g e s使用方法苹果 Abstract P a g e s i s a A p p l e C o r p m u l t i f u n c t i o n a l o f f i c e s o f t- w a r e s u i t e a s u c c e s s o r t o A p p l e W o r k s,i s o n e f o r w o r d p r o c e s s i n g a n d p a g e l a y o u t a p p l i c a t i o n.I t i s t h e A p p l e C o r p f o r t h e d e v e l o p m e n t,i n c l u d i n g i n t h e i Wo r k s o f t- w a r e s u i t e.P a g e s s u p p o r t s m u l t i p l e c o l u m n l a y o u t,t e x t p a r a g r a p h s t y l e s,f o o t n o t e s a n d o t h e r a d v a n c e d t e x t p r o c-

MTK编译环境搭建

MTK编译环境搭建 系统说明:win7 64位系统。 工具软件: (1)RVDS_3_1.zip (2)rvds4cr.zip (3)ActivePerl-5.16.2.msi (4)RVCT3.1_1021.zip 一、安装RVCT步骤 1. 将桌面主题设置为“Windows经典”(点击右键--->个性化)。 2. 解压并打开RVDS_3_1文件夹; 点击setup.exe右键进入属性--兼容性; 以兼容模式运行,选框选中Windows XP(Service Pack 3); 应用确认并退出。 3. 双击setup.exe运行,一步步安装完成。 4. 复制..\rvds4cr\rvds4.crack文件夹下所有文件到C:\Program Files\ARM目录下; 双击crack.bat,等待运行结束。 5. 开始菜单--->所有程序--->ARM--->点击运行License Wizard v4.1---> 下一步--->多选框选择“Install License”; 如下图所示,选择C:\Program Files\ARM\License目录下的License.dat; 然后add,下一步完成。 6. 重启电脑,重启之后再cmd .exe里面输入armcc验证是否安装ok。

二、安装perl 1. 运行ActivePerl-5.16. 2.msi直接一步步安装即可; 2.cmd .exe里面输入perl -vsn验证是否安装ok。 三、升级RVCT至3.1_1021 1、解压RVCT3.1_1021.zip,替换目录C:\Program Files\ARM下的RVCT和Licenses中相关的文件。 2、双击解压文件夹中的注册表文件env.reg进行注册表更新。 3、cmd .exe里面输入armcc验证RVCT是否已升级至RVCT3.1_1021。

使用db2pd 进行监视和故障诊断

db2 使用db2pd 进行监视和故障诊断 因为db2pd工具可从DB2? 内存集合迅速返回即时信息,所以该工具可用于故障诊断。 该工具不需要获得任何锁存器或使用任何引擎资源就可以收集信息。因此,在db2pd收集信息时,有可能(并且预计)会检索到正在更改的信息;这样,数据可能不是十分准确。如果遇到正在更改的内存指针,可使用信号处理程序来防止db2pd异常终止。这可能会导致输出中出现诸如以下的消息:“正在更改的数据结构已强制终止命令”。虽然如此,该工具对于故障诊断却非常有用。在不锁存的情况下收集信息有两个好处:检索速度更快并且不会争用引擎资源。 如果要在出现特定SQLCODE、ZRC 代码或ECF 代码时捕获关于数据库管理系统的信息,那么可以使用db2pdcfg -catch命令完成此操作。捕获到错误时,将启动db2cos(调出脚本)。db2cos文件可以自动改变,以便运行解决问题所需的任何db2pd命令、操作系统命令或任何其他命令。在UNIX? 和Linux? 上,模板文件db2cos位于sqllib/bin中。在Windows? 操作系统上,db2cos位于$DB2PATH\bin目录中。 以下是使用db2pd快速故障诊断的一组示例。 场景1:诊断锁定等待 使用db2pd -db -locks -transactions -applications -dynamic 命令来获取下列结果: 对于使用 -db 数据库名称选项指定的数据库,开头的结果会显示该数据库的锁定。您会发现TranHdl 2 正在等待TranHdl 3 挂起的锁定。 您会发现TranHdl 2 与AppHandl 11 相关联,而TranHdl 3 与AppHandl 12 相关联。 您会发现AppHandl 12 最后运行动态语句17, 1。ApplHandl 11 是当前正在运行的动态语句17, 1,而最后运行的语句是94, 1。 您会发现,文本列显示与锁定超时相关联的SQL 语句。 场景2:使用-wlocks选项捕获所有正在等待的锁定 在下面的样本输出中,应用程序1(AppHandl 47)正在执行插入操作,而应用程序2(AppHandl 46)正在选择该表。 场景3:使用-apinfo选项捕获关于锁定所有者和锁定等待者的详细运行时信息 下面的样本输出是在与上面的场景 2 相同的条件下捕获的。 venus@boson:/home/venus =>db2pd -apinfo 47 -db pdtest 数据库分区 0 -- 数据库 PDTEST -- 活动 -- 正常运行 0 天 00:01:30

DB2(常用工具)具体实用

题目: 1、熟练使用db2look工具导出数据库结构 2、使用db2pd监控表空间、锁的使用情况 3、使用db2mtrk 检查数据库内存的分配情况 4、练习使用db2top工具 5、使用db2batch测试SQL语句的性能 解答: 1、熟练使用db2look工具导出数据库结构 [myinst@ye ~]$ db2look -d mydb3 -l -e -o mydb3.dll -- No userid was specified, db2look tries to use Environment variable USER -- USER is: MYINST -- Creating DDL for table(s) -- Output is sent to file: mydb3.dll -- Binding package automatically ... -- Bind is successful -- Binding package automatically ... -- Bind is successful 2、使用db2pd监控表空间、锁的使用情况 #db2pd监控表空间 [myinst@ye ~]$ db2pd -db mydb3 -tablespace Database Member 0 -- Database MYDB3 -- Active -- Up 0 days 00:29:31 -- Date 2015-08-24-11.36.10.344000 Tablespace Configuration: Address Id Type Content PageSz ExtentSz Auto Prefetch BufID BufIDDisk FSC NumCntrs MaxStripe LastConsecPg RSE Name 0x00007F9AC71E0080 0 DMS Regular 32768 4 Yes 4 1 1 Off 1 0 3 Yes SYSCATSPACE 0x00007F9AC71ED220 1 SMS SysTmp 32768 32 Yes 32 1 1 On 1 0 31 No TEMPSPACE1 0x00007F9AC71FA3C0 2 DMS Large 32768 32 Yes 32 1 1 Off 1 0 31 Yes USERSPACE1 0x00007F9AC7207560 3 DMS Large 32768 4 Yes 4 1 1 Off 1 0 3 Yes SYSTOOLSPACE 0x00007F9AC7214700 4 DMS Large 32768 32 Yes 32 2 2 Off 1 0 31 Yes MYSPACE3 Tablespace Statistics:

实验一 C语言的运行环境和运行过程

实验一C语言的运行环境和运行过程 实验目的: 1.掌握c程序设计编程环境visual c++,掌握运行一个c程序设计的基 本步骤,包括编辑、编译、连接和运行。 2.掌握c语言程序设计的基本框架,能够编写简单的c程序。 3.了解程序调试的思想,能找出并改正c程序中的语法错误。 实验内容: 1.在“我的电脑”上新建一个文件夹,用于存放c程序,文件夹名字可 以是学号姓名。 2.调试示例,在屏幕上显示一个短句“Hello World!”。 源程序 #include void main() { printf(“H ello World!\n”); } 运行结果: Hello World! 基本步骤:(要求熟练掌握) 1)启动VC++ “开始”->“程序”->“Microsoft Visual Studio 6.0”->“Microsoft Visual

C++6.0”进入VC++编程环境。 2)新建文件(*.cpp) “文件”->“新建”,单击“文件”选项卡,选择“C++Source Files”,修 改文件保存“目录”和“文件”(文件名),单击“确定”。 3)编辑和保存(注意:源程序一定要在英文状态下输入,即字符 标点都要在半角状态下,同时注意大小写,一般都用小写) 在编辑窗口输入源程序,然后执行“文件”->“保存”或“文件” ->“另存为” 4)编译(*.obj)用来检查语法错误 “编译”->“编译”或Ctrl+F7,在产生的工作区队话框中,选择“是”。 5)连接(*.exe) “编译”->“构件”或F7 6)运行 “编译”->“执行”或Ctrl+F5 7)关闭程序工作区 “文件”->“关闭工作区” 8)打开文件 “文件”->“打开” 9)查看C源文件、目标文件和可执行文件的存放位置。 源文件在保存目录下,目标文件和可执行文件在“保存目录 \Debug”中 3.编程,在屏幕上显示一个短句“this is my first c program.”。

C语言程序的运行环境

C语言程序的运行环境 使用TC的主要步骤 1、进入TC环境 ?在Windows下运行TC.EXE文件可以双击该文件 ?在DOS下运行该文件可输入如下行命令: D:\TC\TC (假设TC安装在D盘下) 2、输入程序 利用功能键F10,可使菜单File高亮显示,按回车键,可弹出File菜单,根据需要进行相应选择,如File / New,则原来在编辑窗口中的程序被清除,此时可以开始输入新程序。 3、编译、连接和运行程序 选择菜单Run / Run,若程序无误,编译和连接没有问题,程序将正常运行并自动转入用户屏幕,其上显示相应提示信息,要求用户输入两个整数,输入完毕屏幕返回到原编辑状态。 选择菜单Run / User Screem,切换到用户屏幕,可以查看程序的运行状态和最后运行结果. 按任意键返回原编辑窗口。 ?若编译或连接过程中有错,则系统在信息窗口指出错误,此时高亮条停留在信息窗口的第一条错误信息上,按回车键光标回到编辑窗口并找到需修改的位置。 4、保存文件 选择菜单File / Save,在弹出的提示框中输入程序的保存路径,如: d:\ex1_1.c 检查无误后,Ctrl+F9键(编译、连接和运行),再按Alt+F5键(观察运行结果),按任意键返回编辑窗口,并按功能键F2存盘。 选择菜单File / Write to,在对话框中输入新盘符和文件名存盘。 5、退出TC开发环境 选择菜单File / Exit,则可退出TC集成开发环境。 选择菜单File / Exit货按快捷键Alt+X退出TC开发环境。退出后请检查一下文件是否已保存到指定路径。 6、导入程序 ?选择菜单File / Load或按功能键F3,在出现的对话框内输入盘符和路径后按回车键,在出现的文件框中找到源程序文件名,按回车键把该文件导入TC环境。 ?在进入TC开发环境的同时导入文件,只需直接双击C源程序文件。

传统工具简介及使用方法

传统工具简介及使用方法 我国幅员辽阔,各地都有一批手艺高超的匠人,他们使用的工具也是五花八门,但是有些工具是经常用到的,先简单介绍几种常用的工具 梆口:是刨子之中最大的也是最长的,专门用来长板料对缝,比如做箱子和板柜等。 长刨子:主要用来刮长料,用它刨出来的料能达到又平又直 二刨子:它的使用效率最高,所有木料初始工作都要靠它来完成净刨:是常用的刨子最小的,用做产品最后一道工序刨光,净面。 歪嘴子:一般的歪嘴子都能调节宽度,可用做裁口 板刨子:用来裁口后的收根 线刨子:线刨子的种类很多,主要做镜框和家具门边起的花线 勒刀:较软的木料裁口,效率很高 线勒子:固定尺寸划线用的 带溜子:裁口用的 槽刨子:厢板用的,有各种尺寸的

偏口:特殊用途的长刨子,专门用来长板料对缝,比如做箱子和板柜等 锛子:主要是盖房子锛屋的大梁,檩子等 锯:锯的种类太多了,主要有拐子锯,双面齿刀具,单面齿刀具等 *:传统锯的齿大致分三类,(一)左右(二)左中右(三)左右中。作用主要是截锯,顺锯,截顺锯等。另外伐锯齿时的角度也可以调整锯的用途。 *:做刨子时要根据它的用途调整角度,二刨子坡度稍大一些推进时省力,但是不拿炝茬。净刨坡度小一些净面效果好。这也要根据各地使用的木料来调整。总之活是死的,人是活的。各村都有各村的高招。 梆口:是刨子之中最大的也是最长的,专门用来长板料对缝,比如做箱子和板柜等 7.jpg(21.56 KB)

长刨子:主要用来刮长料,用它刨出来的料能达到又平又直16.jpg(52.12 KB)

净刨:是常用的刨子最小的,用做产品最后一道工序刨光,净面。 12.jpg(84.39 KB)

db2pd简介及使用方法

1.打开 db2pd – Monitor and Troubleshoot DB Command,如图 3 所示。 图 3. DB2 Information Center 中关于 db2pd 工具的信息

调用 db2pd 工具有两种方式。可以用交互模式调用 db2pd 工具,或者直接在操作系统命令提示符下运行。要是用交互模式执行该工具,可以在操作系统命令提示符下输入 db2pd –interactive 或者直接输入 db2pd,这样将看到 db2pd 命令提示符db2pd>,可以输入命令选项。使用–help 选项可以获得帮助信息。退出 db2pd 命令提示符只需要输入 quit 或者 q。图 4 中的例子说明了如何使用交互模式显示当前的代理。 图 4. 用交互模式调用 db2pd 在操作系统命令提示符下调用该工具可以输入带有命令选项的 db2pd 命令。下面的例子(图 5)使用 -agents 选项显示了所有的活动代理。 图 5. 在操作系统命令提示符下调用 db2pd

此外,还可以通过将选项保存在文件中或者在 DB2PDOPT 环境变量中设置选项来控制该命令。下面的例子(图 6)说明可以将 -agents 选项保存在一个(在该例中)名叫file.out的文件中,然后使用 db2pd –command file.out 执行选项。 图 6. 将 db2pd 选项保存在文件中 如果要使用 DB2PDOPT 环境变量,可以将 DB2PDOPT 设成需要的选项然后像下面这样调用 db2pd: 图 7. 在 DB2PDOPT 环境变量中设置 db2pd 选项

相关文档
最新文档