stm8s单片机入门(stm8单片机选型)

stm8s单片机编程

文件:main.c

用途:

注意:内部8M晶振

************************************************/

#include iom128v.h

unsigned char LED_table[]={0xFF,0x00,0xFF,0xFE,0xFD,0xFB,0xF7,0xEF,0xDF,0xBF,0x7F,0xFF,0x00,0xFF,0x7F,0xBF,0xDF,0xEF,0xF7,0xFB,0xFD,0xFE,0xFF,0x00,0xFF,0x7E,0xBD,0xDB,0xE7,0xFF,0x00,0xE7,0xDB,0xBD,0x7E,0xFF,0x00};

用途:延时函数

注意:系统时钟8M

************************************************/

void delay_1us(void) //1us延时函数

{

asm("nop");

}

void delay_nus(unsigned int n) //N us延时函数

{

unsigned int i=0;

for (i=0;in;i++)

delay_1us();

}

void delay_1ms(void) //1ms延时函数

{

unsigned int i;

for (i=0;i1140;i++);

}

void delay_nms(unsigned int n) //N ms延时函数

{

unsigned int i=0;

for (i=0;in;i++)

delay_1ms();

}

void main(void)

{

unsigned char i=0;

PORTA = 0xFF;

DDRA = 0xFF;

DDRE=0XFF;

PORTE=0XFF;

while(1)

{

if(i==36) i=0;

PORTA = LED_table[i++];

delay_nms(80);

}

}

用STM8S105单片机写一个输出频率为2KHz的方波,C语言? 没用过stm8单片机,求入门资料。谢谢!

//此例程是通过TIM2 CH1(PD4脚)通道来输出一个频率2K 占空比可调的方波,占空比可通过PD7脚的按键调

#include "STM8S105K.h"

typedef unsigned char u8;

typedef unsigned int u16;

u16 value;

void SystemInit(void)

{

CLK_CKDIVR = 0x08; // 16M内部RC经2分频后系统时钟为8M

CLK_PCKENR1 |= 0x60; //使能TIM2与TIM3与主频连接

PD_CR2 |= 0x80; //使能PD7口外部中断

}

void GPIO_init(void)

{

PD_DDR = 0x1F; //配置PD端口的方向寄存器全输出

PD_CR1 = 0x1F; //设置PD为推挽输出

}

void TIM2_init(void) //TIM2 CH1 工作于模式1

{

TIM2_CCMR1= 0x60; // PWM 模式 1,TIM2 CH1

TIM2_CCER1= 0x03; // CC1配置为输出

TIM2_ARRH = 0x07; // 配置PWM分辨率为10位,ARR=0x07D0

TIM2_ARRL = 0xD0; // PWM频率=8M/0x07D0=2000Hz

TIM2_CR1 |= 0x01; // 计数器使能,开始计数

}

void init_devices(void)

{

asm("sim");

SystemInit();

GPIO_init();

TIM2_init();

_asm("rim"); //开总中断

}

void main( void )

{

init_devices();

while(1)

TIM2_CCR1=value;//改变value值可改变频率

}

/****************************************************************************

*** 函数名 : @near @interrupt void TLI_IRQHandler (void)

*** 功能描述: 中断服务程序

按下PD7口按键来改变占空比

*****************************************************************************/

@near @interrupt void TLI_IRQHandler (void)

{

PD_CR2 = 0x7F; //关PD7外部中断

value+=50;

while(value1000)

value=0;

PD_CR2 |= 0x80; //使能PD7口外部中断

return;

}

stm8s芯片的按键检查程序怎么写啊?我写的按键是芯片没反应,望高手给给调试成功的程序参考下

首先,按键的硬件电路,按键不按的时候常高或者常低,按钮按下产生1个跳变,下降沿或者上升沿。

然后,软件部分,将这个IO口配置为输入模式,带中断功能,再然后编写中断事件即可,比如让一个LED灯亮,或者串口输出。

有问题可以用ST-LINK连接看看,Debug可以单步运行查看进度的,比51的年代强太多了

什么是单片机STM8

ST的8位微控制器平台基于高性能8位内核,配有先进的成套外设。 该平台采用ST的130 nm嵌入式非易性存储器专有技术。 STM8通过增强型堆栈指针运算、先进的寻址模式和新指令实现快速、安全的开发。 STM8平台支持三种主要产品线:

STM8S,通用微控制器

STM8L,超低功耗EnergyLite™微控制器

STM8A,汽车级微控制器

以上是ST公司官方给出的介绍。对于选型来讲STM8的主要特点是最高工作频率24MHz,性能可以达到20MIPS。定时器等外设资源的架构和现在炙手可热的STM32系列ARM基本相同,可以用类似的方式控制,官方提供了软件架构库FWLib,可以简化开发过程。中断的处理方式与AVR不大相同,几种中断源可能对应一个中断向量,据说类似51,但是我没用过51,所以没有考证。价格上与AVR的定位类似,感觉性价比稍微高于AVR一些。仿真器为ST-Link,可以在淘宝上买到,只需要100多就可以,所以上手成本也比较低。

不知道这些信息是否能够满足您的需求。

最近在学STM8S208R 单片机! 以前弄ARM,所以对STM8S不是很清楚!有几个问题想问下大家!

STM8是st公司的8位单片机。

1、STM8的程序是直接从flash中读出并执行的,所以是Nor Flash。

2、STM8的指令集是自己的,可以到ST的官网上找到指令集的详细解释。

3、STM8的RAM是SRAM,不是DRAM,具体多大要看是哪颗芯片,不同的芯片是不一样的,你还是到官网上找芯片的数据手册看看吧,或者给个邮箱我发给你几个。

这种8位机启动比较简单,直接从flash的起始地址读代码执行,没有boot之类的东西。

学会51后如何进军stm8

别怪我说话难听啊,学完51又学STM8简直是神经病啊。学来学去你学这么多8位单片机干嘛呢?STM8的性价比确实比51高不少,但是你既然学了51,只要你学的精,很多问题都是可以用51解决的。而且STM8的开发环境是封闭的,学了半天也就只能用来开发ST家的STM8。我见过的一个,学了51学avr,学了avr学pic,学了pic学msp。到头来什么都懂点但什么都不精,半瓶子醋什么都做不了。建议你既然学了51,就把51学透,学精,打好基础,如果51的确满足不了你的需求就再去学arm,譬如STM32,别再想肯STM8了。

361知讯网

本文链接:http://pdidw.com/keil/55793.html

发表评论

评论列表

还没有评论,快来说点什么吧~