STM8单片机PWM应用(IAR)

来源:本站
导读:目前正在解读《STM8单片机PWM应用(IAR)》的相关信息,《STM8单片机PWM应用(IAR)》是由用户自行发布的知识型内容!下面请观看由(电工技术网 - www.9ddd.net)用户发布《STM8单片机PWM应用(IAR)》的详细说明。
简介:本文给大家介绍了STM8单片机PWM应用(IAR)。

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

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