打印
[STM8]

stm8l学习笔记

[复制链接]
6516|26
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
最近刚接触stm8l头大,上来就看固件库看的头晕,开始的时候资料也少现在也是幸好找到了RM0031这些资料虽然是英文总比以前找不到寄存器好多了。
沙发
b626393883|  楼主 | 2014-11-8 00:58 | 只看该作者
本帖最后由 b626393883 于 2014-11-8 01:00 编辑

用的板子是stm8l-discovery的板子 第一步先来看看让一个led点亮闪烁起来
#include "stm8l15x.h"

void delay(unsigned int ms)
{
unsigned int i;
while(ms--)
{
  for(i=ms;i>0;i--);

}

}
int main (void)
{
while(1)
{

GPIOC->DDR=0X80; //pc7配置为输出
GPIOC->CR1=0X80;//推挽输出
GPIOC->ODR=0X80;//高电平
delay(500);
GPIOC->ODR=0X00;
  delay(500);
}



}

QQ截图20141108005335.jpg (331.89 KB )

QQ截图20141108005335.jpg

QQ截图20141108005158.jpg (251.53 KB )

QQ截图20141108005158.jpg

使用特权

评论回复
板凳
b626393883|  楼主 | 2014-11-8 01:35 | 只看该作者
来看一下固件库的编程 GPIO.C里面总共有这么几个函数来看看起作用学习下
GPIO_DeInit ()函数里面就是把各个端口赋0也就是上面的 RESET VALUE
void GPIO_Init(GPIO_TypeDef* GPIOx, uint8_t GPIO_Pin, GPIO_Mode_TypeDef GPIO_Mode) //选择端口 配置模式
下面3个函数可以说就是一个只是处理方式不同而已 一个或一个与
void GPIO_WriteBit(GPIO_TypeDef* GPIOx, GPIO_Pin_TypeDef GPIO_Pin, BitAction GPIO_BitVal)  //GPIO_BitVal 可选择SET与RESET也就是0与1
void GPIO_SetBits(GPIO_TypeDef* GPIOx, uint8_t GPIO_Pin)  这个就相当于上个函数选择了set
void GPIO_ResetBits(GPIO_TypeDef* GPIOx, uint8_t GPIO_Pin) 这个reset

QQ截图20141108013452.jpg (218.48 KB )

QQ截图20141108013452.jpg

使用特权

评论回复
地板
b626393883|  楼主 | 2014-11-8 01:39 | 只看该作者
记得在stm8l15x_conf.h 打开gpio.h

使用特权

评论回复
5
mmuuss586| | 2014-11-8 09:16 | 只看该作者

谢谢楼主分享;

使用特权

评论回复
6
FAQ| | 2014-11-8 09:22 | 只看该作者
学习进步的过程势必是痛苦的,但是学会之后就会发现简单的要命。

使用特权

评论回复
7
b626393883|  楼主 | 2014-11-8 15:06 | 只看该作者
mmuuss586 发表于 2014-11-8 09:16
谢谢楼主分享;

多谢版主帮忙 开始搞低功耗被halt困惑了好久,项目虽然完成了但是不理想,主要是开始讨论方案就选错了 选的普通数码管这是个致伤,如果换成段式液晶就会好多了

使用特权

评论回复
8
b626393883|  楼主 | 2014-11-8 15:45 | 只看该作者
  
现在在源程序基础上加上时钟 因为系统默认时钟为HSI 改成切换为LSE 初始化中用到了while判断lse是否准备就绪 有个坏处 外部时钟坏了系统可能卡死在这里
有个问题要请教大神们 为什么不能用GPIOC_DDR呢 只能用GPIOC->DDR?找了一下也没看懂不都是操作结构体吗

使用特权

评论回复
9
b626393883|  楼主 | 2014-11-8 15:48 | 只看该作者

使用特权

评论回复
10
b626393883|  楼主 | 2014-11-8 15:53 | 只看该作者
FAQ 发表于 2014-11-8 09:22
学习进步的过程势必是痛苦的,但是学会之后就会发现简单的要命。

是的只要静下心来学,会发现原来自己认为很难得东西其实也不是那么难

使用特权

评论回复
11
b626393883|  楼主 | 2014-11-8 16:04 | 只看该作者

切换时钟所需寄存器 及操作流程图 主要看software那一块 硬件不需要管

使用特权

评论回复
12
b626393883|  楼主 | 2014-11-8 19:32 | 只看该作者
   CLK->ECKCR = 0x04;//确认开启lse
    CLK->SWCR = 0x02;//使能切换  
    CLK->SWR =0x08;//选择LSE为时钟源
     CLK->CKDIVR =00;//不分频

寄存器那有错误 要先开lse即   CLK->ECKCR = 0x04;  
CLK_LSEConfig(CLK_LSE_ON); //确认开启lse                          CLK_SYSCLKSourceSwitchCmd(ENABLE);            //使能切换         
       CLK_SYSCLKSourceConfig(CLK_SYSCLKSource_LSE);   //选择LSE为时钟源   
      CLK_SYSCLKDivConfig(CLK_SYSCLKDiv_1);     // 不分频

光看流程图没看lse那边的介绍吃了亏 回去详细看了下 虽然手册上说选为时钟源可以自动开启 但是一切换又默认回到了hsi这是怎么个情况待解决

使用特权

评论回复
13
mmuuss586| | 2014-11-8 21:42 | 只看该作者
b626393883 发表于 2014-11-8 15:06
多谢版主帮忙 开始搞低功耗被halt困惑了好久,项目虽然完成了但是不理想,主要是开始讨论方案就选错了 选 ...

用OLED屏也省电的;
段式液晶一般要定做的,特别低功耗的,还不太好找;

使用特权

评论回复
14
b626393883|  楼主 | 2014-11-9 00:52 | 只看该作者
恩 主要是外壳什么都定好了 这几天就要拿去测试了。只能说这个方案不成熟 估计还要改

使用特权

评论回复
15
b626393883|  楼主 | 2014-11-9 01:02 | 只看该作者
板子上的按键对应的是GPIOC1 外部中断1产生按键 并对GPIOE7进行写操作 控制LED亮灭 这是程序ITC中所要用到的寄存器极中断操作

使用特权

评论回复
16
b626393883|  楼主 | 2014-11-9 01:09 | 只看该作者
外部按键中断 下降沿只能进入一次 所以可以这样写 如果是低电平标志好像清不掉 要加松手检测

使用特权

评论回复
17
Yapions| | 2014-12-17 14:22 | 只看该作者
楼主你的寄存器手册那搞的,共享下吧   我现在刚开始搞STM8L152   没有寄存器手册  啥都干不了啊

使用特权

评论回复
18
hopewise| | 2014-12-17 14:31 | 只看该作者

使用特权

评论回复
19
csky| | 2015-7-9 10:32 | 只看该作者
刚学stm8l  连stvd和cosmic都没连接上

使用特权

评论回复
20
黑夜之狼| | 2015-10-27 14:56 | 只看该作者
b626393883 发表于 2014-11-8 16:04
切换时钟所需寄存器 及操作流程图 主要看software那一块 硬件不需要管

我在用库函数,也是这么设置,仿真下载不了

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

4

主题

28

帖子

2

粉丝