LPC23XX开发讲解.ppt

上传人:sh****n 文档编号:6369501 上传时间:2020-02-24 格式:PPT 页数:47 大小:1.73MB
返回 下载 相关 举报
LPC23XX开发讲解.ppt_第1页
第1页 / 共47页
LPC23XX开发讲解.ppt_第2页
第2页 / 共47页
LPC23XX开发讲解.ppt_第3页
第3页 / 共47页
点击查看更多>>
资源描述
LPC23XX开发讲解 朱明富 2020 2 24 LPC23XX开发讲解华中科技大学控制科技与工程系朱明富 2 LPC23XX开发讲解 简介Keil开发工具程序模板应用程序设计接口程序设计硬件设计 2020 2 24 LPC23XX开发讲解华中科技大学控制科技与工程系朱明富 3 LPC23XX简介 ARM7TDMI S 72MHz512kBFlash ISP IAP64kBRAM 16kBEnet 8kBUSB 2kBRTCUSB Ethernet UART CAN I2C I2S SPI SSPGPIO 10BitAD DA PWM 4Timer WatchDOG RTCJTAG PLL On Chipcrystaloscillator 2020 2 24 LPC23XX开发讲解华中科技大学控制科技与工程系朱明富 4 LPC23XX序列型号 LPC2361 62 64 65 66 67 68LPC2377 78 144Pin LPC2387LPC2388 144Pin 2020 2 24 LPC23XX开发讲解华中科技大学控制科技与工程系朱明富 5 LPC23XX开发工具 KeilARMADSNXPISP软件FlashMagic 2020 2 24 LPC23XX开发讲解华中科技大学控制科技与工程系朱明富 6 LPC23XX开发板及应用板 开发板 展示功能应用板 实际应用 2020 2 24 LPC23XX开发讲解华中科技大学控制科技与工程系朱明富 7 LPC23XX应用 选型考虑是否一定要选择OSuCosII 2020 2 24 LPC23XX开发讲解华中科技大学控制科技与工程系朱明富 8 Keil安装 mdk305 exertlarm305 exeLicenseManagement 2020 2 24 LPC23XX开发讲解华中科技大学控制科技与工程系朱明富 9 Keil软件工程 新建Keil工程从模板程序建立工程修改LPCTest2 Uv2修改LPCTest2 Opt 2020 2 24 LPC23XX开发讲解华中科技大学控制科技与工程系朱明富 10 Keil中源代码管理 选Project Manage Components 2020 2 24 LPC23XX开发讲解华中科技大学控制科技与工程系朱明富 11 Keil中所支持的设备管理 File DeviceDatabase 2020 2 24 LPC23XX开发讲解华中科技大学控制科技与工程系朱明富 12 Keil中应用程序选项管理 点快捷按钮OptionsforTarget 2020 2 24 LPC23XX开发讲解华中科技大学控制科技与工程系朱明富 13 Keil中仿真器 Segger的RDI接口ULinkULink实际上是并口 打印机口 ULink上用了一颗USB转并口的芯片ULink只能设单个断点ULink的驱动程序安装 2020 2 24 LPC23XX开发讲解华中科技大学控制科技与工程系朱明富 14 Keil的调试 设置断点单步运行关闭WatchDog 2020 2 24 LPC23XX开发讲解华中科技大学控制科技与工程系朱明富 15 LPC23XX程序模板 新建Keil工程说明 startup s是汇编程序 完成如下功能 主晶振起振PLL配置中断向量设置堆栈设置跳转到C主程序 2020 2 24 LPC23XX开发讲解华中科技大学控制科技与工程系朱明富 16 一个简单的程序 在前面创建的程序中没有C主程序这个例子是一个模板编程规则把代码文件分类把代码文件按通用性分目录存放 2020 2 24 LPC23XX开发讲解华中科技大学控制科技与工程系朱明富 17 程序模板解析 Main c主程序Startup s启动文件Target c目标板初始化Irq cIRQ处理接口Swi handler s软件中断处理 2020 2 24 LPC23XX开发讲解华中科技大学控制科技与工程系朱明富 18 startup s 文件说明宏定义中断向量复位中断处理跳转到C主程序加密处理内存段分配 Mode USREQU0 x10Mode FIQEQU0 x11Mode IRQEQU0 x12Mode SVCEQU0 x13Mode ABTEQU0 x17Mode UNDEQU0 x1BMode SYSEQU0 x1FI BitEQU0 x80 whenIbitisset IRQisdisabledF BitEQU0 x40 whenFbitisset FIQisdisabled StackConfiguration StackSizesinBytes UndefinedMode SupervisorMode AbortMode FastInterruptMode InterruptMode User SystemMode UND Stack SizeEQU0 x00000000SVC Stack SizeEQU0 x00000100ABT Stack SizeEQU0 x00000080FIQ Stack SizeEQU0 x00000080IRQ Stack SizeEQU0 x00000600USR Stack SizeEQU0 x00000800 说明 当程序还有更多的RAM时 可再增加用户Stack的大小Stack SizeEQU UND Stack Size SVC Stack Size ABT Stack Size FIQ Stack Size IRQ Stack Size USR Stack Size AREASTACK NOINIT READWRITE ALIGN 3Stack MemSPACEStack SizeStack TopEQUStack Mem Stack Size HeapConfiguration HeapSize inBytes Heap SizeEQU0 x00000000AREAHEAP NOINIT READWRITE ALIGN 3Heap MemSPACEHeap Size AreaDefinitionandEntryPoint StartupCodemustbelinkedfirstatAddressatwhichitexpectstorun AREARESET CODE READONLYARM ExceptionVectors MappedtoAddress0 Absoluteaddressingmodemustbeused DummyHandlersareimplementedasinfiniteloopswhichcanbemodified VectorsLDRPC Reset AddrLDRPC Undef AddrLDRPC SWI AddrLDRPC PAbt AddrLDRPC DAbt AddrNOP ReservedVector LDRPC IRQ AddrLDRPC PC 0 x0120 VectorfromVicVectAddrLDRPC FIQ Addr startup s startupfileforNXPLPC230 xFamilyMicroprocessors Copyright C 2006 NXPSemiconductor Allrightsreserved History 2006 09 01ver1 00Prelimnaryversion firstRelease PRESERVE8 TheSTARTUP ScodeisexecutedafterCPUReset Thisfilemaybe translatedwiththefollowingSETsymbols InuVisiontheseSET symbolsareenteredunderOptions ASM Define REMAP whensetthestartupcodeinitializestheregisterMEMMAP whichoverwritesthesettingsoftheCPUconfigurationpins The startupandinterruptvectorsareremappedfrom 0 x00000000defaultsetting notremapped 0 x40000000whenRAM MODEisused RAM MODE whensetthedeviceisconfiguredforcodeexecution fromon chipRAMstartingataddress0 x40000000 StandarddefinitionsofModebitsandInterrupt I F flagsinPSRs Reset AddrDCDReset HandlerUndef AddrDCDUndef HandlerSWI AddrDCDSWI HandlerPAbt AddrDCDPAbt HandlerDAbt AddrDCDDAbt HandlerDCD0 xB9206E28 ReservedAddressIRQ AddrDCDIRQ Handler1FIQ AddrDCDFIQ HandlerUndef HandlerBUndef Handler MOVSPC R14SWI HandlerBSWI HandlerPAbt HandlerBPAbt HandlerDAbt Handler BDAbt HandlerSUBSPC R14 8IRQ HandlerBIRQ HandlerFIQ HandlerBFIQ Handler ResetHandlerEXPORTReset HandlerReset Handler SetupStackforeachmodeLDRR0 Stack Top EnterUndefinedInstructionModeandsetitsStackPointerMSRCPSR c Mode UND OR I Bit OR F BitMOVSP R0SUBR0 R0 UND Stack Size EnterAbortModeandsetitsStackPointerMSRCPSR c Mode ABT OR I Bit OR F BitMOVSP R0SUBR0 R0 ABT Stack Size EnterFIQModeandsetitsStackPointerMSRCPSR c Mode FIQ OR I Bit OR F BitMOVSP R0SUBR0 R0 FIQ Stack Size EnterIRQModeandsetitsStackPointerMSRCPSR c Mode IRQ OR I Bit OR F BitMOVSP R0SUBR0 R0 IRQ Stack Size EnterSupervisorModeandsetitsStackPointerMSRCPSR c Mode SVC OR I Bit OR F BitMOVSP R0SUBR0 R0 SVC Stack Size EnterUserModeandsetitsStackPointerMSRCPSR c Mode USRMOVSP R0SUBSL SP USR Stack Size EntertheCcodeIMPORTTargetResetInitBLTargetResetInitIMPORT mainLOADCMAINFUNCTIONLDRR0 mainBXR0NOPSUBR0 R0 R0BXR0NOP LPC23xx非典FLASHROM的中断向量表架构IMPORTVIC Vect Addr0IRQ Handler1STMFDSP R11 R12 LR 真保护R11R12 假保护LR 用于运算 LDRR12 VIC Vect Addr 取VICVectAddr物理地址 LDRR12 R12 取出取VICVectAddr内实际向量中断号 非地址 LDRR12 PC 0 x14c 取出取VICVectAddr内实际向量中断号 非地址 ANDR12 0 x1f 防止32个中断序号越界 在此可再做序号越界处理 可省略 LDRR11 VIC Vect Addr0LDRR12 R11 R12 LSL 2 散转到用户真正的向量中断地址STRR12 SP 0 x08 将中断向量地址R12写入事先保存的那个LR空间LDMFDSP R11 R12 PC 恢复R11R12 同时PC跳入中断向量地址执行 EncryptionFLASHIF DEF EN CRPIF 0 x1fcINFO1 nThedataat0 x000001fcthisline ENDIFCrpDataWHILE 0 x1fcNOPWENDCrpData1 如果要加密 请使用此行 注释下一行 DCD0 x87654321DCD0 x00000000ENDIF 说明 这里保留至4kFlash边界 以避免VIC中断代码处于前4k范围内 从而使得某些时候不能正常运行WHILE 0 x0ff8NOPWEND UserInitialStack HeapAREA text CODE READONLYIMPORT use two region memoryEXPORT user initial stackheap user initial stackheapLDRR0 Heap MemLDRR1 Stack Mem USR Stack Size LDRR2 Heap Mem Heap Size LDRR3 Stack MemBXLREND 2020 2 24 LPC23XX开发讲解华中科技大学控制科技与工程系朱明富 19 target c 文件说明TargetInit函数GPIOResetInitConfigurePLLTargetResetInit target c TargetCfileforNXPLPC23xx 24xxFamilyMicroprocessors Copyright C 2006 NXPSemiconductor Allrightsreserved History 2006 07 13ver1 00Prelimnaryversion firstRelease include LPC23xx h include type h include irq h include target h Functionname TargetInit Descriptions Initializethetargetboard itiscalledinanecessary place changeitasneeded parameters None Returnedvalue None voidTargetInit void Addyourcodeshere return Functionname GPIOResetInit Descriptions Initializethetargetboardbeforerunningthemain function Usermaychangeitasneeded butmaynot deletedit parameters None Returnedvalue None voidGPIOResetInit void ResetallGPIOpinstodefault primaryfunction PINSEL0 0 x00000000 PINSEL1 0 x00000000 PINSEL2 0 x00000000 PINSEL3 0 x00000000 PINSEL4 0 x00000000 PINSEL5 0 x00000000 PINSEL6 0 x00000000 PINSEL7 0 x00000000 PINSEL8 0 x00000000 PINSEL9 0 x00000000 PINSEL10 0 x00000000 IODIR0 0 x00000000 IODIR1 0 x00000000 IOSET0 0 x00000000 IOSET1 0 x00000000 FIO0DIR 0 x00000000 FIO1DIR 0 x00000000 FIO2DIR 0 x00000000 FIO3DIR 0 x00000000 FIO4DIR 0 x00000000 FIO0SET 0 x00000000 FIO1SET 0 x00000000 FIO2SET 0 x00000000 FIO3SET 0 x00000000 FIO4SET 0 x00000000 SCS 0 x00000001 return Functionname ConfigurePLL Descriptions ConfigurePLLswitchingtomainOSCinsteadofIRC atpowerupandwakeupfrompowerdown ThisroutineisusedinTargetResetInit andthose examplesusingpowerdownandwakeupsuchas USBsuspendtoresume ethernetWOL andpowermanagement example parameters None Returnedvalue None voidConfigurePLL void DWORDMValue NValue if PLLSTAT selectmainOSC 12MHz asthePLLclocksource PLLCFG PLL MValue PLL NValue 16 while MValue PLL MValue Functionname TargetResetInit Descriptions Initializethetargetboardbeforerunningthemain function Usermaychangeitasneeded butmaynot deletedit parameters None Returnedvalue None voidTargetResetInit void ifdef DEBUG RAMMEMMAP 0 x2 remaptointernalRAM endif ifdef DEBUG FLASHMEMMAP 0 x1 remaptointernalflash endif ifUSE USBPCONP 0 x80000000 TurnOnUSBPCLK endif ConfigurePLL switchfromIRCtoMainOSC ConfigurePLL Setsystemtimersforeachcomponent if Fpclk Fcclk 4 1PCLKSEL0 0 x00000000 PCLKis1 4CCLK PCLKSEL1 0 x00000000 endif if Fpclk Fcclk 4 2PCLKSEL0 0 xAAAAAAAA PCLKis1 2CCLK PCLKSEL1 0 xAAAAAAAA endif if Fpclk Fcclk 4 4PCLKSEL0 0 x55555555 PCLKisthesameasCCLK PCLKSEL1 0 x55555555 endif Setmemoryacceleratermodule MAMCR 0 ifFcclk 20000000MAMTIM 1 else ifFcclk 40000000MAMTIM 2 elseMAMTIM 3 endif endifMAMCR 2 GPIOResetInit init VIC return 2020 2 24 LPC23XX开发讲解华中科技大学控制科技与工程系朱明富 20 irq c 文件说明spurious handlerinit VICinstall irq irq c InterrupthandlerCfileforNXPLPC230 xFamilyMicroprocessors Copyright C 2006 NXPSemiconductor Allrightsreserved History 2006 07 13ver1 00Prelimnaryversion firstRelease include LPC23xx h LPC23XXPeripheralRegisters include type h include irq h Functionname spurious handler Descriptions spuriousinterrupthandler parameters None Returnedvalue None DWORDVIC Vect Addr0 voidspurious handler irq Initializetheinterruptcontroller Functionname init VIC Descriptions InitializeVICinterruptcontroller parameters None Returnedvalue None voidinit VIC void DWORDi 0 DWORD vect addr vect cntl initializeVIC VICIntEnClr 0 xffffffff VICVectAddr 0 VICIntSelect 0 VICDefVectAddr unsignedlong spurious handler setallthevectorandvectorcontrolregisterto0 for i 0 i VIC SIZE i vect addr DWORD VIC BASE ADDR VECT ADDR INDEX i 4 vect cntl DWORD VIC BASE ADDR VECT CNTL INDEX i 4 vect addr unsignedlong spurious handler 0 x0 vect cntl 0 xF return Functionname install irq Descriptions Installinterrupthandler parameters Interruptnumber interrupthandleraddress interruptpriority Returnedvalue trueorfalse returnfalseifIntNumisoutofrange DWORDinstall irq DWORDIntNumber void HandlerAddr DWORDPriority DWORD vect addr DWORD vect cntl VICIntEnClr 1 VIC SIZE return FALSE else findfirstun assignedVICaddressforthehandler vect addr DWORD VIC BASE ADDR VECT ADDR INDEX IntNumber 4 vect cntl DWORD VIC BASE ADDR VECT CNTL INDEX IntNumber 4 vect addr DWORD HandlerAddr setinterruptvector vect cntl Priority VICIntEnable 1 IntNumber EnableInterrupt return TRUE EndOfFile 2020 2 24 LPC23XX开发讲解华中科技大学控制科技与工程系朱明富 21 swi handler s 文件说明及宏定义SoftwareInterruptIntEnableIntDisable swi handler s SWIhandlerfileforNXPLPC230 xFamilyMicroprocessors Copyright C 2006 NXPSemiconductor Allrightsreserved History 2006 09 01ver1 00Prelimnaryversion firstRelease PRESERVE8SWI IRQ DISEQU0SWI IRQ ENEQU1SWI FIQ DISEQU2SWI FIQ ENEQU3I BitEQU0 x80F BitEQU0 x40 TheexportedlabelsandfunctionsEXPORTSoftwareInterruptEXPORTIntEnableEXPORTIntDisableCODE32AREASWI HANDLER CODE READONLYENTRY SWIinterrupthandler Function SoftwareInterrupt SWI Number TheSWI Numberis0through3 Seebelow SwiFunction tablebelow Parameters None input SWI Number output None SoftwareInterruptCMPR0 4LDRLOPC PC R0 LSL 2 MOVSPC LRSwiFunctionDCDIRQDisable 0DCDIRQEnable 1DCDFIQDisable 2DCDFIQEnable 3IRQDisableMRSR0 SPSRORRR0 R0 I BitMSRSPSR c R0MOVSPC LRIRQEnableMRSR0 SPSRBICR0 R0 I BitMSRSPSR c R0MOVSPC LRFIQDisableMRSR0 SPSRORRR0 R0 F BitMSRSPSR c R0MOVSPC LRFIQEnableMRSR0 SPSRBICR0 R0 F BitMSRSPSR c R0MOVSPC LR CallSWItoenableIRQ Function voidIntEnable void Parameters None input None output None IntEnableSWISWI IRQ ENBXlr endofIntEnable CallSWItodisableIRQ Function voidIntDisable void Parameters None input None output None IntDisableSWISWI IRQ DISBXlr endofIntDisableEND EndOfFile 2020 2 24 LPC23XX开发讲解华中科技大学控制科技与工程系朱明富 22 应用程序设计 基于硬件的程序设计准则LPC23XX程序主要流程 2020 2 24 LPC23XX开发讲解华中科技大学控制科技与工程系朱明富 23 基于硬件的程序设计准则 软件与硬件分离功能独立功能分层分时处理与实时处理充分利用C语言的宏定义 2020 2 24 LPC23XX开发讲解华中科技大学控制科技与工程系朱明富 24 LPC23XX程序主要流程 对于通用I O端口使用PINSELx定义端口作为通用I O功能 每个引脚可能有4个功能 因此需要用2位来确定其功能设置SCS寄存器第0位为1 使其作为快速I O端口使用PINMODEx定义端口的模式 分为上拉 下拉 浮空 因此需要用2位来确定其模式使用FIOxDIR来确定端口方向使用FIOxMASK与FIOxCLR FIOxSET FIOxPIN联合来设置端口的值 2020 2 24 LPC23XX开发讲解华中科技大学控制科技与工程系朱明富 25 LPC23XX程序主要流程 使用通用I O端口模拟数据总线由于通用I O一般情况下方向是确定的 通常或者为输入 或者为输出 要模拟数据总线 必须在需要的时候 随时改变端口的方向 可使用FIOxDIR寄存器完成此项工作 实例 LCD控制外部中断除EXTINT0 EXTINT3外 端口0和端口2均可以作为外部中断源 它们共用EXTINT3这个外部中断 2020 2 24 LPC23XX开发讲解华中科技大学控制科技与工程系朱明富 26 LPC23XX程序主要流程 上拉与下拉根据实际情况合理选用 主要对上电时的初始值 上拉或下拉都是弱的 有时也用外部分电阻上 下拉 对于输入 上拉表示通用端口所连接的外部信号不存在时 端口值为1 下拉为0 对于输出 如果没有更改时 上拉输出为高 1 下拉输出为低 0 FIOxPIN总是可以读出端口的状态 FIOxPIN对非通用I O端口也可读出其状态 2020 2 24 LPC23XX开发讲解华中科技大学控制科技与工程系朱明富 27 LPC23XX程序主要流程 对于内置 片上 外设 如UART CAN SPI等 使用PINSELx定义端口作为特定外设 通常情况作为外设的引脚的方向是确定的 如果可能 还会自动改变方向 大多情况下 无须设置上拉或下拉模 设置外设的参数如果需要的话 安装中断服务程序外设上电 有些外设默认是上电的 有些不是 启动外设 2020 2 24 LPC23XX开发讲解华中科技大学控制科技与工程系朱明富 28 LPC23XX程序主要流程 对于内置 片上 外设 如UART CAN SPI等 外设可以用查询方式工作 也可以用中断方式工作部分外设还支持DMA方式 2020 2 24 LPC23XX开发讲解华中科技大学控制科技与工程系朱明富 29 接口程序设计 LightKEY Port KEY Matrix UARTCANSPIMCI WDTRTCIAPTIMER LCD 字符型 LCD 图形 LCD 图形 LCD高层服务函数SPI应用 RF控制IAP应用 程序下载 2020 2 24 LPC23XX开发讲解华中科技大学控制科技与工程系朱明富 30 Light Light发光二极管GPIO输出的例子 light h Headerfileoflight Copyright C 2007 FinleyZHU HUST Allrightsreserved History 2007 08 28ver1 00 ifndef LIGHT H define LIGHT H bit0inSCSregister port0 1areregularportswhenbit0is0 fastportswhenbit0is1 defineGPIOM0 x00000001 seemasterdefinitionfilelpc230 x hformoredetails defineREGULAR PORT DIR BASEGPIO BASE ADDR 0 x08 defineREGULAR PORT DIR INDEX0 x10 defineHS PORT DIR BASEFIO BASE ADDR 0 x00 defineHS PORT DIR INDEX0 x20 defineFAST PORT0 x01 defineREGULAR PORT0 x02externVOIDLIGHT Init void externVOIDLIGHT Set DWORDv externVOIDLIGHT Clr DWORDv externVOIDLIGHT Nor DWORDv externVOIDLIGHT On intPin externVOIDLIGHT Off intPin externVOIDLIGHT Switch intPin defineLT PIN WORK0 x07 defineLT PIN COMM0 x06 defineLT MSK WORK0 x80 defineLT MSK COMM0 x40 endif end LIGHT H light c Copyright C 2007 FinleyZHU HUST Allrightsreserved P0 6 P0 7usedaslightindicator P0 6Worked P0 7Commuication History 2007 08 28ver1 00 include LPC230 x h LPC23xx 24xxdefinitions include type h include target h include irq h include light h defineMYFIOMASKFIO0MASK defineMYFIOCLRFIO0CLR0 defineMYFIOSETFIO0SET0 defineMYFIOPINFIO0PIN0 defineMYFIOMASKFIO2MASK defineMYFIOCLRFIO2CLR0 defineMYFIOSETFIO2SET0 defineMYFIOPINFIO2PIN0 VOIDLIGHT Init ifdefUSEDCODE P0 6 VOIDLIGHT On intPin DWORDPinMask 1 Pin MYFIOMASK PinMask MYFIOCLR PinMask VOIDLIGHT Off intPin DWORDPinMask 1 Pin MYFIOMASK PinMask MYFIOSET PinMask VOIDLIGHT Switch intPin DWORDPinMask 1 Pin DWORDdwMask PinMask DWORDdwVal MYFIOPIN VOIDLIGHT Set DWORDPinMask MYFIOMASK PinMask MYFIOCLR PinMask VOIDLIGHT Clr DWORDPinMask MYFIOMASK PinMask MYFIOSET PinMask VOIDLIGHT Nor DWORDPinMask DWORDdwMask PinMask DWORDdwVal MYFIOPIN 2020 2 24 LPC23XX开发讲解华中科技大学控制科技与工程系朱明富 31 KEY 端口型 KEYBoard简单按键GPIO输入的例子说明 由于LPC2368将P2 10用于ISP 因此此处设计时将按键设计成上拉 KEY h HeaderfileofKEYutilityforLPC2368 Copyright C 2007 FinleyZHU HUST Allrightsreserved History 2007 12 18ver1 00 ifndef KEY H define KEY H defineKEY CA0 x20 P2 13 defineKEY DN0 x10 P2 12 defineKEY UP0 x08 P2 11 defineKEY OK0 x04 P2 10 defineKEY PD0 x02 Pageup defineKEY PU0 x01 Pagedn defineKEY MASK KEY CA KEY UP KEY DN KEY OK externvoidKEY Init void externvoidKEY WaitUp void externcharKEY WaitPress void externcharKEY QueryPress void ifdef BOOTCODE externcharKEY Download void endif endif KEY H EndOfFile KEY c KEYutilityforLPC2368 Copyright C 2007 FinleyZHU HUST Allrightsreserved History 2008 05 22ver1 00 include LPC230 x h LPC23xx 24xxdefinitions include type h include target h include irq h include key h volatileDWORDKey Paste 0 definePASTE DELAY300000 defineFIRST DELAY1500000 defineGetKey x FIO2MASK1 KEY MASK x FIO2PIN1 voidDelay20Ms DWORDi 300000 while i P2 10 P2 11 P2 12 P2 13作为KEY KEY Init voidKEY Init P2 10 P2 11 P2 12 P2 13作为GPIO 输入端口PINSEL4 QueryKeyPress 查询是否有键按下 charKEY QueryPress void charky1 ky2 GetKey ky1 读取按键if ky1 KEY MASK 如果有键按下Delay20Ms 去抖动及干扰GetKey ky2 再读取按键if ky2 ky1 如果并非抖动 判断所按之键并返回if ky1 WaitKeyUp 等待按键弹起 voidKEY WaitUp void charky1 DWORDi if Key Paste i PASTE DELAY elsei FIRST DELAY do GetKey ky1 读取按键i while i WaitKeyPress 等待一个按键 charKEY WaitPress void charky1 do ky1 KEY QueryPress while ky1 KEY WaitUp returnky1 ENDofFILE 2020 2 24 LPC23XX开发讲解华中科技大学控制科技与工程系朱明富 32 KEY 矩阵型 KEYBoard矩阵型按键 KEY h HeaderfileofLCDutilityforLPC2368 Copyright C 2007 FinleyZHU HUST Allrightsreserved History 2007 12 18ver1 00 ifndef KEY H define KEY H defineKEY 012 defineKEY 11 defineKEY 25 defineKEY 32 defineKEY 46 defineKEY 510 defineKEY 63 defineKEY 77 defineKEY 811 defineKEY 98 defineKEY C4 defineKEY M16 defineKEY T15 defineKEY U13 defineKEY D14 defineKEY L9 defineKEY R17 defineKEY X18 defineKEY Y19 defineKEY Z20 defineKEY E1KEY X defineKEY E2KEY Z defineKEY E3KEY YexternvoidKEY Init void externvoidKEY WaitUp void externcharKEY WaitPress void externcharKEY QueryPress void endif KEY H KEY c KEYutilityforLPC2368 Copyright C 2007 FinleyZHU HUST Allrightsreserved History 2008 05 22ver1 00 include LPC230 x h LPC23xx 24xxdefinitions include type h include target h include irq h include key h volatileDWORDKey Paste 0 definePASTE DELAY300000 defineFIRST DELAY1500000 defineGetKey x FIO2MASK1 KEY MASK x FIO2PIN1 voidDelay20Ms DWORDi 300000 while i P2 0 P2 8作为KEY KEY Init voidKEY Init P2 0 P2 8作为GPIO 其中P2 0 P2 3作为输入端口 P2 4 P2 8作为输出端口PINSEL4 QueryKeyPress 查询是否有键按下 charKEY QueryPress void inti j charky1 ky2 将P2 4 P2 8均设为低电平 FIO2MASKL 0 xfe00 FIO2CLRL 0 x01f0 再读出P2 0 P2 8的值 ky1 FIO2PINL WaitKeyUp 等待按键弹起 voidKEY WaitUp void charky1 DWORDi if Key Paste i 400000 elsei 1000000 FIO2MASKL 0 xfe00 do 将P2 4 P2 8全部置为0 ky1 FIO2PINL WaitKeyPress 等待一个按键 charKEY WaitPress void charky1 do ky1 KEY QueryPress while ky1 KEY WaitUp returnky1 ENDofFILE 2020 2 24 LPC23XX开发讲解华中科技大学控制科技与工程系朱明富 33 UART RS232 define UART HexternvolatileDWORDUART0Count externvolatileBYTEUART0Buffer ifdef BOOTCODE externvolatileBYTE UART0Buffer else endifexternDWORDUART Init DWORDBaudrate externvoidUART Handler void irq externvoidUART SetBaudrate DWORDbaudrate externvoidUART Disable void externvoidUART Enable void externvoidUART SendChar BYTEaByte externvoidUART Send BYTE BufferPtr DWORDLength externvoidUART SendString BYTE BufferPtr externvoidUART SendInt DWORDdw externvoidUART SendHex DWORDdw DWORDLen externvoidUART SendCRLF void externDWORDHasInputH void externDWORDHasInput void externBYTEWaitChar void externBYTEWaitCharA void externBYTEWaitCharB void externBYTEWaitDigit BYTEMin BYTEMax BYTEDefault ifdef DEBUG defineDbg CRLF UART SendCRLF defineDbg Char x UART SendChar x defineDbg Str x UART SendString x defineDbg Int x UART SendInt x defineDbg Hex x l UART SendHex x l else defineDbg CRLF defineDbg Char x defineDbg Str x defineDbg Int x defineDbg Hex x l endif endif end UART H EndOfFile uart c UARTAPIfileforNXPLPC23xx 24xxFamilyMicroprocessors Copyright C 2007 FinleyZHU HUST Allrightsreserved SomematerialfromNXPsamplecode History 2007 08 28ver1 00 include LPC230 x h LPC23xx 24xxdefinitions include type h include target h include irq h include uart h UARTBaseAddressdefinedinLPC23xX h UART0 BASE ADDR UART1 BASE ADDR UART2 BASE ADDR UART3 BASE ADDR UARTInterruptdefinedinirq h UART0 INT UART1 INT UART2 INT UART3 INT UART0 TXD0 P0 2 RXD0 P0 3 Func01 defineUART0 TXPINSELPINSEL0 defineUART0 TXPINMASK0 x00000030 defineUART0 TXPINFUNC0 x00000010 defineUART0 RXPINSELPINSEL0 defineUART0 RXPINMASK0 x000000c0 defineUART0 RXPINFUNC0 x00000040 UART1 TXD1 P0 15 RXD1 P0 16 Func01 defineUART1 TXPINSELPINSEL0 defineUART1 TXPINMASK0 xC0000000 defineUART1 TXPINFUNC0 x40000000 defineUART1 RXPINSELPINSEL1 defineUART1 RXPINMASK0 x00000003 defineUART1 RXPINFUNC0 x00000001 UART2 TXD2 P0 10 RXD2 P0 11 Func01 defineUART2 TXPINSELPINSEL0 defineUART2 TXPINMASK0 x00300000 defineUART2 TXPINFUNC0 x00100000 defineUART2 RXPINSELPINSEL0 defineUART2 RXPINMASK0 x00c00000 defineUART2 RXPINFUNC0 x00400000 UART3 TXD3 P0 0 RXD3 P0 1 Func10 defineUART3 TXPINSELPINSEL0 defineUART3 TXPINMASK0 x00000003 defineUART3 TXPINFUNC0 x00000002 defineUART3 RXPINSELPINSEL0 defineUART3 RXPINMASK0 x0000000c defineUART3 RXPINFUNC0 x00000008 ifotherUARTused redefinefollowingmacros defineUART MACRO xchar UART0 xchar defineUART INTUART MACRO INT defineUART TXPINSELUART MACRO TXPINSEL defineUART TXPINMASKUART MACRO TXPINMASK defineUART TXPINFUNCUART MACRO TXPINFUNC defineUART RXPINSELUART MACRO RXPINSEL defineUART RXPINMASKUART MACRO RXPINMASK defineUART RXPINFUNCUART MACRO RXPINFUNC defineUART BASEADDRUART MACRO BASE ADDR defineUART RBR volatileunsignedlong UART BASEADDR 0 x00 defineUART THR volatileunsignedlong UART BASEADDR 0 x00 de
展开阅读全文
相关资源
相关搜索

当前位置:首页 > 图纸专区 > 课件教案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!