推荐阅读最新更新时间:2024-03-16 16:03
关于STM8S的halt状态及唤醒
简介:有个项目用了STM8S103F3,因是电池供电,需要进入halt状态并使用GPIO外部唤醒,因是初次使用STM8S,走了不少弯路,将过程记录下来,好让和我一样的初次接触STM8S的人有个启发。 现象:进不了HALT状态 硬件环境:使用PA1、PA2、PD2、PD5作为外部中断输入,来唤醒MCU。使用PD4作为输出,使用PD3作为AD转换口。 编程思路: 1、初始化系统(时钟、gpio)部分代码如下: void JG_GPIO_Init(void) { PA_DDR = 0xf9; PA_CR1 = 0x00; PA_CR2 = 0x06; //pa1、pa2中断 PB_DDR = 0x
[单片机]
STM8S中Option Byte的改写操作
在STM8S中有些引脚是第二功能,需要对OptionByte字节进行改写才能实现第二功能,在博文里有蜂鸣器的程序,在里面对Option Byte进行了修改,由于用到了库函数,觉得比较麻烦,想用裸机写个程序修改字节,操作后发现改了之后芯片就不能读写了,出现错误,总是出现找不到主函数的错误,郁闷了一天。 可项目里要用到第二引脚的功能,没办法继续努力吧!在网上查了一些相关的资料,说是可以用STVP修改Option Byte,抱着试试看的心态在网上下了软件,安装上后就简单的操作了一下,发现芯片居然好使了。虽然方法笨了点,但可以应用就OK了! 因为FLASH是掉电不丢失的,我先用STVP把OptionByte修改好后,
[单片机]
stm8s开发(六) EXIT的使用:做一个外部中断的按钮!
在前几篇文章, GPIO的使用:点亮LED! 中只讲述了IO口的输出,并没有输入,因为IO作为输入我建议采用中断方式,可以大大减轻CPU的运行时间。最常用的就是按钮的功能了,当然还有和其他芯片通信的功能。 前篇文章讲过GPIO可以通过寄存器设置为中断输入。(参考 http://blog.csdn.net/devintt/article/details/50818494 ) 配置模式 DDR CR1 CR2 配置模式 上拉电阻 输入 0 0 0 悬浮输入 OFF 0 1 0 上拉输入 ON 0 0 1 中断悬浮输入 OFF 0 1 1 中断上拉输入 ON 输出 1 0 0 开漏输出 OFF 1 1 0
[单片机]
IAR FOR STM8 同一个工程芯片选择003F3可以编译003K3提示空间不足
同一个工程文件,选择103F3可以编译通过,但是选择103K3便提示空间不足 百思不得其解,查阅大量资料无果。最后在IAR工程里面找到了配置文件 打开003f3的配置文件和003K3配置文件进行对比,其余都一样,唯独程序空间003K3是从地址0X9000开始,少了1K,不知道为何要这样设置,明明两个芯片空间大小和结构一模一样。 将003K3的配置文件地址改成0x8000开始,重新编译,一切正常。 编译通过,程序空间总共占用5419b。 问题:这样操作后将程序下载到电路板上不知道会不会出错,有待验证。个人猜测应该没问题,是IAR的错误。
[单片机]
STM8S单脉冲方式和重复计数器
STM8S的单脉冲方式在检测过零点信号触发可控硅导通的应用中比较适合。先了解下可控硅的导通条件。 可控硅导通需要满足两个条件: 1、 可控硅阳极和阴极间必须加正向电压 2、 控制极也要加正向电压 以上两个条件必须同时具备,可控硅才会处于导通状态,另外,可控硅一旦导通后,即使降低控制极电压或去掉控制极电压,可控硅仍然导通。 可控硅关断条件:降低或去掉加在可控硅阳极至阴极之间的正向电压,使阳极电流小于最小维持电流以下。 通过改变可控硅控制角可调节可控硅整流输出电压。 配置TIM1_CH1为输入通道,接50HZ交流过零检测信号。TIM1_CH2为输出通道,控制可控硅导通。 PWM初始化代码如下: STM8S
[单片机]
STM8S的HALT模式与AWU唤醒
/* ********************************************************************************************************************************** * Name : STM8S的HALT模式与AWU唤醒 * Author : MingMing * Release : 2014/1/2 * Update : 2014/1/2 * E-mail : clint.wang@foxmail.com *************************************************************
[单片机]
stm8s的assert_param()的说明
STM8S的程序,子程序都有assert_param(....),如下:这句到底有什么用呢???把它删了应该可以的吗?? void TIM1_TimeBaseInit(u16 TIM1_Prescaler, TIM1_CounterMode_TypeDef TIM1_CounterMode, u16 TIM1_Period, u8 TIM1_RepetitionCounter) { /* Check parameters */ assert_param(IS_TIM1_COUNTER_MODE_OK(TIM1_CounterMode)); ...... }
[单片机]
stm8s配置外部时钟详解及配置步骤
配置STM8外部时钟(寄存器)步骤: 1.设置外部时钟寄存器CLK_ECKR是对其写0xB4 2.设置外部时钟分频,CLK_CKDIVR低三位是外部时钟分频系数设置 3.使能外部时钟向CLK_ECKR写0x01 void CLK_Init(void) { CLK_CMSR =0xB4; //使能外置高速晶体振荡器 CLK_CKDIVR =0x03; //设置外部时钟分频 CLK_ECKR = 0X01; //使能外部时钟寄存器 } 使能外部时钟后的寄存器
[单片机]