您的位置 首页 ADAS

STM8单片机PWM使用(IAR)

PD3复用功能是TIM2_CC2,正好可以用来测试PWM功能。本例程通过电位器调整PWM脉宽来调整接在PD3的LED1亮度。includeiostm8s207sbh>void

PD3复用功用是TIM2_CC2,正好能够用来测验PWM功用。本例程经过电位器调整PWM脉宽来调整接在PD3的LED1亮度。

#include

void CLK_init(void)
{
CLK_CKDIVR = 0x08; // 16M内部RC经2分频后体系时钟为8M
}

void GPIO_init(void)
{
PD_DDR = 0x08; // 装备PD端口的方向寄存器PD3输出
PD_CR1 = 0x08; // 设置PD3为推挽输出
}

void TIM2_init(void)
{
TIM2_CCMR2 = 0x70; // PWM形式 2
TIM2_CCER1 = 0x30; // CC2装备为输出
TIM2_ARRH = 0x03;// 装备PWM分辨率为10位,ARR=0x3FF
TIM2_ARRL = 0xFF;// PWM频率=8M/0x03FF=7820Hz
TIM2_CR1 = 0x01; // 计数器使能,开端计数
}

void ADC_init(void)
{
ADC_CSR = 0x03; // ADC输入引脚AIN3
ADC_CR1 = 0x01; // ADC敞开
}

void Run(void)
{
unsigned int value;
ADC_CSR &= ~0x80;//铲除EOC转化完毕标志
ADC_CR1 |= 0x01; //开端单次转化
while(!(ADC_CSR&0x80)); //等候单次转化完结
value = ((int)ADC_DRH<<2); // 先读高8位,默认设置数据左对齐
value |= ADC_DRL; // 再读低8位
TIM2_CCR2H = (unsigned char)(value>>8); // 更新CC2比较寄存器
TIM2_CCR2L = (unsigned char)(value);
}

void init_devices(void)
{
asm(“sim”);//制止中止
CLK_init();
GPIO_init();
TIM2_init();
ADC_init();
asm(“rim”); //使能中止
}

void main( void )
{
init_devices();

while(1) Run();
}

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/qiche/adas/261534.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部