stm8s105k4f简单历程.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
作为一个初学STM8 C语言者。慢慢摸索了好多天,发现网上的例子很难看懂(基础差,要不就是库函数),故整理了一下最近我编的几个列子,只适合初学STM8 C的同学。大神们看到了可以给点建议。我用的是STM8S105K4。下面几个列子是控制PA口的一个管脚输出高电平。我使用了三种方式进行控制。1、延时函数。2、定时器。3、定时器中断。希望初学者有些帮助。 1、延时函数控制 /* MAIN.C file * * Copyright (c) 2002-2005 STMicroelectronics */ #include STM8S105K.h void DelayMS(unsigned int ms) { unsigned char i; while (ms!= 0) { for(i=0;i250;i++); for(i=0;i75;i++); ms--; } } void main() { PA_DDR=0X04;//方向输出。? PA_CR1=0x04;//类型推挽式。 PA_CR2=0x00; while(1) { PA_ODR=0; DelayMS(1000);//延时大概1S。 PA_ODR=0xff; DelayMS(1000); } } 2.。。。。。。。。。。。。定时器控制。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。 /* MAIN.C file * * Copyright (c) 2002-2005 STMicroelectronics */ #include STM8S105K.h void main() { unsigned char i; i=0; PA_DDR=0X04;//端口数据方向寄存器。 PA_CR1=0X04;//端口控制寄存器1,1推挽式输出。 PA_CR2=0X00;//端口控制寄存器2。 TIM4_IER = 0x00;//中断使能寄存器,禁止中断。 TIM4_EGR = 0x01;//事件产生寄存器初始化并产生寄存器更新。 TIM4_PSCR = 0x07;//预分频寄存器。计数器周期64us。 TIM4_ARR = 125;//自动重装寄存器。8MS。 TIM4_CNTR = 0;//计数器值。 TIM4_CR1 = 0x01;//控制寄存器使能计数器。 while (1) { while((TIM4_SR 0x01) == 0x00);//检测更新标志位。 TIM4_SR = 0x00;//清除更新标志位。 i++; if(i==125)//延时1s { PA_ODR = PA_ODR ^ 0x04;//输出取反 i=0; } } } 3.。。。。。。。。。。。。。。。。。。。。。。。定时器中断控制。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。 /* MAIN.C file * * Copyright (c) 2002-2005 STMicroelectronics */ #includestm8s105k.h unsigned int ma; @far @interrupt void TIM4_OVF (void) //TIM4定时器溢出中断 { TIM4_SR=0;//清更新标志。 ma++; return; } void delay(unsigned int ms)//延时函数。 { ma=0; while(ms!=ma); } main() { PA_DDR=0X04;// PA_CR1=0X04;// TIM4_IER=0x00;//禁止tim4中断。 TIM4_EGR=0X01;//计数器重新初始化。 TIM4_PSCR=0X07;//计数器周期63us。 TIM4_ARR=125;//计数值,8ms。 TIM4_CNTR=0;//计数器初值。 TIM4_SR=0;//清除更新标志。 TIM4_CR1=0X01;//启动定时器。 _asm(rim);//允许CPU全局中断。 TIM4_IER=0x01;//使能tim4中断。 while(1) { PA_ODR=PA_ODR ^ 0x04; delay(125);//延时1S。 } } 这个需要更改一下中断向量在stm8_interrupt_vector里面加粗的字体为更改的。 /* BASIC INTERRUPT VECTOR TABLE FOR STM8 devices * Copyright (c

文档评论(0)

xiaoxue8 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档