自己在用stm8时候下一些其他-单片机入门_第1页
自己在用stm8时候下一些其他-单片机入门_第2页
自己在用stm8时候下一些其他-单片机入门_第3页
自己在用stm8时候下一些其他-单片机入门_第4页
自己在用stm8时候下一些其他-单片机入门_第5页
已阅读5页,还剩65页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

STM8微控制器简 STM8S系 STM8L系 STM8A系 STM8微控制器网 STM8集成开发环境简 ST STM8程序设 STVD汇编语言程序设 COSMICC语言程序设 IARC语言程序设 STM8应用例 STM8S应用例 STM8L和STM8A应用例 STM8开发工 STX- STM8EMC设计注意事 STM8STM8S820MIPSCPU2.95-5.5V的8130nm非易失性30万次擦写极限。在家用电器、加热通风空调系统、工业自动化、电动工具、个口、两个U(S)ART接口、一个I2C端口、一个SPI端口。STM8SSTM3232位微控制器相同。外设共用性有助于提高不STM32平台上,获得更高的性能。除设计灵活外,STM8S的组件和封装在引脚上完全兼容,让开发人员得到更大的自由STM8S主要特速度达20MIPSSTM8S主要应或欧盟的EuP法令。有的超低泄漏电流优化的130nm制程。独一无二的技术优势包括在1.65V到3.6V的整个电源电压范围内达到CPU最大工作频率,发挥CPU的全部性能。此外,由于采用一个片上稳压Vdd耗运行模式、3.3µA低功耗待机模式、1µA主动停止模式(实时时钟运行)和350nA停止模式。STM8L可以在4µs内从停止模式唤醒,支持频繁使用最低功耗模式。低功耗外设,包括将动态电流消耗降到150µA/MHz。STM8L主要特STM816MHz电源电压:1.8V-3.6V1.65STM8L主要应STM8A8-FlashEEPROM以及软件和引脚兼容性,适用的程序存并且其工作温度扩展到了145°C。STM8A主要特点16MHz128kHzRC电源电压:3.3V最高工作温度:145STM8A主要应STM8A产品线如下图所 找到全部的资料和文件:DocumentsandFilesforSTM8Sfamily/mcu/familiesdocs-/mcu/familiesdocs-STSTTOOLSETST提供的微控制器开发套件。STTOOLSET包括两部分软件:STVisualDevelop(STVD)STVisualProgrammer(STVP)。支持STM8全系列的开发。STVisualDevelop(STVD)STST8位微控制STToolset可从ST的网站上下载: STTOOLSETCosmic公司(CosmicSoftwareInc.)的CosmicC编译器(CosmicCcompiler)及全套嵌入开(IDEACosmic公司提供了16K和32K /cxstm8 /cxstm8COSMICCSTTOOLSETST提供的集成开发环境STVD进行产品的开发,后面说明其用法。COSMICC编译器在安装过程中,出现下图提示。提示创建桌面图标和申请软件使用协议。可以选择“Registeryourlicense”来申请协议,选择“Next”。根据要求填写下面的注册信息,要用英文填写完整。选择”RegisterbyEmail”,此时会贝到安装目录下的license目录下即可,默认目录为C:\Program的菜单如果在安装过程中没有申请协议,也可以在安装目录下,找到C:\Program 标题 STM816kLicenseTheinformationbelowshouldbesenttostm816k@cosmic.frtoobtainalicenseforthisproductRegistrationInformationfor:User:JackyWangAddress:PuDongSouthRoadPuDongNewDistrict,Shanghai200120,P.R.ChinaCountry:ChinaProduct.标题:STM816kLicenseRegistrationInformationfor:不同的用户、不同的计算机“RegistrationInformationfor:”和“ProductInformation”是不同的。一个license文件只允许一台计算机使用。IARSystems推出开发工具“STM8系列嵌入式设计工作台”(EWSTM8支8位微控制器市场IAREWSTM8嵌入式设计工作台提供一整套开发工ST-LINKSTice。IAR提供8K代码限制和30天评估版的C编译器。可从 STM8Develo(STVDWorkspacefilenameworkspacedemo,workspacec:\stm8asm,如下图所workspaceToolchain:STAssemblerSTVDmain.asmmapping.asmmapping.inc文件。其说明如Nltrp定义了段的名字和地址(ram0ram1stackeepromrom定义了段(ram0,ram1,stack)的起始和结束C:\ProgramFiles\STMicroelectronics\st_toolset\asm\include(默认安装目录)找到MCU型号的寄存器定义文件(STM8S207C_S.ASM和STM8S207C_S.INC)workspace如;;segmentdc.l;dc.l{$82000000+My_Interrupt_Name};源文件stm8/第一行必须保留而且要顶格写.;*#include"mapping.inc";*#defineMYDF1 EQU;/*ram0segmentram0';ram0 DS.B ;保留1个字节的变量;/*ram1segmentram1';ram1 DS.B128128;*主程序segmentromromJRA;*;*中断向量映segmentdc.l{$82000000+main} dc.l{$82000000+NonHandledInterrupt};trapdc.l{$82000000+NonHandledInterrupt};irq0dc.l{$82000000+NonHandledInterrupt};irq28dc.l{$82000000+NonHandledInterrupt};irq29个.map文件。本例是stm8asm.map,如下所示:stm8asm.mapram0,ram1,rom,stack,eeprom,rom等的使用情况。本例的代码地址范围是:’rom'bytefrom8080to81F5。程序代码大小81F58080175(HEX)373使用STVD中烧Settings选工具进行烧录。“RunSTVP”STVPSTVD的编程器。MemoryAreas选DATAMEMROY:EEPROM数据PROGRAMMEMORYOPTIONBYTEProgram选使用STVP烧STVisualProgrammer(STVP)”>STToolset>DevelopmentTools>STVisualProgrammer。如图所示烧录ConfigureConfigureSTVisualProgrammerHardware:Port:ProgrammingmodeSWIMDevice:FileOpen…DATAMEMORY:EEPROM数据区OPTIONBYTE选Value:OPTIONBYTE值,OPTIONBYTEValueROP:是读出保护设置。若设置了ON,那么程序是就无法读(ST的保密性比较高)UBC[7:0]:用户启动代码区。一般用户在做IAP时,需要保护的代码部分设置。HSITRIM:高速内部时钟调节寄存器大小LSI_EN:低速内部时钟使能IWDG_HW:独立看门狗WWDG_HALT:当芯片进入停机模式时窗口看门狗的复位动EXT_CLK:外部时钟选择CKAWUSEL:自动唤醒单元/时钟PRSC[1:0]:AWU时 T[7:0]:HSE晶体振荡BOOTLOADERENABLE:如果用户使用UART来下载程序,可通过此选项位来设置。更多的信息,可参考STM8S105S4的数据手册COSMICCSTVDCOSMICC编译器,进行软件开发。STVD提供了比较友STVDSTVisualDevelop集成开发环境,选择菜单”Tools->Options”本例中选择的”Rootpath”是:C:\ProgramMCU保存workspacemain.cstm8_interrupt_vector.c是自动添加的.MCU的中断COSMICCCOSMIC段的定义段大常量零页内的初始化变量(@tiny,默认大变量EEPROM内任何变量#pragmasection<attribute><qualified_name>(name)圆括号表示代码–{name}–COSMICC语言中嵌入COSMICC编译器提供两种方法嵌入汇编指令。第一种方法是#asm和#endasm嵌入汇编指令块 #endasm_asm(“嵌入的汇编代码”,C语言规则的参数_asm("ld_asm("pusha\nlda,88\nld_mya,a\ninca\npopa\ncallunsignedchari,mya;voidsubroutine(void){}{ pushaincaldpopa_asm("pusha\nlda,88\nld_mya,a\npopa\ncall_subroutine\n");while(1){i=mya;}}COSMICC编译器的启COSMICmain函数之前,插入段的初始化(如拷贝ROMRAM(如果程序中需要的话<<<Y,<<<<<<<<<<<<<XX<YY<<<<ADDW<JRT<LDW<JRT< <XINCW<CPW<JRNE<LDW<JRT< <XINCW<CPW<JRNE<CALL0x80cc0x80cc 跳转至main 修改为 (interrupt_handler_t)main},/*reset*/externvoid_stext();/*startuproutine*/ 修改为externvoidmain(); startuproutine*/COSMIC的存代码小于STM8编译器支持两种存储器模式。函数指针和数据指针默认是@near指针(2个字节stackshortmods0)shortrange类型任何longrange范围的全局变量必须明确地用@near来访问,除非通过指针访问。明确地用@tiny代码大于为@near类型(2个字节@far明确地声明。StackShortmods)shortrange类型任何longrange范围的全局变量必须明确地用@near来访问,除非通过指针来访问。StackLongmodsl0)longrangeshortrange类型中的变量必须明确地用@tiny来访问。Shortintint2@far3COSMIC的位settings…常量constconstunsignedchar={0x2C,0x27,0x23,0x1F,0x1D,0x1A,0x17,0x16,0x13,0x11,0x0F,0x0E,0x00,={0x2C,0x27,0x23,0x1F,0x1D,0x1A,0x17,0x16,0x13,0x11,0x0F,0x0E,0x00,0x0D,0x09,0x15};unsignedchari= //i=RAM中运行COSMIC中的函数_fctcpyFLASHRAM(此描述符是在RAM中定义段的第一个字符。本例子在RAM中定义了一个Ram中创建一个’.CODE_IN_RAM’Option中输入’-址运行。_fctcpy函数使用此段的名字的第一个描述符’C’。#pragmasection(CODE_IN_RAM){var1=0x99;var2=0x88;var3=}{}#pragmasectionunsignedunsignedcharint_fctcpy(char#pragmasection(CODE_IN_RAM){var1=0x99;var2=0x88;var3=}{}#pragmasection{RAMfunctionswhile{{}}如何生产hex文Project->Settings…->Post-chex- chex–fi IARC创建一个选择File>New>Workspace创建一个新的Projecttemplates中选择“EmptyWorkspace窗口中,显示如下workspaceFile>SaveWorkspace,指定要保存的路径,并输入workspace的名字。.windowsprojects\setttings目录下。添加的工程目录中。默认地,头文件在IAR安装目录inc下:C:\ProgramFiles\IARSystems\EmbeddedWorkbench6.0Kickstart\stm8\inc。本例中使用了源文件main.c/*/*#include/*Globalvariablesunsignedintms_count;void{CLK_CKDIVR=0x00;/*fCPU=fMASTER=16MHz}void{PD_DDR|=0x0D;PD_CR1|=0x0D;PD_CR2=0x00;}void{TIM2_PSCR=0x00;TIM2_ARRH=0xC1;TIM2_ARRL=TRH=0xC1;TRL=TIM2_CR1|=0x81;TIM2_IER|=}{/*/*/*Outputspeedupto2MHz./*ConfigureTIM2prescaler=16./*ConfigureTIM2period./*ConfigureTIM2period./*EnableTIM2./*EnableTIM2OVRinterrupt.asm("sim");/*disableinterrupts*/ms_count=0;asm("rim");/*enableinterrupts*/while(1){}}#pragmainterruptvoid说明#pragmavector:IAR复位向量是0x008000,中断向量号是0x00TRAP0x0080040x01SPI中断号是0x0C;详细见下表interruptvoidinterrupt_handler(void):是声明一个中断函数,注意/*/*#include/*Externalexternunsignedint/*DefinesaninterrupthandlerforTIM2_UPDATEvector.*/#pragmavector=15interruptvoid{TIM2_SR1if(ms_count500)/*0.5{PD_ODR^=ms_count=}}工程选择Project>Options,或者在Workspace窗口,选中project名字,右击选择选择Category中,选择“GeneralOptions”,TargetDevice中,选择相应的MCU型号。其他选择默认。在Category中,选 Outputlistfile,Category中,选择OutputConverter,显示OutputConverter标文件。本例选择Intelextended格式的目标文件。Category中,选Linker,显Linker选项Project>CompileProject>RebuildAll来编译某个源文件或者全部重新编译。ObjmILINK连接器的扩展名为\Debug\Listlist下有.map文件。用记事本打开.map文件,在.map的末尾,可查看程序代码大小。294bytesof294bytesofreadonlycode132bytesofreadonlydata274bytesofreadwritedataErrors:none……==command==Project>DownloadandDebug.进入调试状态。或者选择工具栏Auto选择View>Register,打开寄存STVPHEX文件。配置好OPTIONBYTE进行程序的OPTIONProgram>Alltabs(onactionsectorsifanyPROGRAMMMEMORY,DATAMEMORYOPTIONBYTE”一起烧录到STM8里面去。IARC嵌入STM8 /*/*fCPU=fMASTER=16MHzCLK_CKDIVR=0x00;//HSIDIV[1:0]=0x00,GPIO配置表如下所/*/*PD0LED灯的亮/PD_ODR^0x01*LEDPD_ODR^0x01*LED|=/*PD0|==ADC_CR1CONT=1将ADC通过ADC_CSR寄存器的CH[3:0]一旦转换完成,转换后的数据存储在ADC_DR寄存器中,EOC(转换结束)标志被置位,如unsignedintPB_DDRPB_CR1/*unsignedintPB_DDRPB_CR1/*PB3/*/*ADC_CR1=0x00;/*fADCfMASTER/2ADC_CR2=0x00;/*ADC_CSR=0x03;/*AIN3ADC_CR1|=/*ADCADC_CR1|=0x01; /*ADON=1,启动ADC*/while(!(ADC_CSR&0x80));/*等待转换完成(EOC=1*/AD_Value=((((unsigned T= /*/*TIM2unsignedintms_count*ms_count计数变量void{TIM2_PSCR=0x00;TIM2_ARRH=0xC1;TIM2_ARRL=TRH=0xC1;TRL=TIM2_CR1|=0x81;TIM2_IER|=}/*TIM2=16/*TIM2TIM2_SR1if(ms_count==500){PD_ODR^=ms_count=}/*清中断标志/*0.5秒中断/*PD0翻转下面是中容量STM8S的FLASH存储器和数据EEPROM4151EEPROM字节编FIX=0,那么变成时间为标准编程时间的一般(3ms)第一个硬件密钥:0b10101110(0xAE)第二个硬件密钥:0b01010110编程成功后,EOP位置1。如果FLASH_CR1中的IEvolatilevolatileunsignedchar@0x4000;*unsignedchareeprom_value;/*EEPROMunsignedinteeprom_address*eeprom_address{eeprom_address=FLASH_CR1&=(unsignedFLASH_CR1|=FLASH_DUKR=0xAE;FLASH_DUKR=*((unsignedchar*)eeprom_address)=while((FLASH_IAPSR&0x04)!=}eeprom_address=eeprom_valueeeprom_value=*((unsignedchar*)eeprom_address);}415.2EEPROM字编第一个硬件密钥:0b01010110(0x56){/*FLASH_CR1&=(unsignedFLASH_CR1|=FLASH_DUKR=FLASH_DUKR=/*设置字编程模式FLASH_CR2|=FLASH_NCR2&=(unsignedwhile((FLASH_IAPSR&0x04 }*((unsignedchar=*(((unsignedchar+=*(((unsignedchar+=*(((unsignedchar+=}415.3EEPROM块编EEPROM块操作步骤第一个硬件密钥:0b10101110(0xAE)第二个硬件密钥:0b01010110STM8系列单片64128128unsignedchareeprom_write_block_in_ram[100];void{unsignedcharcount;unsignedinteeaddress_start;eeaddress_start=/*FLASH_CR1&=(unsignedchar)(~0x01);FLASH_CR1|=0x01;FLASH_DUKR=0xAE;FLASH_DUKR=/**/FLASH_CR2|FLASH_NCR2&=(unsignedfor(count=0;count<128;{*((unsignedchar*)(eeaddress_start+count))=}//while((FLASH_IAPSR&

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论