STM8S Cstm8s编程软件问题

stm8s103关于中断级别的设置问题-电源网
当前位置:
stm8s103关于中断级别的设置问题
阅读: 225
楼层直达:
请问下关于stm8s103的中断有先级别的设置
&我现在有一个程序,使用了c端口的外部中断,而在外部中断的同时我需要把定时器1的定时时间进去。现在我根据手册修改了定时器1为最高级别的中断,而端口c的中断为低级别的中断,但是实际使用的时候却还是端口c的级别比定时器1的级别高。所以我不知道如何设置是正确的。请看下面我的程序部分,请大家指点下,或发送邮件给我,非常感谢。
GPIO_init();
pwm_init();&
ADC_init();
&time_init();&
&ITC_SPR2=0&
&ITC_SPR3=0
&ITC_SPR6=0&
关于电源网
我们的服务
服务时间:周一至周五9:00-18:00
电源网版权
增值电信业务经营许可证:津B2-
网博互动旗下网站:IAR&for&STM8&程序编写学习笔记&--基于IAR&Embedded&Workbench
关闭其他无关软件,进行程序的编写和调试,下载
unsigned&short&无符号短整形&&(0-65535)
typedef&unsigned&short&&&&
void&Delay(uint16_t&nCount)&&
0xFFFF&一共有几位&1111&1111&1111&1111&2*8=16位&<img HEIGHT="20" WIDTH="23"
ALT="IAR&for&STM8&程序编写学习笔记&--基于IAR&Embedded&Workbench"
TITLE="IAR&for&STM8&程序编写学习笔记&--基于IAR&Embedded&Workbench" />=65536
void&Delay(uint16_t&nCount)这个函数在STM8L中基本延时是_us(执行这个语句需要多少周期或者时间)
Configuration&is&up-to-date.&
表示已经make了一次,且程序无修改。
Fatal&Error[Pe035]:&#error&directive:&"Please&select&first&the&target&STM8L&device&used&in&your&application&(in&stm8l15x.h&file)"&C:\Users\Administrator\Desktop\浙台研究\IAR\6\FWlib\inc\stm8l15x.h&53&
可以在下面选择一种&复制到如下图所示的地方
/fxw451/blog/12-03/245336_bdc0a.html
One&of&the&following&macros&must&also&be&defined:
&&&&&&&&-&STM8L15X_MD&for&Medium&Density&devices.(中等密度的设备)
&&&&&&&&-&STM8L15X_MDP&for&Medium&Density&Plus&devices.
&&&&&&&&-&STM8L15X_HD&for&High&Density&devices.
(CLK_SYSCLKDiv_1&)&这里的括号如果是中文格式下得括号,会导致出现&无法识别的错误。
怎么生成下载用的hex文件
编译过后,HEX文件所在位置
STVP下载完成后,要关闭下载器。IAR&下载之后&也要关闭调试的部分
http://www.waveshare.net/article/STM8-3-1-7.htm
在下载完之后,需要调试,需要看寄存器或者其他的调试窗口的,在View&|&Register&
必须连接设备才可以进行调试
STEP&OVER&步进调试&
STEP&INTO&进入函数内部
#include&"stm8l15x.h"
void&DelayMS(unsigned&int&ms)&&//延时时间设置,这里要用到clk时钟配置
&&&unsigned&char&i;
&&&while(ms&!=&0)
&&for(i=0;i&250;i++)
&&{&&&ms--;
&&GPIOC-&DDR&=&0x80;
&&GPIOC-&CR1&=&0x80;&//&将PC7设置成推挽输出
&&GPIOC-&CR2&=&0x00;&&&
&&while(1)
&GPIOC-&ODR&=&GPIOC-&ODR&|&0x80;&
&DelayMS(100);&//延时100ms
&GPIOC-&ODR&=GPIOC-&ODR&&&0x7F;&
&DelayMS(100);&
#include&"stm8l15x.h"
#define&LED1_H()&&&&(GPIO_SetBits&(GPIOE,GPIO_Pin_7))
#define&LED1_L()&&&&(GPIO_ResetBits&(GPIOE,GPIO_Pin_7))
void&CLK_config(void)&
&CLK_SYSCLKDivConfig(CLK_SYSCLKDiv_1&);//预分频为1,系统默认HSI作为时钟,16MHz
void&GPIO_config(void)
&&GPIO_Init&(GPIOE,GPIO_Pin_7,GPIO_Mode_Out_PP_High_Fast);//定义引脚,推挽输出,10MHz,所以电阻取小
void&delay(unsigned&long&i)
&unsigned&int&j;
&for(;i&0;i--)
&&&&for(j=1000;j&0;j--);
void&main(void)
&CLK_config();&
&GPIO_config();
&&LED1_L();
&&delay(500);
&&LED1_H();
&&delay(50);
/thread--1.html
触摸按键可用引脚&STM8L152C
&&&&&&&&&&&&&&&&&PA4&PA5&PA6&两通道一个采样
&&&&&&&&&&&&&&&&&PC3&PC4&&&&&一个通道一个采样
内存占用说明
引脚说明,触摸按键及其和其连接的STM8L内部结构说明
程序参考例程的来源,函数说明以及定义
触摸按键的PCB的焊接和位置说明DM_AN4312.PDF
源代码&source&insight&
直接用官方标准库LCD的测试代码,是STM8L1526&EVAL&板子的,直接烧录会出现乱码&STM8L&Dicovery&的板子,可以修改一下,变成STM8L&Dicovery的LCD库
STVP+STLINK
如何用SWIM接口下载程序,下载不了时的做法
首先插上ST-LINK的四根线,复位脚一定要插,然后随便准备一个程序,下载软件是STVP&
1、按住复位键不放&
2、松开复位脚,立马点下载&
3、重复12步骤
Warning[Pe223]:&function&"LCD_GLASS_ScrollString"&declared&implicitly&C:\Users\Administrator\Desktop\浙台研究\IAR\7\main.c&35&
函数没有声明的意思
void&main(void)
&CLK_config();
&GPIO_config();
CLK_config(void)&会报错
32字节闪存EE&PROM,1字节数据时钟,定时器,液晶显示器,串行通信,接口,接口,模数,,比较器
Stm8l152c6t6(stm-discovery)有几个时钟?
/link?url=jNaG9ZmOMJ7J5EjJ2tPOQPZti-SzzWWv_bPsBFHKAEkQC1TEulGnwCn1LW51_JH6Fw07jlq_0qFkADaMHqfIy_
HSI:高速内部时钟信号,精度较差
HSE:高速外部时钟信号&&精度高&来源(1)HSE外部晶体/陶瓷谐振器(晶振)&&(2)HSE用户外部时钟&
LSE:低速外部晶体&32.768kHz&主要提供一个精确的时钟源&一般作为RTC时钟使用
&&&&&#9312;、HSI是高速内部时钟,RC,频率为8MHz。
  &#9313;、HSE是高速外部时钟,可接石英/陶瓷谐振器,或者接外部时钟源,频率范围为4MHz~16MHz。
  &#9314;、LSI是低速内部时钟,RC,频率为40kHz。
  &#9315;、LSE是低速外部时钟,接频率为32.768kHz的石英晶体。
其中40kHz的LSI供独立IWDG使用,另外它还可以被选择为实时时钟RTC的时钟源。另外,实时时钟RTC的时钟源还可以选择LSE,或者是HSE的128分频。RTC的时钟源通过RTCSEL[1:0]来选择。
up&to&16&MHz&crystal&oscillator&&(HSE)
&&32&kHz&crystal&oscillator&(LSE)
&&Internal&16&MHz&factory-trimmed&RC&(HSI)
&&Internal&38&kHz&low&consumption&RC&(LSI)
&&Clock&security&system
Low&power&RTC
&&BCD&calendar&with&alarm&interrupt
&&Auto-wakeup&from&Halt&w/&periodic&interrupt
Stm8l152c6t6(stm-discovery)总共有多少内存?32字节闪存EE&PROM(电可擦可编程只读存储器--一种掉电后数据不丢失的存储芯片)
&&Up&to&32&KB&of&Flash&program&memory&and
1&Kbyte&of&data&EEPROM&with&ECC,&RWW
&&Flexible&write&and&read&protection&modes
&&Up&to&2&Kbytes&of&RAM
RAM(存储全局变量):RAM-RamdomAccessMemory易挥发性,高速存取,读写时间相等,且与地址无关,如等。
ROM:ROM-Read&Only&Memory。断电后信息不丢失,如计算机启动用的。存取速度很低,(较RAM而言)且不能改写。
LCD占用多少的内存?
LCD:&up&to&4x28&segments&w/&step-up&converter
触摸按键占用多少内存?
轻触按键占用多少内存?
LCD占用多少内存?
16个LCD_RAMRegister
LCD,触摸按键,轻触按键引脚分配,蓝牙通信(预留口)
矩阵键盘(是接多个GPIO还是单个接)需要外加电阻么?上拉或者限流?
STM8L152C6T6介绍
&#9632;&Operating&conditions
&&Operating&&supply&range&1.8&V&to
3.6&V&(down&to&1.65&V&at&power&down)
&&Temperature&range:&-&40&°C&to&85&or&125&°C
&#9632;&Low&power&features
&&5&low&power&modes:&Wait&,&Low&power&run
(5.1&&;A),&Low&power&wait&(3&&A),&Active-halt
with&full&RTC&(1.3&&A),&Halt&(350&nA)
&&Dynamic&consumption:&195&&A/MHz+440&A
&&Ultralow&leakage&per&I/0:&50&nA
&&&wakeup&from&Halt:&4.7&&s
&#9632;&Advanced&STM8&core
&&Harvard&architecture&and&3-stage&pipeline
&&Max&freq.&16&MHz,&16&CISC&MIPS&peak
&&Up&to&40&external&interrupt&sources
&#9632;&Reset&and&supply&management
&&Low&power,&ultrasafe&BOR&reset&with&5
selectable&thresholds
&&Ultralow&power&POR/PDR
&&Programmable&voltage&detector&(PVD)
&#9632;&Clock&management
&&1&to&16&MHz&crystal&oscillator
&&32&kHz&crystal&oscillator
&&Internal&16&MHz&factory-trimmed&RC
&&Internal&38&kHz&low&consumption&RC
&&Clock&security&system
&#9632;&Low&power&RTC
&&BCD&calendar&with&alarm&interrupt
&&Auto-wakeup&from&Halt&w/&periodic&interrupt
&#9632;&LCD:&up&to&4x28&segments&w/&step-up&converter
&#9632;&Memories
&&Up&to&32&KB&of&Flash&program&memory&and
1&Kbyte&of&data&EEPROM&with&ECC,&RWW
&&Flexible&write&and&read&protection&modes
&&Up&to&2&Kbytes&of&RAM
&#9632;&DMA
&&4&&supported&peripherals:&ADC,
DAC,&SPI,&I2C,&USART,&timers
&&1&channel&for&memory-to-memory
&#9632;&12-bit&DAC&with&output&buffer&#9632;&12-bit&ADC&up&to&1&Msps/25&channels
&&T.&sensor&and&internal&reference&voltage
&#9632;&2&Ultralow&power&comparators
&&1&with&fixed&threshold&and&1&rail&to&rail
&&Wakeup&capability
&#9632;&Timers
&&Two&16-bit&timers&with&2&channels&(used&as
IC,&OC,&PWM),&quadrature&encoder
&&One&16-bit&advanced&control&timer&with&3
channels,&supporting&motor&control
&&One&8-bit&timer&with&7-bit&prescaler
&&2&watchdogs:&1&Window,&1&Independent
&&Beeper&timer&with&1,&2&or&4&kHz&frequencies
&#9632;&Communication&interfaces
&&Synchronous&serial&interface&(SPI)
&&Fast&I2C&400&kHz&SMBus&and&PMBus
&&USART&(ISO&7816&interface&and&IrDA)
&#9632;&Up&to&41&I/Os,&all&mappable&on&interrupt&vectors
&#9632;&Up&to&16&capacitive&sensing&channels&with&free
&#9632;&Development&support
&&Fast&on-chip&programming&and&non&intrusive
debugging&with&SWIM
&&Bootloader&using&USART
&#9632;&96-bit&unique&ID
Warning[Pe188]:&enumerated&type&mixed&with&another&type&C:\Users\Administrator\Desktop\浙台研究\IAR\RTC测试程序\Libraries\STM8L15x_StdPeriph_Driver\src\stm8l_discovery_lcd.c&114&
table[0]=RTC_TimeStr.RTC_Hours/10+0x30;
代表0-5的显示个数
/thread--1.html
TIM4定时器&的时间设定&&计算
就是8M晶振下~载不分频的情况下~定时器是怎么计算的啊?比如~TIM4~8位基本定时器~要定1S出来~该怎么算啊~8位的不够的话可以定1MS循环&1000次之类的~偶就是想知道这个定时的算法怎么来的~就像51在12M晶振下定时器是1us的精度~STM8这个在8M晶振下定时器精度是多少啊?怎&么算的啊~
<img HEIGHT="3" WIDTH="578"
ALT="IAR&for&STM8&程序编写学习笔记&--基于IAR&Embedded&Workbench"
TITLE="IAR&for&STM8&程序编写学习笔记&--基于IAR&Embedded&Workbench" />
OK,8M晶振不分频的情况下,TIM4的时钟频率就是8MHz(注意定时器的分频是从fmaster分下来的,CPU也是从Fmaster分下来的,就是说定时器的分频和CPU没关系的),CNTR一个滴答就是1/8M&秒。
TIM4可以设置为2^X分频 ,X从1到7。就是最大为128分频。此时为62.5KHz,CNTR一个滴答就是1/62500&秒&=&16us。如果你设置ARR&=&250,那么TIM4每次中断就是4ms,累计250次就是1S了。
准备STM8L&触摸按键测试的编写与实践&半透镜的购买
在C语言中,static的字面意思很容易把我们导入歧途,其实它的作用有三条。
(1)第一个作用:隐藏。
当我们同时编译多个文件时,所有未加static前缀的全局变量和函数都具有全局可见性。为理解这句话,我举例来说明。我们要同时编译两个源文件,一个是a.c,另一个是main.c。
下面是a.c的内容
#include增加这条语句
char&a&=&‘A‘;&//&global&variable
void&msg()
&&&&&printf("Hello\n");
你可能会问:为什么在a.c中定义的全局变量a和函数msg能在main.c中使用?前面说过,所有未加static前缀的全局变量和函数都具有全局可见性,其它的源文件也能访问。此例中,a是全局变量,msg是函数,并且都没有加static前缀,因此对于另外的源文件main.c是可见的。
如果加了static,就会对其它源文件隐藏。例如在a和msg的定义前加上static,main.c就看不到它们了。利用这一特性可以在不同的文件中定义同名函数和同名变量,而不必担心命名冲突。Static可以用作函数和变量的前缀,对于函数来讲,static的作用仅限于隐藏,而对于变量,static还有下面两个作用。
(2)static的第二个作用是保持变量内容的持久。存储在静态数据区的变量会在程序刚开始运行时就完成初始化,也是唯一的一次初始化。共有两种变量存储在静态存储区:全局变量和static变量,只不过和全局变量比起来,static可以控制变量的可见范围,说到底static还是用来隐藏的。
(3)static的第三个作用是默认初始化为0。其实全局变量也具备这一属性,因为全局变量也存储在静态数据区。在静态数据区,内存中所有的字节默认值都是0x00,某些时候这一特点可以减少程序员的工作量。
最后对static的三条作用做一句话总结。首先static的最主要功能是隐藏,其次因为static变量存放在静态存储区,所以它具备持久性和默认值0。
下面是main.c的内容
除了头文件,需要声明函数:void&msg();
int&main(void)
&&&&extern&char&a;&&&&//&extern&variable&must&be&declared&before&use
&&&&&printf("%c&",&a);
&&&&&(void)msg();
&&&&return&0;
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。STM8S单片机的内部eeprom编程
单片机&嵌入式
单片机应用
嵌入式操作系统
学习工具&教程
学习和开发单片机的必备工具
(有问必答)
(带你轻松入门)
电子元件&电路模块
当前位置: >>
>> 浏览文章
STM8S单片机的内部eeprom编程
&&&&STM8S单片机芯片内部也集成有EEPROM,容量从640字节到2K字节。最为特色的是,在STM8单片机中,对EEPROM的访问就象常规的RAM一样,非常方便。EEPROM的地址空间与内存是统一编址的,地址从004000H开始,大小根据不同的芯片型号而定。
当然如果有外部EEPROM,自然是不会使用到内部的EEPROM的。但小东西也有大用途,例如做无线应用时,减少成本的情况下,还能保存一些特定设置,如:休眠时间,工作频率,输出功率,密码等。
EEPROM的3种编程模式:
l&&字节编程&(没有擦除操作)
可对&EEPROM的数据区域进行逐字地编程。应用程序直接向目标地址写入数据。
&EEPROM允许字编程(一次编程4个字节),从而缩短EEPROM的编程时间。
l&&块编程&(没有擦除操作)
&&&EEPROM块编程操作允许一次对整个块(64个字节)进行编程,整个块在编程前被自动擦除。但块编程操作一定要在RAM中运行。
下面以字节编程进行讲解:
实验平台:stm8s103k3 + stlink
在stm8s_flash.h中:
#if defined (STM8S103) || defined(STM8S903)
&#define FLASH_PROG_END_PHYSICAL_ADDRESS&&&((uint32_t)0x9FFF)&&
&#define FLASH_PROG_BLOCKS_NUMBER&&&&&&&&&&((uint16_t)128)&&&&&
&#define FLASH_DATA_START_PHYSICAL_ADDRESS ((uint32_t)0x004000)
&#define FLASH_DATA_END_PHYSICAL_ADDRESS&&&((uint32_t)0x00427F)
&#define FLASH_DATA_BLOCKS_NUMBER&&&&&&&&&&((uint16_t)10)&&&&&&
&#define FLASH_BLOCK_SIZE&&&&&&&&&&&&&&&&&&((uint8_t)64)&&&&&&&
从这里可以看出,eeprom的地址为0xx00427F,这段地址分为10个Block,每个Block有64个Byte,总容量为640Byte.
关于2个秘钥在stm8s_flash.h中已经定义:
#define FLASH_RASS_KEY1 ((uint8_t)0x56)
#define FLASH_RASS_KEY2 ((uint8_t)0xAE)
&&&&&&中文数据手册上KEY1和KEY2的定义与代码一致,但是英文数据手册上KEY1为0x56和KEY1为)0XAE.暂且不讨论谁搞反了,以代码为准吧!
首先要初始化EEPROM:
我们在eeprom.h中定义:
typedef enum{
&&#if defined(STM8S103) || defined(STM8S003) ||&&defined(STM8S903)
&&Block_0=0x4000,
&&Block_1=0x4040,
&&Block_2=0x4080,
&&Block_3=0x40C0,
&&Block_4=0x4100,
&&Block_5=0x4140,
&&Block_6=0x4180,
&&Block_7=0x41C0,
&&Block_8=0x4200,
&&Block_9=0x4240
}BlockStartAddress_TypeD //分块存数,方便读写操作!
在eeprom.c中初始化:
初始化操作步骤:
1.&设定编程时间。FIX=1为标准编程时间(一般一次编程时间为6ms)。如果EEPROM被擦除过并且FIX=0,那么变成时间为标准编程时间的一半(一般为3ms)。
2.&向FLASH_DUKR寄存器连续写入两个MASS密钥值来解除DATA区域的写保护。
第一个硬件密钥:0b (0x56)
第二个硬件密钥:0b (0xAE)
如果第二个秘钥匹配正确,FLASH_IAPSR的DUL位自动置位。
3.&等待DATA EEPROM区解锁。
void EEPROM_Init()
&&FLASH_SetProgrammingTime(FLASH_PROGRAMTIME_TPROG);
&&//&注意顺序:&FLASH_DUKR = 0xAE为Key2&,FLASH_DUKR = 0x56;为Key1
&&&FLASH_Unlock( FLASH_MEMTYPE_DATA);
&&&//如果第二个秘钥正确,FLASH_IAPSR_DUL=1;
&&&//直到FLASH_IAPSR_DUL由硬件置位,才跳出while循环
&&while((FLASH-&IAPSR & FLASH_IAPSR_DUL) == 0);//等待DATA EEPROM区解锁
FLASH_Unlock函数原型在stm8s_flash.c中:
void FLASH_Unlock(FLASH_MemType_TypeDef FLASH_MemType)
&&&&assert_param(IS_MEMORY_TYPE_OK(FLASH_MemType));
&&&&if (FLASH_MemType == FLASH_MEMTYPE_PROG)
&&&&&&&&FLASH-&PUKR = FLASH_RASS_KEY1;
&&&&&&&&FLASH-&PUKR = FLASH_RASS_KEY2;
&&&&&&&&FLASH-&DUKR = FLASH_RASS_KEY2;
&&&&&&&&FLASH-&DUKR = FLASH_RASS_KEY1;
在main.c中,你就可以进行擦除,读,写操作了!
&&FLASH_EraseByte(uint32_t Address);&&//&擦除某地址的一个字节
&&FLASH_ProgramByte(0x); //写入一个字节
&&while((FLASH_IAPSR & 0x04) != 0x00);&&&//直到EOP=1,EEPROM编程结束
&&Rdat= FLASH_ReadByte(0x4000);&&&//&读出某地址的一个字节
【】【】【】【】
上一篇:下一篇:
CopyRight @
单片机教程网
, All Rights Reservedstm8s官方例程 - 下载频道
- CSDN.NET
&&&&stm8s官方例程
stm8s官方例程
这是关于stm8s的例程,包括定时器,can总线,i2c等模块,有助于新手学习stm8s
若举报审核通过,可奖励20下载分
被举报人:
举报的资源分:
请选择类型
资源无法下载
资源无法使用
标题与实际内容不符
含有危害国家安全内容
含有反动色情等内容
含广告内容
版权问题,侵犯个人或公司的版权
*详细原因:
您可能还需要
开发技术下载排行STM8S系列单片机开发环境快速入门教程-百合电子工作室
网站导航:
STM8S系列单片机开发环境快速入门教程
文章编号:
文章分类:
关 键 词:
STM8S,开发环境
文章来源:
刚开始在论坛上逛了一圈,感觉STM8S的资料实在太少,都是官方的应用资料,没有什么入门介绍,连需要安装什么软件都搞不清楚
&&& 最近ST在国内大力推广他的8位高性价比单片机STM8S系列,感觉性能上还是非常不错的,网上稍微看了点资料,打算有机会还是学习一下,先入门为以后做好技术积累。好了,长话短说。手上拿到一套ST最近做活动赠送的三合一学习套件,上面包括STM32F小板、ST LINK小板、STM8S小板,做工很精致,相信很多朋友也收到了。既然当初去申请了,人家也送了,总得把用起来吧,放着吃灰尘是很可惜的^_^ 。
&&& 好,步入正题,刚开始在论坛上逛了一圈,感觉STM8S的资料实在太少,都是官方的应用资料,没有什么入门介绍,连需要安装什么软件都搞不清楚。偶的电脑光驱坏了,所以也读不出光盘里有什么东西,所以只能到处瞎摸,还是ourdev论坛好,嘿嘿,仔细看了几个帖子,总算明白大概是什么样的开发环境了。用C语言开发STM8S,需要安装两个软件:
1、STVD IDE开发环境;
2、COSMIC for STM8 C编译器。
&&& STVD可以到官网下载,下载地址:
&&& COSMIC 需要申请LICENSE,比较繁琐,刚好坛子有人传了一个免安装无限制版本的,偶就赶紧下载了,大家可以去下载,仅做为个人学习使用。下载地址:
&&& 软件下载后,只需安装STVD。从上面地址下载的COSMIC不用安装,只要解压到硬盘即可。后面建立工程的时候设置好路径即可。
下面一步一步开始啦~
一、安装好STVD后,桌面上建立了两个快捷图标,ST Visual Develop就是STVD了。ST Visual Programmer是编程软件,可以配合ST LINK对STM8S进行编程烧录。
二、双击运行ST Visual Develop,启动STVD开发环境。执行 File New Workspace,在New Workspace窗口里选择Create workspace and projects,点击&确定&建立工作组和工程
三、在Workspace filename里输入Workspace名称,由于最终我们要测试一个现成的LED程序,所以偶写了led,随你喜欢了,呵呵。在Workspace里设置好文件当前要存放的路径。然后点&OK&确定。
四、在Project filename里输入工程的名称,在Project location里设置好工程的存放路径。因为我们是要用C语言来开发的,所以在Toolchain里要选择 STM8 Cosmic 编译器;在Toolchain root里就要填写你刚才下载解压后的那个无限制的Cosmic的存放路径就可以了。都填好后,点&OK&。
怕大家搞不清楚上面的那个Toolchain root的存放路径,特截图一张。我是放在那里的,你看你放哪里就填哪里的路径。
五、在MCU Selection里,需要选择实际的MCU型号了,ST送的套件板上的芯片型号是STM8S207SBT6C,而下列的型号中却是STM8S207S8,没对上号,不知道是不是STVD弄错了。反正偶选下面的STM8S207S8是可以用的,先用着咯,呵呵。双击型号后,点&OK&。
六、下面工程就建立好了,呵呵,自动生成main.c 、stm8_interrupt_vector.c 、mods0.h。试试compile、build,一切顺利,因为现在main.c只有一个主程序,所以还是可以编译通过的,没有什么错误提示,如下下图:
&&& 好了,以上就是使用STVD建立工程的详细步骤了。
&&& 由于上面的main.c没什么实质的程序运行,所以下面我们要运行一个ADC电压采集,并把采集值赋给定时器,实现定时器PWM的变化输出,驱动LED亮度发生变化的程序,这个程序我是从一个论坛上下载的,应该也是这个套件板的光盘里的内容。
&&& 我先把这个程序工程里的3个文件(main.c 、 tm8_interrupt_vector.c 、 STM8S207R.h)传上来,其实这个工程也是可以直接运行的,但为了让我们上面辛苦建立的工程发挥下作用,所以还是继续沿用上面的工程,然后把我上传的3个文件名里的main.c 、 tm8_interrupt_vector.c 里的内容复制到我们刚才建立好的工程对应的文件里;并把STM8S207R.h这个文件复制到我们工程目录下,并添加到工程里,这个头文件是必须的。
&&& 大家先下载这3个文件:
&&& 然后编译程序,成功!
&&& 嘿嘿,下面要把实验板连接到电脑调试了。
&&& 不过在连机调试前,要先设置下Debug instrument的Target Settings&,实验板配套的是ST LINK,所以就选ST LINK就可以了。
&&& 还有一个重要的,差点忘了,那就是STM8S小板需要接独立的外部电源,DC9~12V,插座是内正外负,别搞错正负极了。
&&& 接上电源,板上的D4电源指示灯应该亮起,用USB连接线把ST LINK连接到电脑的USB。
&&& 然后点击DEBUG按钮,进入仿真调试界面
&&& 中间有一个确定窗口需要确定下就可以了。
&&& 进入仿真界面后,执行RUN按钮运行程序,这时候实验板进入全速运行的状态,可以看到实验板上的LD2发光二极管以一定的频率在闪烁,LD1微亮,这时候顺时针旋转板上的那个电位器,可以发现LD2的闪烁频率变慢,同时LD1的亮度增强。逆时针旋转电位器则反之。
&&& OK,至此STM8S的基础入门到此结束,由于工作繁忙,更深入的了解学习请大家多多探讨,这样才能进步得更快。谢谢~&
&&& 本工程里的这个ST公司写的测试程序里有详细的英文注释,看看基本都能看懂。中断函数需要在tm8_interrupt_vector.c里写,大家注意下就可以了。现在没有用到什么ST的函数库,所以感觉像在用C语言开发AVR,差别不大。
时间仓促,难免有错别字,请大家谅解。
最新开源项目
本站相关产品&&&
本站程序由百合电子工作室开发和维护
Copyright @ baihe electric studio
友情链接:

我要回帖

更多关于 stm8s编程手册 的文章

 

随机推荐