用IAR测试STM8的PWM

来源:本站
导读:目前正在解读《用IAR测试STM8的PWM》的相关信息,《用IAR测试STM8的PWM》是由用户自行发布的知识型内容!下面请观看由(电工技术网 - www.9ddd.net)用户发布《用IAR测试STM8的PWM》的详细说明。
简介:这里介绍一个用IAR测试STM8的PWM 的程序。

IAR测试STM8的PWM

板子上的LED1接在了PD3上,而PD3复用功能是TIM2_CC2,正好可以用来测试PWM功能。当然板上的另外2个LED也可以用,LED2对应PD2/TIM3_CC1,LED3对应PD0/TIM3_CC2。下面通过电位器来调整LED1的亮度。

源程序:

#i nclude <iostm8s207sb.h>

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开启

}

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();

}

提醒:《用IAR测试STM8的PWM》最后刷新时间 2024-03-14 01:08:11,本站为公益型个人网站,仅供个人学习和记录信息,不进行任何商业性质的盈利。如果内容、图片资源失效或内容涉及侵权,请反馈至,我们会及时处理。本站只保证内容的可读性,无法保证真实性,《用IAR测试STM8的PWM》该内容的真实性请自行鉴别。