STM8S系列程序示例

STM8S系列程序示例,第1张

/

STM8S105 TIM2 TIM3输出PWM PD0 PD3 TIM3输出PWM,/#include "STM8S105Kh"

#include "STM8S105_CLOCKh"

typedef unsigned char u8;

typedef unsigned int u16;u16 value;

/

函数名 : void SystemInit(void)

功能描述: 系统初始化

函数说明: 系统全局初始化

/

void SystemInit(void)

{ SystemClock_Init();

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

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

}

/

函数名 : void main(void)

功能描述: 主函数

函数说明:

/

void GPIO_init(void)

{

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

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

PB_DDR|= 0x04; //PB2输出

PB_CR1|= 0x04; //PB2推挽输出

PB_ODR|= 0x04; //开5V电源

}

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

{

// TIM2_CCMR2= 0x60; // PWM 模式 1

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

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

//TIM2_CCER2= 0x03; // CC3使能

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

TIM2_ARRL = 0xFF; // PWM频率=8M/0x03FF=7820Hz

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

}

void TIM3_init(void) //TIM3 CH1 ch2工作于模式2,1

{

TIM3_CCMR1= 0x70; //PWM模式2

TIM3_CCMR2= 0x60; // PWM 模式 1

TIM3_CCER1= 0x33; // CC1 CC2配置为输出,CH1 CH2

TIM3_ARRH = 0x03; // 配置PWM分辨率为10位,ARR=0x3FF

TIM3_ARRL = 0xFF; // PWM频率=8M/0x03FF=7820Hz

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

} void Run(void)

{ //TIM2_CCR2H = (unsigned char)(value>>8); // 更新CC2比较寄存器

//TIM2_CCR2L = (unsigned char)(value);

TIM2_CCR1=value;

//TIM2_CCR3=value;

TIM3_CCR2=value;

TIM3_CCR1=value; //注意每个通道都要设CCR

} void init_devices(void)

{

_asm("sim");

SystemInit();

GPIO_init();

TIM2_init();

TIM3_init();

_asm("rim");

} void main( void )

{

init_devices();

while(1)

Run();

} /

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

功能描述: 中断服务程序

函数说明:

/

@near @interrupt void TLI_IRQHandler (void) {

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

value+=50;

while(value>1000)

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

return;

}

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

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

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

简单调光可以在LED灯珠回路中串接电阻,改变电流,就可以调亮度,好一点用PWM脉宽调节实现调亮度,电路复杂一些。色温好像一般调不了,由LED灯珠特性(材料和制造已固定)决定,没法调节的。

调光调色LED吸顶灯,其实是内部有2路的输出的。一路为暖光(3000k色温左右),一路为冷光(正白,7000k色温左右)。每一路都是独立的。通过给每一路不同的亮度,就可以对整个灯进行色温的调整和亮度的调整。譬如,A路是暖光,色温3000k,但亮度只有全亮的10%,而B路是冷光,亮度只有全亮的40%,那么,在灯体内混成的色温可能就只有5000k了(不是很冷白,也有一丁点暖白)。也就是说,真正的调光调色可以从亮度和色温进行调整。

现在的LED调光调色吸顶灯,会有2类,一种是固定亮度和只有3档色温(暖白、中性白、正白),这种便宜一些;另外一种是叫无级调整,如圆周率光电(PI-TECH)的调光调色吸顶灯,亮度和色温都可以独立调整,每个10个档位,有多达100种效果,通过遥控器来进行遥控。

以上就是关于STM8S系列程序示例全部的内容,包括:STM8S系列程序示例、stm8s芯片的按键检查程序怎么写啊我写的按键是芯片没反应,望高手给给调试成功的程序参考下、LED台灯如何实现调亮度和调色温的功能等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zz/9717566.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-01
下一篇2023-05-01

发表评论

登录后才能评论

评论列表(0条)

    保存