完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
|
|
在使用 PWM TIM2 CH1、CH3 修改
1. 在使用stm8s系列的单片机的时候,使用的头文件大部分都是通用的stm8s.,第一步修改头文件: /* Uncomment the line below according to the target STM8S or STM8A device used in your application. */ /* #define STM8S208 */ /*!< STM8S High density devices with CAN */ /* #define STM8S207 */ /*!< STM8S High density devices without CAN */ /* #define STM8AF52Ax */ /*!< STM8A High density devices with CAN */ /* #define STM8AF62Ax */ /*!< STM8A High density devices without CAN */ /* #define STM8S105 */ /*!< STM8S Medium density devices */ /* #define STM8AF626x */ /*!< STM8A Medium density devices */ #define STM8S103 /*!< STM8S Low density devices */ /* #define STM8S903 */ /*!< STM8S Low density devices */ 2. 取消stm8s103的注释,103和003的寄存器地址都是一样的,所以我们这里用103替代003. 3. 引脚使用PWM功能时无需配置GPIO状态,直接配置寄存器即可。例如TIM2的库函数配置如下: TIM2_TimeBaseInit(TIM2_PRESCALER_1, 7999); /* 1分频 ,计数值8000,频率=16M/8000=2kHZ */ /* PWM1 Mode configuration: Channel1 */ TIM2 Channel1 duty cycle = [TIM2_CCR1/(TIM2_ARR + 1)] * 100 = 50%*/ TIM2_OC1Init(TIM2_OCMODE_PWM1, TIM2_OUTPUTSTATE_ENABLE,2000, TIM2_OCPOLARITY_HIGH); TIM2_OC1PreloadConfig(ENABLE); /* PWM2 Mode configuration: Channel2 */ TIM2_OC2Init(TIM2_OCMODE_PWM2, TIM2_OUTPUTSTATE_ENABLE,2000, TIM2_OCPOLARITY_HIGH); TIM2_OC2PreloadConfig(ENABLE); /* PWM3 Mode configuration: Channel3*/ TIM2_OC3Init(TIM2_OCMODE_PWM2, TIM2_OUTPUTSTATE_ENABLE,2000, TIM2_OCPOLARITY_HIGH); TIM2_OC3PreloadConfig(ENABLE); TIM2_Cmd(ENABLE); 4. 配置完成后,调试输出2kHz 占空比为25%的PWM波,如下图所示: 2. TIM1三通道输出PWM电话实例: CLK->CKDIVR= 0x00; //内部16M时钟不分频 TIM2->PSCR = 0x00; // T预分频系数为 1IM2->CR1 = 0x01; //实测能; TIM2->ARRH = 0频0分00K,16M/320=5x00K,49.7K TIM2->ARRL = 0x8a;//实测自动位;通道0013e为0.0K /*PWM1*/ TIM2->CCER1 |= 0x01; //开启OC1信号输出脚 TIM2->CCMR1 = 0x60; //PWM1模式 TIM2->CCR1H = 0x00; //占空比 高位TIM2->CCR1L = 0x37; //占空比低位 TIM2->CCMR1 |= 0x08; //输出比较预加载能力 /*PWM2通道设置*/ TIM2->CCER1 | 0x10; //开启OC2信号输出脚 TIM2->CCMR2 = 0x60; //PWM1模式 TIM2->CCR2H = 0x00; //占空比 高位 TIM2->CCR2L = 0x37; //占空比低位 TIM2->CCMR2 |= 0x08; //输出比较2预充电能力 /*PWM通道设置*/ TIM2->CCER2 | 0x01; TIM2->CCMR3 = 0x60;//PWM1模式 TIM2->CCR3H = 0x00; //占空比 高位TIM2->CCR3L = 0x37; //占空比低位 TIM2->CCMR3 |= 0x08; //输出比较3预装使能 TIM2->CR1 |= 0x01; |
|
|
|
只有小组成员才能发言,加入小组>>
3310 浏览 9 评论
2991 浏览 16 评论
3492 浏览 1 评论
9055 浏览 16 评论
4086 浏览 18 评论
1175浏览 3评论
603浏览 2评论
const uint16_t Tab[10]={0}; const uint16_t *p; p = Tab;//报错是怎么回事?
596浏览 2评论
用NUC131单片机UART3作为打印口,但printf没有输出东西是什么原因?
2333浏览 2评论
NUC980DK61YC启动随机性出现Err-DDR是为什么?
1894浏览 2评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-22 00:33 , Processed in 1.137832 second(s), Total 50, Slave 41 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号