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了。