当前位置:文档之家› ucosII在mega128的移植

ucosII在mega128的移植

ucosII在mega128的移植
ucosII在mega128的移植

按键精灵插件使用说明

函数说明: 1.TransformWindow(窗口句柄) 功能:转换窗口,对要取后台图色数据的窗口使用该函数后才能取后台图色数据。如果是DX图形绘图的窗口,DX绘图区域必须有部分移到屏幕外,否则无法使用。转换窗口后,有些窗口(特别是大多数游戏的)要等待一会儿才能用其它函数可靠地取到后台图色数据,等待的时间要大于画面两次刷新的时间间隔。转换后到取消转换前,可以无限次使用取到后台图色数据的命令,即通常只需要转换一次。 参数: 1)窗口句柄:整型数。 2.UnTransformWindow(窗口句柄) 功能:取消窗口转换,DX图形绘图的窗口,用过TransformWindow后,必须用UnTransformWindow取消窗口转换才能让DX绘图完全移到屏幕中,否则后很严重(不会损坏电脑的),自己试下就知道了。 参数: 1)窗口句柄:整型数。 3.GetPixelColor(窗口句柄,横坐标,纵坐标)[颜色值] 功能:获得指定点的颜色 参数: 1)窗口句柄:整型数。 2)横坐标:整型数,窗口客户区坐标。 3)纵坐标:整型数,窗口客户区坐标。 返回值: 颜色值:整型数。 例子: Plugin hwnd=Window.Foreground() Plugin Window.Move(hwnd,-30,10) Plugin BGCP2_02.TransformWindow(hwnd) Delay 200 Plugin color=BGCP2_02.GetPixelColor(hwnd,0,0) MsgBox CStr(Hex(color)),4096,"颜色" Plugin BGCP2_02.UnTransformWindow(hwnd) Plugin Window.Move(hwnd,10,10) 4.CmpColor(窗口句柄,横坐标,纵坐标,颜色,颜色最大偏差)[是否满足条件] 功能:判断指定点的颜色,后台的IfColor 参数: 1)窗口句柄:整型数。 2)横坐标:整型数,窗口客户区坐标。 3)纵坐标:整型数,窗口客户区坐标。 4)颜色:整型数。 5)颜色最大偏差:整型数。游戏中不同电脑上显示的颜色会有点偏差,这个参数用于兼容这种情况,它设置的是RGB各颜色分量偏差的最大允许值,取值范围是0-255,0是无颜色偏差。 返回值: 是否满足条件:布尔值,布尔值是用来表达是真是假的,指定点的颜色满足条件就返回真,否则返回假。 例子: Import "BGCP2_02.dll" Plugin hwnd=Window.Foreground() Plugin Window.Move(hwnd,-30,10) Plugin BGCP2_02.TransformWindow(hwnd) Delay 200 Plugin tj=BGCP2_02.CmpColor(hwnd,6,5,&HFF7F00,30) If tj=true MsgBox "满足条件",4096 Else MsgBox "不满足条件",4096 EndIf Plugin BGCP2_02.UnTransformWindow(hwnd) Plugin Window.Move(hwnd,10,10) 5.FindColor(窗口句柄,左边界,上边界,右边界,下边界,颜色,颜色最大偏差,查找方式,横坐标,纵坐标) 功能:找色 参数: 1)窗口句柄:整型数。 2)左边界,整型数,用于设置找色范围,找色区域左上角的横坐标(窗口客户区坐标)。 3)上边界,整型数,用于设置找色范围,找色区域左上角的纵坐标(窗口客户区坐标)。 4)右边界,整型数,用于设置找色范围,找色区域右下角的横坐标(窗口客户区坐标)。 5)下边界,整型数,用于设置找色范围,找色区域右下角的纵坐标(窗口客户区坐标)。

STM32学习笔记

输入模式初始化GPIOE2,3,4 ①IO口初始化:GPIO_InitTypeDef GPIO_InitStructure; ②使能PORTA,PORTE时钟: RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_GPIOE,ENABLE); ③PE.2.3.4端口配置:GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2|GPIO_Pin_3|GPIO_Pin_4; ④设置成(上拉)输入:GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU; ⑤GPIO_Init(GPIOE, &GPIO_InitStructure); 输出模式初始化 ①IO口初始化:GPIO_InitTypeDef GPIO_InitStructure; ②使能PB,PE端口时钟 RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB|RCC_APB2Periph_GPIOE, ENABLE); ③3LED0-->PB.5 端口配置GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5; ④设置(推挽)输出模式GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; ⑤设置IO口速度为50MHz GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; ⑥说明初始化哪个端口GPIO_Init(GPIOB, &GPIO_InitStructure); 在LED灯试验中初始为高电平灭GPIO_SetBits(GPIOB,GPIO_Pin_5); 再初始化相同发输出模式时③④⑤可省略例如(经实验初始化恰好为不同IO口相同IO序号③可省略,应该不规范吧) GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5; //LED1-->PE.5 端口配置, 推挽输出GPIO_Init(GPIOE, &GPIO_InitStructure); //推挽输出,IO口速度为50MHz GPIO_SetBits(GPIOE,GPIO_Pin_5); //PE.5 输出高 1,头文件可以定义所用的函数列表,方便查阅你可以调用的函数; 2,头文件可以定义很多宏定义,就是一些全局静态变量的定义,在这样的情况下,只要修改头文件的内容,程序就可以做相应的修改,不用亲自跑到繁琐的代码内去搜索。 3,头文件只是声明,不占内存空间,要知道其执行过程,要看你头文件所申明的函数是在哪个.c文件里定义的,才知道。 4,他并不是C自带的,可以不用。 5,调用了头文件,就等于赋予了调用某些函数的权限,如果你要算一个数的N次方,就要调用Pow()函数,而这个函数是定义在math.c里面的,要用这个函数,就必需调用math.h 这个头文件。

ATMEGA128--AVR教程

AVR教程(1):AVR单片机介绍 作者:微雪电子文章来源:https://www.doczj.com/doc/069612990.html, 点击数: 478 更新时间:2008-4-1 23:58:21 AVR,它来源于:1997年,由ATMEL公司挪威设计中心的A先生与V先生利用ATMEL公司的Flash新技术,共同研发出RISC精简指令集的高速8位单片机,简称AVR。 AVR单片机特点 每种MCU都有自身的优点与缺点,与其它8-bit MCU相比,AVR 8-bit MCU最大的特点是:●哈佛结构,具备1MIPS / MHz的高速运行处理能力; ●超功能精简指令集(RISC),具有32个通用工作寄存器,克服了如8051 MCU采用单一ACC 进行处理造成的瓶颈现象; ●快速的存取寄存器组、单周期指令系统,大大优化了目标代码的大小、执行效率,部分型号FLASH非常大,特别适用于使用高级语言进行开发; ●作输出时与PIC的HI/LOW相同,可输出40mA(单一输出),作输入时可设置为三态高阻抗输入或带上拉电阻输入,具备10mA-20mA灌电流的能力; ●片内集成多种频率的RC振荡器、上电自动复位、看门狗、启动延时等功能,外围电路更加简单,系统更加稳定可靠; ●大部分AVR片上资源丰富:带E2PROM,PWM,RTC,SPI,UART,TWI,ISP,AD,Analog Comp arator,WDT等; ●大部分AVR除了有ISP功能外,还有IAP功能,方便升级或销毁应用程序。 ●性价比高。 开发AVR单片机,需要哪些编译器、调试器? 软件名称类型简介官方网址 AVR Studio IDE、汇编编 译器 ATMEL AVR Studio集成开发环境(IDE),可使用 汇编语言进行开发(使用其它语言需第三方软件协 助),集软硬件仿真、调试、下载编程于一体。ATMEL 官方及市面上通用的AVR开发工具都支持AVRStudio。 https://www.doczj.com/doc/069612990.html, GCCAVR (WinAVR) C编译器 GCC是Linux的唯一开发语言。GCC的编译器优化 程度可以说是目前世界上民用软件中做的最好的,另 外,它有一个非常大优点是,免费!在国外,使用它 的人几乎是最多的。但,相对而言,它的缺点是,使 https://www.doczj.com/doc/069612990.html,

STM32学习笔记_STM32F103ZET6

STM32F103 系列芯片的系统架构: 系统结构: 在每一次复位以后,所有除SRAM 和FLITF 以外的外设都被关闭,在使用一个外设之前,必须设置寄存器RCC_AHBENR 来打开该外设的时钟。

GPIO 输入输出,外部中断,定时器,串口。理解了这四个外设,基本就入门了一款MCU。 时钟控制RCC: -4~16M 的外部高速晶振 -内部8MHz 的高速RC 振荡器 -内部40KHz低速RC 振荡器,看门狗时钟 -内部锁相环(PLL,倍频),一般系统时钟都是外部或者内部高速时钟经过PLL 倍频后得到 - 外部低速32.768K 的晶振,主要做RTC 时钟源

ARM存储器映像: 数据字节以小端格式存放在存储器中。一个字里的最低地址字节被认为是该字的最低有效字节,而最高地址字节是最高有效字节。

存储器映像与寄存器映射: ARM 存储器映像 4GB 0X0000 00000X1FFF FFFF 0X2000 00000X3FFF FFFF 0X4000 00000X5FFF FFFF

寄存器说明: 寄存器名称 相对外设基地址的偏移值 编号 位表 读写权限 寄存器位 功能说明 使用C语言封装寄存器: 1、总线和外设基地址封装利用地址偏移 (1)定义外设基地址(Block2 首地址) (2)定义APB2总线基地址(相对外设基地址偏移固定) (3)定义GPIOX外设基地址(相对APB2总线基地址偏移固定)(4)定义GPIOX寄存器地址(相对GPIOX外设基地址偏移固定)(5)使用 C 语言指针操作寄存器进行读/写 //定义外设基地址 #define PERIPH_BASE ((unsigned int)0x40000000) 1) //定义APB2 总线基地址 #define APB2PERIPH_BASE (PERIPH_BASE + 0x00010000) 2) //定义GPIOC 外设基地址 #define GPIOC_BASE (AHB1PERIPH_BASE + 0x0800) 3) //定义寄存器基地址这里以GPIOC 为例 #define GPIOC_CRL *(unsigned int*)(GPIOC_BASE+0x00) 4) #define GPIOC_CRH *(unsigned int*)(GPIOC_BASE+0x04) #define GPIOC_IDR *(unsigned int*)(GPIOC_BASE+0x08) #define GPIOC_ODR *(unsigned int*)(GPIOC_BASE+0x0C) #define GPIOC_BSRR *(unsigned int*)(GPIOC_BASE+0x10) #define GPIOC_BRR *(unsigned int*)(GPIOC_BASE+0x14) #define GPIOC_LCKR *(unsigned int*)(GPIOC_BASE+0x18) //控制GPIOC 第0 管脚输出一个低电平5) GPIOC_BSRR = (0x01<<(16+0)); //控制GPIOC 第0 管脚输出一个高电平 GPIOC_BSRR = (0x01<<0);

按键精灵1--6级答案

以下哪一个不是按键精灵的产品按键箱子录制的脚本没有以下哪个功能记录鼠标特征码下列哪一个命令不属于"全部命令" 内核命令按键精灵自带的抓图工具是按键抓抓哪一种方法能够找到命令的帮助说明在全部命令中搜索命令, 点击后帮助说明会出现在编辑器下方. 按键精灵不可以在以下哪个系统中使用Linux 可以使用神盾功能的程序是小精灵商业版旧版本的脚本导入到新版本中, 以下哪种方法不可以纠正语法错误使用"自动缩进"功能? WaitClick 命令的含义是按任意鼠标键继续? 哪一类脚本程序是按键精灵官方授予销售权的小精灵商业版只要在编辑脚本,切换输入法时,按键精灵就卡住了, 可能是下列哪一个原因Plugin 目录下装有不是官方提供的插件引起的关于加密脚本的描述,下列是错误的是只有会员输入密码可以解开加密脚本GetLastClick 命令的含义是检测上次按过的鼠标键按键精灵生成的小精灵程序的后缀名是EXE 按键精灵会员不能享受的论坛权限是可以访问按键精灵“版版家园”专区享受版主资源网页按键精灵是下列哪一个程序wqm.exe 按键精灵的产品包括以下哪一个按键盒子按键精灵是下列哪一个程序按键精灵9.exe 按键精灵会员卡注册码,没有以下哪一种天卡(1 天) UnlockMouse 命令的含义是解除锁定鼠标位置? 按键精灵会员不能享受的资源是免费小精灵的源代码RightUp 命令的含义是右键弹起按键精灵的功能不包括自动发明汽车、飞机、火箭等机器按键精灵能兼容下列哪一种语言VBS 不能用抓抓工具直接获取的是PID 关于按键精灵的描述,以下正确的是按键精灵是一款绿色的模拟键盘鼠标操作的软件? 脚本编辑界面上没有的按钮是启动? 与取色判断命令没有直接关系的参数是按键码以下哪种方式可以在脚本编辑界面中获取到新的插件点击"资源库"按钮, 然后 导入需要的插件 LeftClick 命令的含义是左键单击按键精灵官方网站的网址是 RestoreMousePos命令的含义是恢复上次保存的鼠标位置如果按键精灵在某些环境失效, 可以使用下列哪个工具神盾SaveMousePo命令的含义是保存当前鼠标所在位置GetCursorPos 命令的含义是得到鼠标位置坐标键盘命令的类型不包括锁定按键精灵里运算符乘号是* KeyPress 命令的含义是按键 MiddleClick 命令的含义是中键单击 LockMouse命令的含义是锁定鼠标位置按键精灵会员不能享受的功能是脚本编写服务GetCursorShape 命令的含义是得到鼠标形状按键精灵自带的用户界面叫做什么QUI 界面RightClick 命令的含义是右键单击按键精灵里运算符减号是- 按键精灵默认的启动热键是F10 属于"全部命令"的是我的命令库“录制”功能不能录制的内容是记录鼠标指向的窗口句柄按键抓抓是下列哪一个程序picker.exe 想要知道脚本是否存在错误, 应该使用下列哪个功能调试以下哪种方式不可以获得论坛银币发布大量无内容的主题贴按键精灵里运算符除号是/ 按键精灵会员不能享受的技术支持是 技术人员上门服务按键精灵自带的功能不包括以下哪一个路由功能 GetLastKey命令在获取一次ANSI字符代码后继续循环执行返回值是?0 变量的定义,以下哪个是正确的dim a 下列哪一种方法不能够正确输入命令鼠标右键单击命令按键精灵的功能是?模拟鼠标键盘操作的工具? MoveF命令的含义是相对移动关于小精灵去广告的描述,下列正确的是会员用户在“制作按键小精灵”界面上->更多设置->选择会员去广告(是)即可? 按键精灵里运算符加号是+ 对小精灵的描述,以下是正确的按键小精灵是把按键精

Atmega128开发板使用说明书

Atmega128开发板使用说明书 概要介绍 Atmega128开发板上硬件资源丰富,接口齐全,基本上涵盖了Atmega128单片机所能涉及到的所有功能,可以满足单片机开发工程师和电子爱好者的开发实验的需求,或者高校电子、计算机专业学生的学习实验的需要。 按照正规产品的要求设计,不纯粹是实验样品,器件选型、原理图、PCB设计的时候都充分考虑了可靠稳定性。 Atmega128的IO口资源丰富,板上所以接口都是独立使用的,不需要任何跳线进行设置, IO口外围扩展使用了2片锁存器74HC574,既可以使实验变得更加简单方便,又能让实验者掌握更多的单片机设计知识。 提供配套软件源代码,学习板的每个实验都有与其相对应的软件代码,是版主从多年的工作经验中提取出来的,并经过优化,具有较高的参考价值。 编程简单,学习板编程不需要专用烧录器,利用计算机的并口即可进行编程,速度快、操作简单。

1.产品清单 Atmega128开发板的配件清单如下,当您第一次拿到产品的时候,请参照下图认真核对包装内配件是否齐全,以及各配件是否完好无损。 请按照下图安装122*32 LCD,lCD的一脚对准122*32 LCD插座的一脚,切记不要插反

2.硬件布局说明 步 进 电 机 接 口 直 流 电 机 接 口 数 字 温 度 传 感 器 SD 卡 插 座 光 敏 电 阻 ADC 输 入 电 位 器 NTC 热 敏 电 阻 JTAG 接 口 继 电 器 接 口 9V电源输入接口 DAC输出接口 RS485接口 RS232接口 红 外 发 射 管 ISP 编 程 接 口 LCD 对 比 度 调 节 电 位 器 122 * 32 点 阵 LCD 接 口 16 * 2 字 符 LCD 接 口 红 外 接 收 管 433M 射 频 模 块 接 口 3 * 4 矩阵键盘

stm32学习 c语言笔记

这是前段时间做彩屏显示时候遇到的难题, *(__IO uint16_t *) (Bank1_LCD_C)这个就是将后面的数据转换为地址,然后对地址单元存放数据。可如下等效: __IO uint16_t *addr; addr = (__IO uint16_t *) Bank1_LCD_C; #ifdef和#elif连用,语法和if。。。else if语句一样 推挽输出增加驱动,可以驱动LED起来 static int count=0 count++ 这个语句中,count仅仅被初始化一次 以后加加一次期中的值就不会变化了 SysTick_CTRL(控制和状态寄存器) SysTick_LOAD(重装载寄存器) SysTick_VAL(当前值寄存器) SysTick_CALIB(校准值寄存器)

TFT经验:弄多大的相片,必须先把那个相片的尺寸改掉,再去取模,才可以,要不会有重影的嘿嘿嘿嘿 VBAT 是电池供电的引脚 VBAT和ADD同时都掉电时才能让备份区复位。 volatile一个变量的存储单元可以在定义该变量的程序之外的某处被引用。 volatile主要是程序员要告诉编译器不要对其定义的这个变量进行优化,防止其不能被引用,不能被改变。 VDDA>2.4V ADC才能工作 VDDA>2.7V USB才能工作 VDD(1.8-3.6v) VBAT=1.8-3.6v VSS VSSA VREF必须接到地线 没有外部电源供电时必须VBAT接上VDD 使用PLL时,VDDA必须供电

printf("abs(x)=%d\n",x<0?(-1)*x:x) 条件编译是问号前边为真则取冒号前边的值,为假的,则取后边的值。 所以说上边这条打印的语句是打印x的绝对值。 //stm32f10x_nvic.c stm32f10x_lib.c stm32f10x_gpio.c stm32f10x_flash.c stm32f10x_rcc.c TIM6 TIM7基本定时器 (只有这两个定时器不能产生PWM) TIM1 TIM8高级控制定时器 TIM2 TIM3 TIM4 TIM5为通用定时器 其中高级定时器TIM1和TIM8可以同时产生多达7路的PWM输出。而通用定时器也能同时产生多达4路的PWM输出,这样,STM32最多可以同时产生30路PWM输出! 修改和自己写代码时候

Mega128熔丝位汇总

附录A ATmega128熔丝位汇总 编程与状态说明: 在AVR的器件手册中,使用已编程(Programmed)和未编程(Unprogrammed)定义熔丝位的状态。“Unprogrammed”表示熔丝状态为“1”(禁止);“Programmed” 表示熔丝状态为“0”(允许) 1:未编程(检查框不打钩) 0:编程 (检查框打钩) AVR的熔丝位可多次编程的,不是OPT熔丝。 熔丝位的配置(编程)可以通过并行方式、ISP串行方式、JTAG串行方式实现。 AVR芯片加密锁定后(LB2/LB1 = 1/0,0/0)不能通过任何方式读取芯片内部Flash 和E2PROM中的数据,但熔丝位的状态仍然可以读取,但不能修改配置。 芯片擦除命令是将Flash和E2PROM中的数据清除,并同时将两位锁定位状态配置成无锁定状态(LB2/LB1 = 1/1)。但芯片擦除命令并不改变其它熔丝位的状态。 下载编程的正确的操作程序是:在芯片无锁定状态下,下载运行代码和数据,配置相关的熔丝位,最后配置芯片的加密锁定位。 芯片被加密锁定后,如果发现熔丝位配置不对,必须使用芯片擦除命令,清除芯片中的数据,解除加密锁定。然后重新下载运行代码和数据,修改配置相关的熔丝位,最后再次配置芯片的加密锁定位。 1. 芯片加密锁定熔丝 加密锁定位 加密锁定方式 LB2 LB1 保护类型(用于芯片加密) 1(默认) 1 1 无任何编程加密锁定保护 2 1 0 禁止串/并行方式对Flash和E2PROM的再编程 禁止串/并行方式对熔丝位的编程 3 0 0 禁止串/并行方式对Flash和E2PROM的再编程和校验 禁止串/并行方式对熔丝位的编程 注:加密锁定熔丝只能使用芯片擦除命令还原为默认的无任何加密锁定保护状态 2.功能熔丝 说 明 熔丝名称 1 0 默认 M103C ATmega128工作模式 ATmega103 兼容模式 0 WDTON 看门狗由软件控制 看门狗始终工作,软件只可以调节溢出时间 1 SPIEN 禁止ISP串行编程 允许ISP串行编程 0 JTAGEN 禁止JTAG口 使能JTAG口 0 EESAVE 芯片擦除时不保留E2PROM数据 芯片擦除时保留E2PROM数据 1 BODEN 禁止低电压检测功能 允许低电压检测功能 1 BODLEVEL 低电压检测门槛电平2.7V 低电压检测门槛电平4.0V 1 OCDEN 禁止JTAG口的在线调试功能 禁止JTAG口的在线调试功能 1

按键精灵教程

变量!神奇的小柜子 变量就是会变化的量。就像一个小柜子,我们可以在柜子里装载不同的东西,而当我们需要找到这些东西的时候,只要记住柜子的名字就可以了。 使用变量的方法是:先定义(给柜子起名)、再赋值(将物品放进柜子)、最后使用(根据柜子名字找到放在其中的物品)。 使用Dim命令定义变量,例如: Dim str1 //定义变量str1 Dim var1=22 //定义变量Var1,并且赋值为22 例子1:使用变量设置输出文字的内容 1、下面红色的是3行脚本,请把他复制到“源文件”当中 Dim str1 str1 = "你很聪明" SayString str1 2、Dim str1 就是定义变量,也就是说我们创建了一个小柜子,给他起名为str1 3、str1 = "你很聪明" 就是赋值,我们把"你很聪明"这几个字放到str1这个小柜子里 4、SayString str1 表示我们输出str1这个变量的内容,也就是说把str1这个小柜子里的内容拿出来交给SayString 这个命令去使用。 5、如果你希望修改喊话的内容,只要修改str1这个小柜子里的内容就可以了。 例子2:变量的一些用法 a=1 把数字1放进柜子a中。 b="你猜对了吗?" 把字符串你猜对了吗?放进柜子b中。字符串必须用""包含。 dc=3.14159265 把小数放进柜子dc中。 num1=1 num1=33 num2=55 sum=num1+num2 首先把33和55分别放入num1和num2中。然后把他们取出来,做加法操作(加法是由CPU来处理的),把结果放在sum中。结果sum等于88 num1=1 num1=33 num1被给值为1,然后又给值为33。此时,num1中存储是的33。1就被覆盖掉了。没有了:) sum=sum+1 这句不等同于数学的加法,也是初学者不容易理解的地方。我们只要想,把sum拿出来和1做加法,再放回sum中就可以了。sum原来的值是88,做完加法后,sum等于89。 pig=1 pig=pig*3+pig 能猜出pig最后等于几么?1*3+1。结果是4 例子3:使用变量输入1到100的数字 VBSCall RunApp("notepad") Delay 2000 a=1

ATmega128几个常用程序例子

ATMEGA128相关例程 自己学avr单片机已经有相当一段时间了,一开始用的是atmega128,觉得不是很好用。于是自己去买了一块16L的芯片,觉得还行。一开始用的是ICC AVR,应为它用起来比较简单,不像winavr那样,要写个Makefie ,比较的麻烦,但icc avr的缺点是太过于简陋,调试程序时,感觉不是很好。后来经同学介绍,用起了winavr,其实也是比较的简单,只不过要加一个makefile而已,其实makefile可以用软件自带的组建自动生成,只需修改几个参数就可以用。后来又用起了code vision avr,虽然不太习惯,也谈不上不好用. 需要注意的是,三个不同的软件所带的同文件不一样。icc avr 是iom128v.h(姑且以128为例),winavr 是avr/io.h,不过makefile中要设置芯片为atmega128.而cvavr则是mega128.h。 记得一开始的时候,我对这些不同的同文件不是很理解,是从一个学长那里了解到,才弄明白的。其实前两个软件只需把头文件稍微改一下基本上可以通用。而最后一个软件的中断的写法似乎不太一样,因而和钱两个软件的兼容性是最差的。 总体说winavr给人的感觉是比较专业 自己学习时多总结吧! 1、流水灯 /* 硬件环境:atmega128开发板 软件环境:CodeVisionAVR-C */ #include #define uchar unsigned char #define uint unsigned int uchart; void timer1_init() { TCCR1B=0X00; //先停止定时器1 TCNT1H=0XF0; //设定定时器初值 TCNT1L=0XBE; TCCR1A=0X00; //启动定时器1 TCCR1B=0X05; //使用1024分频 } interrupt [TIM1_OVF] void timer1_ovf_isr(void) { TCNT1H=0XF0; //重载定时器初值 TCNT1L=0XBE;

STM32学习笔记

STM32学习笔记——时钟频率 ******************************** 本学习笔记基于STM32固件库V3.0 使用芯片型号:STM32F103 开发环境:MDK ******************************** 第一课时钟频率 STM32F103内部8M的内部震荡,经过倍频后最高可以达到72M。目前TI的M3系列芯片最高频率可以达到80M。 在stm32固件库3.0中对时钟频率的选择进行了大大的简化,原先的一大堆操作都在后台进行。系统给出的函数为SystemInit()。但在调用前还需要进行一些宏定义的设置,具体的设置在system_stm32f10x.c文件中。 文件开头就有一个这样的定义: //#define SYSCLK_FREQ_HSE HSE_Value //#define SYSCLK_FREQ_20MHz 20000000 //#define SYSCLK_FREQ_36MHz 36000000 //#define SYSCLK_FREQ_48MHz 48000000 //#define SYSCLK_FREQ_56MHz 56000000 #define SYSCLK_FREQ_72MHz 72000000 ST 官方推荐的外接晶振是8M,所以库函数的设置都是假定你的硬件已经接了8M 晶振来运算的.以上东西就是默认晶振8M 的时候,推荐的CPU 频率选择.在这里选择了: #define SYSCLK_FREQ_72MHz 72000000 也就是103系列能跑到的最大值72M 然后这个C文件继续往下看 #elif defined SYSCLK_FREQ_72MHz const uint32_t SystemFrequency = SYSCLK_FREQ_72MHz; const uint32_t SystemFrequency_SysClk = SYSCLK_FREQ_72MHz; const uint32_t SystemFrequency_AHBClk = SYSCLK_FREQ_72MHz; const uint32_t SystemFrequency_APB1Clk = (SYSCLK_FREQ_72MHz/2); const uint32_t SystemFrequency_APB2Clk = SYSCLK_FREQ_72MHz; 这就是在定义了CPU跑72M的时候,各个系统的速度了.他们分别是:硬件频率,系统时 钟,AHB总线频率,APB1总线频率,APB2总线频率.再往下看,看到这个了: #elif defined SYSCLK_FREQ_72MHz static void SetSysClockTo72(void); 这就是定义72M 的时候,设置时钟的函数.这个函数被SetSysClock ()函数调用,而SetSysClock ()函数则是被SystemInit()函数调用.最后SystemInit()函数,就是被你调用的了

按键精灵简单教程

关于按键精灵9.0对于批量工作速度的快速提升 首先这是一个非常简单好用的工具。 新建输入文件名,写代码,点调试,按启动热键启动。 PS:关于录制,不是很好用,有兴趣也可以试试。 修改小数位: 修改小数位,先想想自己手动操作是怎么做的,每一步要做什么。1.双击位号。2弹出位号窗口。3点高级。4如果小数位前的钩没打上,你要打上,已经打上了就不能再点击,所以要判断。5双击整数位,输入数字比如3。6双击小数位,输入数字比如2。 如上所述要点4个点。但这里我要加一个点用于判断窗口有无弹出。先打开抓抓,按电脑截屏键(PrtSc)。 在抓抓中点图像,可以按1~0,这里捉到的点和 有关联,写到代码里后和代码里的是没有关联的。

鼠标移到需要点击的地方,右键点击选择加入到点”1”,点”2”..... 在这条线上取它的位置和颜色值,加入1号点在按钮上取2号点在钩的 位取3号点加入4号点加入5号点 ------------------------------------------------------割------------------------------------------------------------- 选择 代码中先加入Delay 10 延时10毫秒

将放大镜中的1号点中的值写入IfColor 中 Do while 1 IfColor 392,357, "A0A0A0", 0 Then //这里写内容 Exit Do End If Loop 这里可以选择,就是IFCOLOR命令。不过上面选了P3,下面也要记得选P3! 上面的是为了判断双击后的窗口是否弹出,弹出后我们才好进行下面的操作(当然也可以用别的方法)(代码原理:用永循环去) ------------------------------------------------------割------------------------------------------------------------- MoveTo 805, 528 LeftClick 1//点高级所在的位置 Delay 20//延时20毫秒(很重要) ------------------------------------------------------割------------------------------------------------------------- 同理将第三点写入IfColor 805, 528, "FFFFFF", 0 Then IfColor 806, 530, "FFFFFF", 0 Then //如果805,528为白色,也就是没打勾 MoveTo 806, 530 LeftClick 1//打上勾 Delay 20//延时20毫秒 END IF ------------------------------------------------------割------------------------------------------------------------- MoveTo 886,500//点整数位所在的位置 LeftDoubleClick 1//双击,相当于是全选中 KeyPress "3", 1//输入3

学会用按键精灵制作用脚本运行可执行程序

学会用按键精灵制作脚本之RunApp 运行命令教程: 用脚本运行可执行程序 来源:按键学院【按键精灵】Runapp命令,看上去是不是觉得so easy ?不就是runapp 某个程序的路径,然后就可以打开这个程序了吗?老话怎么说来着,越简单的东西越是不简单。Runapp使用起来也是处处暗藏杀机滴。 Runapp命令是个啥? 命令名称RunApp 运行 命令功能启动一个程序或者打开一个文件 命令参数参数1 字符串型,要运行的程序或者文件 重头杀机——你所要启动的程序是带参数的,runapp 不支持启动带参数的程序。 首先,我们可以使用进程查看工具,查看下我们要启动的程序是否是带有参数的。

然后,我们打开进程查看工具,然后点击我们要查看的程序,例如QQ程序。 图1的是QQ的快捷键方式属性;图2是进程工具查看到的QQ程序信息;图3是进程工具界面如果是带有参数的程序,用进程工具打开之后,弹出的图2界面,在程序路径后面会出现参数。 例如:F:\桌面\程序目录\Not.exe $-fl$ 解决方法之一: 1. 鼠标右键,创建快捷方式 1)右击创建好的快捷方式——>属性: 2)“目标内容”填写目标文件路径及参数: 3)F:\桌面\程序目录\Not.exe $-fl$

4)“起始位置”填写目标文件夹: 5)F:\桌面\程序目录 (用进程查看工具查看,有的情况下会发现,程序所在的位置并不是程序的目录,这里要注意确认,一定要填写程序的其实位置,程序所在的目标文件夹的位置) 如图所示: 2. 使用RunApp启动这个快捷方式,例如在此快捷方式在桌面时。 Call RunApp("C:\Users\Death\Desktop\Not.exe.lnk") 经过上面的两步就可以达到预想的目的了。 解决方法之二:

按键精灵图文教程

手把手教你用“按键精灵”图文教程 类型:转载 按键精灵是一个可以模拟电脑操作的软件,您在电脑上的一切动作都可以让按键精灵模拟执行,完全解放您的双手。按键精灵可以帮你操作电脑,不需要任何编程知识就可以作出功能强大的脚本。 如果你还为一些枯燥、繁琐的电脑操作而烦恼,按键精灵绝对会是你最好的帮手。 那么,按键精灵具体能帮我们干什么呢?我们来列举几个例子来说明下。 * 网络游戏中可作脚本实现自动打怪,自动补血,自动说话等; * 办公族可用它自动处理表格、文档,自动收发邮件等; * 任何你觉得“有点烦”的电脑操作都可以替你完成。按键精灵第一个实现了“动动鼠标就可以制作出脚本”的功能。我们不希望为了使用一个小软件而去学习编程知识,考虑到这些,所以按键精灵完全界面操作就可以制作脚本。按键精灵的脚本是纯粹的TXT文件,即使是目前新增了插件功能,也引入了数字签名的机制。因此我们可以放心的使用网站上的脚本而不用担心会有病毒。 脚本就是一系列可以反复执行的命令.通过一些判断条件,可以让这些命令具有一定的智能效果.我们可以通过”录制”功能制作简单的脚本,还可通过”脚本编辑器”制作更加智能的脚本.今天我们就通过录制一个最简单的脚本,来手把手的教大家使用按键精灵。 上网一族一般开机后会先看看自己邮箱,或者看看自己博客;每天如此,可能都有些烦了。现在好了,把这些繁杂的事情交给按键精灵吧。今天我们就来录制一个自动登录博客,并对整个页面进行浏览的脚本。 首先,我们打开“按键精灵”。其运行界面如下(图1): 图1 运行界面 打开软件后点击工具栏上“新建”项(如图2);之后进入“脚本编译器”界面(如图3)。

mega128例程

1、流水灯 /* 硬件环境:atmega128开发板 软件环境:CodeVisionA VR-C */ #include #define uchar unsigned char #define uint unsigned int uchar cnt; void timer1_init() { TCCR1B=0X00; //先停止定时器1 TCNT1H=0XF0; //设定定时器初值 TCNT1L=0XBE; TCCR1A=0X00; //启动定时器1 TCCR1B=0X05; //使用1024分频 } interrupt [TIM1_OVF] void timer1_ovf_isr(void) { TCNT1H=0XF0; //重载定时器初值 TCNT1L=0XBE; DDRE|=1<<2; PORTE|=1<<2; DDRA=0xff; PORTA=cnt; //输出led的值到端口B cnt++; if(cnt==255) cnt=0; } void main() { //DDRB=0XFF; SREG|=0X80; TIMSK=0X04; timer1_init(); while(1) {; } } 2、AD转换+数码管显示 /***************************************************************************/

/*ADC测试程序*/ /*目标器件:ATmega128 */ /*晶振:RC 8MHZ */ /*编译环境:ICCA VR 7.13A */ /*E-Mail:number007cool@https://www.doczj.com/doc/069612990.html, */ /*时间:2010年11月13日*/ //Aref接A VCC(+5V),采用Aref作参考电压 /*用数码管显示AD转换的结果*/ /***************************************************************************/ /*********************************包含头文件********************************/ #include #include /********************************数码管段码表*******************************/ extern const unsigned char tab[]={0x3f,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07, 0x7F,0x6F}; /*********************************全局变量**********************************/ unsigned int adc_rel=0; /**************************************************************************** 函数功能:ADC初始化函数 入口参数: 出口参数: ****************************************************************************/ void adc_init(void) { DDRF&=0XFE; //PORTF0设置为输入,即作为ADC0口输入模拟电压 PORTF&=0XFE; //PORTF0设置为输入低电平 ADCSRA=0x00; //关ADC ADMUX = 0X00; //采用Aref作为参考电压,ADC0单端输入,右对齐 ACSR=(1<

STM32学习笔记(5)通用定时器PWM输出

STM32学习笔记(5):通用定时器PWM输出 2011年3月30日TIMER输出PWM 1.TIMER输出PWM基本概念 脉冲宽度调制(PWM),是英文“Pulse Width Modulation”的缩写,简称脉宽调制,是利用微处理器的数字输出来对模拟电路进行控制的一种非常有效的技术。简单一点,就是对脉冲宽度的控制。一般用来控制步进电机的速度等等。 STM32的定时器除了TIM6和TIM7之外,其他的定时器都可以用来产生PWM输出,其中高级定时器TIM1和TIM8可以同时产生7路的PWM输出,而通用定时器也能同时产生4路的PWM输出。 1.1PWM输出模式 STM32的PWM输出有两种模式,模式1和模式2,由TIMx_CCMRx寄存器中的OCxM位确定的(“110”为模式1,“111”为模式2)。模式1和模式2的区别如下: 110:PWM模式1-在向上计数时,一旦TIMx_CNTTIMx_CCR1时通道1为无效电平(OC1REF=0),否则为有效电平(OC1REF=1)。 111:PWM模式2-在向上计数时,一旦TIMx_CNTTIMx_CCR1时通道1为有效电平,否则为无效电平。 由此看来,模式1和模式2正好互补,互为相反,所以在运用起来差别也并不太大。 而从计数模式上来看,PWM也和TIMx在作定时器时一样,也有向上计数模式、向下计数模式和中心对齐模式,关于3种模式的具体资料,可以查看《STM32参考手册》的“14.3.9 PWM模式”一节,在此就不详细赘述了。 1.2PWM输出管脚 PWM的输出管脚是确定好的,具体的引脚功能可以查看《STM32参考手册》的“8.3.7 定时器复用功能重映射”一节。在此需要强调的是,不同的TIMx有分配不同的引脚,但是考虑到管脚复用功能,STM32提出了一个重映像的概念,就是说通过设置某一些相关的寄存器,来使得在其他非原始指定的管脚上也能输出PWM。但是这些重映像的管脚也是由参考手册给出的。比如

相关主题
相关文档 最新文档