原创 帮朋友写的STM8S入门程序

2015-11-30 11:36 3007 16 20 分类: MCU/ 嵌入式

帮同学写的简单的入门程序,基于STM8S105
课程:按下键就灯亮
环境:IAR for STM8
芯片:STM8S105

照惯例,分享附件

1,公司之前做的一块板的原理图
2,STM8从入门到精通   这是一本个人比较推荐的入门书籍,纯粹为了入门


ok,开始

1,配置好时钟,为16M晶振

Tip:这个函数可以直接拿去用
/*********************************************
函数功能:系统内部时钟配置
输入参数:SYS_CLK : 2、4、8、16
输出参数:无
备    注:系统启动默认内部2MHZ
*********************************************/
void CLOCK_Config(unsigned char SYS_CLK)
{
   //时钟配置为内部RC,16M
   CLK->CKDIVR &=~(BIT(4)|BIT(3));
   switch(SYS_CLK)
   {
      case 2: CLK->CKDIVR |=((1<<4)|(1<<3)); break;
      case 4: CLK->CKDIVR |=(1<<4); break;
      case 8: CLK->CKDIVR |=(1<<3); break;
   }
}

2,配置好IO口
Tip:这个请查看我分享的资料《stm8从入门到精通》的GPIO章节
void LED_INTI(void)   //推挽输出
{
    PC_DDR |=(1<<3);                              //power 1-3
    PC_CR1 |=(1<<3);
   
    PC_DDR |=(1<<4);
    PC_CR1 |=(1<<4);
   
    PC_DDR |=(1<<5);
    PC_CR1 |=(1<<5);
}

void KEY_INTI(void)  //配置成悬浮输入
{
 PB_DDR &= ~((1<<1)+(1<<2)+(1<<3));   //按键1-3
 PB_CR2 |= ((1<<1)+(1<<2)+(1<<3));
 PB_CR1 &= ~((1<<1)+(1<<2)+(1<<3));
 EXTI_CR1 |= (1<<2);  //配置上升沿中断
 
}

3,添加头文件
#include "IOSTM8S105K4.h"
#include "stm8s.h" //有时候我觉得没有必要添加这个
....(你自己写的头文件添加进来)
Tip : 请检查你的文件已经添加到工程项目中

4,按键解决方案

a,之前学C51的时候,我采用的方法是
Tip : 软件演示,"消抖"
 if(key1)
 {
  delay_us(20);  //这个要看具体的延时
  if(key1)
  {
   执行程序;
   ........;
   ........;
  }
 }

b,这里采用的方法是
Tip:
a,自行查阅STM8从入门到精通 的 中断向量表;
b, 如果用数字表示中断向量,请加2
c,这个程序请确保引脚平时处于低电平,按下处于高电平

#pragma vector = 6  //这个要根据具体的外部中断选择 PA:5 PB:6 PC:7 PD:8 ...
__interrupt void PC_470Rx(void)
{
 if(PB_ODR_ODR1==1)
 {
  LED1=!LED1;
 }

 if(PB_ODR_ODR2==1)
 {
  LED2=!LED2;
 }

 if(PB_ODR_ODR3==1)
 {
  LED3=!LED3;
 }


}


5,编写主函数
#.....//需要的时候添加头文件
#.....//需要的时候添加头文件
#include "IOSTM8S105K4.h"  //要自己查看芯片

#define LED1  PC_ODR_ODR3
#define LED2  PC_ODR_ODR4
#define LED3  PC_ODR_ODR5

#define KEY1  PCB_ODR_ODR1
#define KEY2  PCB_ODR_ODR2
#define KEY3  PCB_ODR_ODR3

unsigned char Key1Fg;
unsigned char Key2Fg;
unsigned char Key3Fg;

void LED_INTI(void);                         //函数先声明
void KEY_INTI(void);                         //函数先声明
void CLOCK_Config(unsigned char SYS_CLK);    //函数先声明
//Tip:可以试着把上面一段注释掉 看看什么错误
//Tip: 由于我是在记事本里面写的程序,可能有中文输入的问题

void main()
{

 CLOCK_Config(16);
 LED_INTI();
 KEY_INTI();
 for(;;)
 {
  if(Key1Fg)
  {
   Key1Fg=0;  // 试一下不加这一句
   ....;  //自己添加自己要增加的功能
   ....;  /自己添加自己要增加的功能

  }

  if(Key2Fg)
  {
   Key2Fg=0;  // 试一下不加这一句
   ....;  //自己添加自己要增加的功能
   ....;  /自己添加自己要增加的功能

  }

  if(Key3Fg)
  {
   Key3Fg=0;  // 试一下不加这一句
   ....;  //自己添加自己要增加的功能
   ....;  /自己添加自己要增加的功能

  }
 }
 
}

 

void LED_INTI(void)

{

             ........;在这里进行配置 如上

}

void KEY_INTI(void)

{

              。。。。。;//配置按键 如上

}
void CLOCK_Config(unsigned char SYS_CLK)

{

          .......;//配置时钟

}

 

 

中断函数
#pragma vector = 6  //这个要根据具体的外部中断选择 PA:5 PB:6 PC:7 PD:8 ...
{

 if(PB_ODR_ODR1==1)
 {
  Key1Fg =1;
 }

 if(PB_ODR_ODR2==1)
 {
  Key2Fg =1;
 }

 if(PB_ODR_ODR3==1)
 {
  Key3Fg =1;
 }
}

作者: Bruce-Woo, 来源:面包板社区

链接: https://mbb.eet-china.com/blog/uid-me-1850657.html

版权声明:本文为博主原创,未经本人允许,禁止转载!

文章评论4条评论)

登录后参与讨论

用户1862599 2015-12-25 15:24

怎么下载

用户377235 2015-12-7 23:38

写得非常棒,对我们初学者来说是非常有帮助的!感谢楼主

Bruce-Woo 2015-11-30 12:18

已上传

用户611095 2015-11-30 10:57

楼主,附件没看见呢
相关推荐阅读
Bruce-Woo 2023-03-07 15:14
嵌入式面试之系统
最近一段时间在开始找工作,自己以前也面试过其他人,想从实际工作的角度,来提出一些有意义的问题并做一些浅薄的解答,期望帮助到找工作或者刚开始当面试官的朋友。我把面试要准备的地方列成一下几个注意点,大家...
Bruce-Woo 2023-02-25 21:59
芯片选型的思路
近来在面试,不知为何很多人问起我刚毕业的时候的项目中的一个芯片选型的事情,回过头来整理下,希望可以帮助到后面的朋友1. 开发难度 开发难度,要考虑本身的程序员的开发能力,擅长的领域和工具等。综合下你...
Bruce-Woo 2021-03-17 14:19
记一次调用动态库报错的处理过程( undefined symbol)
最近工作在调用其他同事的一个动态库的时候发现有 未识别的错误 特此记录一下         首先我们用ldd查一下动态库连接是否有问题   ...
Bruce-Woo 2021-03-11 15:03
ubuntu16.04下安装svn
SVN和GIT相信是大家使用最多的代码协同工具,不过可能在win下用的比较多,那今天在ubuntu上运行一遍,操作都差不多。某种程度上讲,我也更喜欢指令操作。1. 远程登录虚拟机,也可以页面操作,看个...
Bruce-Woo 2021-02-09 01:08
2020,我想和你谈谈
这篇文字无关技术,也没有代码。 这是最好的时代,也是最坏的时代!写在回家前夜。 不到10个小时后就要开始坐车回家,手头的工作也没有做完。正经的事儿没完成,乱七八糟的事情倒是想了不少,说话是一种表达方...
Bruce-Woo 2021-01-19 12:34
cmake的安装过程
今天在编译opencv的时候突然发现cmake失败,显示版本不同遂决定修复之方法如下下载更高版本cmake,可在cmake官网下载 解压 tar -zxvf cmake-3.19....
我要评论
4
16
关闭 站长推荐上一条 /2 下一条