你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

STM32F103 重上电PWM不输出

[复制链接]
Ω囿圉Ω 提问时间:2017-6-15 11:25 /
用STM32F103的PWM驱动直流电机,程序下载运行是OK的。
重新上电后,PWM不输出
不知道什么原因


#include "stm32f10x.h"

/**
* @brief  配置TIM复用输出PWM时用到的I/O
* @param  无
* @retval 无
*/
static void TIM_GPIO_Config(void)
{
    GPIO_InitTypeDef GPIO_InitStructure;

    /* 使能定时器通道引脚GPIO时钟 */
    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);

    /* 配置定时器通道1输出引脚模式:复用推挽输出模式 */
    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8;
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
    GPIO_Init(GPIOA, &GPIO_InitStructure);
}

/**
  * @brief  配置TIM输出的PWM信号的模式,如周期、极性、占空比
  * @param  无
  * @retval 无
  */
/**
  * TIMxCLK/CK_PSC --> TIMxCNT --> TIMx_ARR --> TIMxCNT 重新计数
  *                    TIMx_CCR(电平发生变化)
  * 信号周期=(TIMx_ARR +1 ) * 时钟周期
  * 占空比=TIMx_CCR/(TIMx_ARR +1)
  */
static void TIM_Mode_Config(void)
{
    TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;
    TIM_OCInitTypeDef TIM_OCInitStructure;

    /* 使能定时器时钟 */
    RCC_APB2PeriphClockCmd(RCC_APB2Periph_TIM1, ENABLE);

    /* 定时器基本参数配置 */
    TIM_TimeBaseStructure.TIM_Period = 100 - 1;                                //自动重装载计数器 100即为20k一个定时周期
    TIM_TimeBaseStructure.TIM_Prescaler = 36 - 1;                        //预分频:36
    TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1 ;            //设置时钟分频系数:不分频(这里用不到)
    TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;     //向上计数模式
    TIM_TimeBaseStructure.TIM_RepetitionCounter = 0;                //复位计数器
    TIM_TimeBaseInit(TIM1, &TIM_TimeBaseStructure);

    /* 模式配置 */
    TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM2;                                //配置为PWM模式1
    TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;        //输出状态设置:使能输出
    TIM_OCInitStructure.TIM_Pulse = 10;                                                        //设置跳变值,当计数器计数到这个值时,电平发生跳变
    TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_Low;                //当定时器计数值小于CCR1_Val时为高电平
    TIM_OC1Init(TIM1, &TIM_OCInitStructure);                                                //初始化通道1
    TIM_OC1PreloadConfig(TIM1, TIM_OCPreload_Enable);                                //使能通道1

    TIM_ARRPreloadConfig(TIM1, ENABLE);                                                                //使能TIM重载寄存器ARR

    TIM_CtrlPWMOutputs(TIM1, ENABLE);                               //TIM主输出使能

    TIM_Cmd(TIM1, ENABLE);                                          //使能TIM
}


/**
  * @brief  主函数
  * @param  无
  * @retval 无
  */
int main(void)
{
    TIM_GPIO_Config();//GPIO初始化
    TIM_Mode_Config();//TIM PWM输出初始化

    while(1)
    {
        //add your code here ^_^*

    }
}



STM32-PWM.zip (513.98 KB, 下载次数: 13)
收藏 1 评论14 发布时间:2017-6-15 11:25

举报

14个回答
wenyangzeng 回答时间:2017-7-26 17:43:04

特地弄了片板子试试,很正常也。断电后再通电也正常的,楼主是否应该检查一下STM32F103的RESET电路状况。

IMG_1715.JPG

评分

参与人数 1ST金币 +2 收起 理由
zero99 + 2

查看全部评分

CC4 回答时间:2017-6-26 12:58:51
消灭零回复。。。。
arenas 回答时间:2017-6-27 09:05:59
帮顶。

好吃好好吃 回答时间:2017-7-26 09:35:18
如果其他地方也不能正常工作的话,请考虑是不是初始地址错了
dapan100 回答时间:2017-7-26 10:18:28
会不会是boot0悬空,程序根本没运行

评分

参与人数 1ST金币 +2 收起 理由
zero99 + 2

查看全部评分

张亚飞 回答时间:2017-7-26 10:30:27
虽然不能直接给你定位出是哪的问题,建议你仿真一下确认一下程序的执行。然后断点看一下对应几个寄存器的值看看跟配置是否一样。

评分

参与人数 1ST金币 +2 收起 理由
zero99 + 2

查看全部评分

xiaoxiaoyuwu 回答时间:2017-7-26 11:03:31
建议 你后面加一个点灯程序,看看程序是不是重启后一直在执行?(1)如果不能正常执行,看看时钟配置是否正确?BOOT0和BOOT1的配置方式是否正确?(2)正常执行,看看定时器的配置是否正确?PWM的输出可以通过示波器来测量波形。

评分

参与人数 1ST金币 +2 收起 理由
zero99 + 2

查看全部评分

fafa1 回答时间:2017-7-26 11:34:45
你得先确定程序是不是真的跑起来了!估计是根本没跑!

评分

参与人数 1ST金币 +2 收起 理由
zero99 + 2

查看全部评分

gujiamao 回答时间:2017-7-26 11:56:31
先确认晶振振起来没  是不是没复位呀
七哥 回答时间:2017-7-26 14:07:52
你的CCR1_Val在哪里?PWM参数没有初始化呀。

评分

参与人数 1ST金币 +2 收起 理由
zero99 + 2

查看全部评分

无薪税绵 回答时间:2017-7-26 23:14:56
会不会是复位电路,复位太快,导致芯片未稳定。
建议启动时,增加软件延时。

评分

参与人数 1ST金币 +2 收起 理由
zero99 + 2

查看全部评分

LoveRTOS 回答时间:2017-7-28 09:42:30
确信下载入flash了?
刘酸盖 回答时间:2017-11-28 21:13:22
请问问题如何解决的,是哪里的原因呢?谢谢
Ω囿圉Ω 回答时间:2017-12-4 12:20:02
刘酸盖 发表于 2017-11-28 21:13
请问问题如何解决的,是哪里的原因呢?谢谢

修改硬件初始化顺序。
关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新和工艺
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版