《STM8单片机PWM应用.doc》由会员分享,可在线阅读,更多相关《STM8单片机PWM应用.doc(2页珍藏版)》请在三一文库上搜索。
1、STM8单片机PWM应用PD3复用功能是TIM2_CC2,正好可以用来测试PWM功能。本例程通过电位器调整PWM脉宽来调整接在PD3的LED1亮度。#includevoid CLK_init(void)CLK_CKDIVR = 0x08; / 16M内部RC经2分频后系统时钟为8Mvoid GPIO_init(void)PD_DDR = 0x08; / 配置PD端口的方向寄存器PD3输出PD_CR1 = 0x08; / 设置PD3为推挽输出void TIM2_init(void)TIM2_CCMR2 = 0x70; / PWM模式 2TIM2_CCER1 = 0x30; / CC2配置为输出T
2、IM2_ARRH = 0x03;/ 配置PWM分辨率为10位,ARR=0x3FFTIM2_ARRL = 0xFF;/ PWM频率=8M/0x03FF=7820HzTIM2_CR1 = 0x01; / 计数器使能,开始计数本文引用地址:http:/eepw/article/201611/320481void ADC_init(void)ADC_CSR = 0x03; / ADC输入引脚AIN3ADC_CR1 = 0x01; / ADC开启void Run(void)unsigned int value;ADC_CSR = 0x80;/清除EOC转换结束标志ADC_CR1 |= 0x01; /开始
3、单次转换while(!(ADC_CSR0x80); /等待单次转换完成value = (int)ADC_DRH2); / 先读高8位,默认设置数据左对齐value |= ADC_DRL; / 再读低8位TIM2_CCR2H = (unsigned char)(value8); / 更新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();