欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    最新STM32学习笔记-PWM波形输出.doc

    • 资源ID:49256903       资源大小:453KB        全文页数:16页
    • 资源格式: DOC        下载积分:15金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要15金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    最新STM32学习笔记-PWM波形输出.doc

    Four short words sum up what has lifted most successful individuals above the crowd: a little bit more.-author-dateSTM32学习笔记-PWM波形输出STM32学习笔记-PWM波形输出调试芯片:STM32F103C8T6外部晶振:8MHz功能介绍:使用Timer3实现两路(可四路)PWM波形的输出代码如下:    初始化:系统时钟初始化,GPIO端口初始化,Timer初始化系统时钟初始化:1. /* 配置系统时钟为72M */ 2. SystemInit(); GPIO端口初始化:1. /*2.  * 函数名:void GPIO_Config(void) 3.  * 描述  :配置复用输出PWM时用到的I/O 4.  * 输入  :无 5.  * 输出  :无 6.  * 调用  :main()调用 7.  */ 8. void GPIO_Config(void)  9.  10.   GPIO_InitTypeDef GPIO_InitStructure; 11.  12.   /* GPIOA and GPIOB clock enable */ 13.   RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);  14.  15.   /*GPIOA Configuration: TIM3 channel 1 and 2 as alternate function push-pull */ 16.   GPIO_InitStructure.GPIO_Pin =  GPIO_Pin_6 | GPIO_Pin_7; 17.   GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;           / 复用推挽输出 18.   GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; 19.   GPIO_Init(GPIOA, &GPIO_InitStructure); 20.  Timer初始化:1. /* 2.  * 函数名:void TIM3_Config(void)  3.  * 描述  :配置TIM3输出的PWM信号的模式 4.  *      CH1:输出 T=2.5ms(f=1/2.5ms=400Hz)  D=0.6的PWM波(高电平在前,低电平在后) 5.  *      CH2:输出 T=2.5ms(f=1/2.5ms=400Hz)  D=0.4的PWM波(高电平在后,低电平在前) 6.  *      步骤一:通过T和TIMxCLK的时钟源确定TIM_Period和TIM_Prescaler  7.  *          T=(TIM_Period+1)*(TIM_Prescaler+1)/TIMxCLK=2.5ms  8.  *          因为 TIM_Period<65535,所以 TIM_Prescaler>1,即 TIM_Prescaler=2 9.  *          所以 TIM_Period=59999=0xEA5F 10.  *      步骤二:根据TIM_Period的值,高低电平的先后D,确定CCR和TIM_OCPolarity 11.  *          CH1:因为D=0.6,先高后低; 12.  *              所以CCR1=(TIM_Period+1)* D=36000;TIM_OCPolarity=TIM_OCPolarity_High 13.  *          CH2:因为D=0.4,先高后低; 14.  *              所以CCR1=(TIM_Period+1)* (1-D)=36000;TIM_OCPolarity=TIM_OCPolarity_Low 15.  *      步骤三:基础寄存器初始化 16.  *      步骤四:通道寄存器初始化 17.  *      步骤五:使能TIM3重载寄存器ARR 18.  *      步骤六:使能TIM3  19.  * 输入  :无  20.  * 输出  :无  21.  * 调用  :main()调用  22.  */  23. void TIM3_Config(void)  24.   25.     TIM_TimeBaseInitTypeDef  TIM_TimeBaseStructure;  26.     TIM_OCInitTypeDef  TIM_OCInitStructure;  27.     /* PWM信号电平跳变值 */  28.     u16 CCR1= 36000;          29.     u16 CCR2= 36000;  30.     /*PCLK1经过2倍频后作为TIM3的时钟源等于72MHz*/  31.     RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE);  32.     /* Time base configuration */                                            33.     TIM_TimeBaseStructure.TIM_Period =0xEA5F;  34.     TIM_TimeBaseStructure.TIM_Prescaler = 2;                                    /设置预分频:预分频=2,即为72/3=24MHz  35.     TIM_TimeBaseStructure.TIM_ClockDivision = 0;                                /设置时钟分频系数:不分频  36.     TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;                 /向上计数溢出模式  37.     TIM_TimeBaseInit(TIM3, &TIM_TimeBaseStructure);  38.     /* PWM1 Mode configuration: Channel1 */  39.     TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1;                           /配置为PWM模式1  40.     TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;                41.     TIM_OCInitStructure.TIM_Pulse = CCR1;                                       /设置跳变值,当计数器计数到这个值时,电平发生跳变  42.     TIM_OCInitStructure.TIM_OCPolarity =TIM_OCPolarity_High;                    /当定时器计数值小于CCR1时为高电平  43.     TIM_OC1Init(TIM3, &TIM_OCInitStructure);                                    /使能通道1      44.     TIM_OC1PreloadConfig(TIM3, TIM_OCPreload_Enable);  45.     /* PWM1 Mode configuration: Channel2 */  46.     TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;  47.     TIM_OCInitStructure.TIM_Pulse = CCR2;                                       /设置通道2的电平跳变值,输出另外一个占空比的PWM  48.     TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_Low;                    /当定时器计数值小于CCR2时为低电平 49.     TIM_OC2Init(TIM3, &TIM_OCInitStructure);                                    /使能通道2  50.     TIM_OC2PreloadConfig(TIM3, TIM_OCPreload_Enable);  51.     TIM_ARRPreloadConfig(TIM3, ENABLE);                                         /使能TIM3重载寄存器ARR  52.     /* TIM3 enable counter */  53.     TIM_Cmd(TIM3, ENABLE);                                                      /使能TIM3   54.       主函数代码:1. /* 2.  * 函数名:main 3.  * 描述  :主函数 4.  * 输入  :无 5.  * 输出  :无 6.  */ 7. int main(void) 8.  9.     SystemInit(); 10.     GPIO_Config(); 11.     TIM3_Config(); 12.     while (1) 13.      14.      15.      16.       最后上结果图:     疑问:虽然不影响用,但是为什么第一个周期不正确,正确的波形是从第二个周期开始输出的?-

    注意事项

    本文(最新STM32学习笔记-PWM波形输出.doc)为本站会员(1595****071)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开