搜索
bottom↓
回复: 24

求助,STM32的PA.3的PWM调不出来

[复制链接]

出0入0汤圆

发表于 2018-10-30 16:42:05 | 显示全部楼层 |阅读模式
以前没用过STM32的PWM,最近想学习一下。根据野火的实验板修改了一下,想使得PA3用TIM5_CH3输出PWM,但是怎么都出不来波形,不知道程序哪里不对

程序如下:
static void Pump_IO(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd( RCC_APB2Periph_GPIOA, ENABLE);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_3;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOA, &GPIO_InitStructure);
}
static void TIM5_Mode_Config(void)
{
TIM_TimeBaseInitTypeDef  TIM_TimeBaseStructure;
  RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM5, ENABLE);          
  TIM_TimeBaseStructure.TIM_Period = 999;       //当定时器从0计数到999,即为1000次,为一个定时周期
  TIM_TimeBaseStructure.TIM_Prescaler = 0;            //设置预分频:不预分频,即为72MHz
  TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1 ;        //设置时钟分频系数:不分频(这里用不到)
  TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;  //向上计数模式
  TIM_TimeBaseInit(TIM5, &TIM_TimeBaseStructure);
}
void PumpTest(void)
{
  TIM_OCInitTypeDef  TIM_OCInitStructure;
  TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1;            //配置为PWM模式1
  TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;       
  TIM_OCInitStructure.TIM_Pulse = 125;           //设置跳变值,当计数器计数到这个值时,电平发生跳变
  TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High;  
  TIM_OC4Init(TIM5, &TIM_OCInitStructure);         //使能通道4
  TIM_OC4PreloadConfig(TIM5, TIM_OCPreload_Enable);                 //使能定时器5        重载寄存器
  TIM_ARRPreloadConfig(TIM5, ENABLE);                         // 使能TIM5重载寄存器ARR
  TIM_Cmd(TIM5, ENABLE);                   //使能定时器5       
}

int main(void)
{
...
Pump_IO();
TIM5_Mode_Config();
PumpTest();
...
while(1)
{

}
}

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

阿莫论坛20周年了!感谢大家的支持与爱护!!

一只鸟敢站在脆弱的枝条上歇脚,它依仗的不是枝条不会断,而是自己有翅膀,会飞。

出0入0汤圆

发表于 2018-10-30 17:14:30 | 显示全部楼层
主输出MOE是不是没有使能?

出0入0汤圆

 楼主| 发表于 2018-10-30 17:28:28 | 显示全部楼层
lisingch 发表于 2018-10-30 17:14
主输出MOE是不是没有使能?

加了一句   TIM5->BDTR |= 1<<15;
也还是没有波形出来

出0入0汤圆

发表于 2018-10-30 18:07:08 | 显示全部楼层
HAL库要加个START。。。没细看你这程序

出0入8汤圆

发表于 2018-10-30 21:24:01 来自手机 | 显示全部楼层
应该是引脚的AFIO没有设置。

出0入0汤圆

 楼主| 发表于 2018-10-31 09:25:50 | 显示全部楼层
icoyool 发表于 2018-10-30 21:24
应该是引脚的AFIO没有设置。

请看程序的第5行
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;

出0入8汤圆

发表于 2018-10-31 11:07:42 | 显示全部楼层
本帖最后由 kebaojun305 于 2018-10-31 11:13 编辑

JTAG没有关闭吧  我记的PA3 默认是 仿真接口的。

出0入0汤圆

 楼主| 发表于 2018-10-31 11:16:35 | 显示全部楼层
kebaojun305 发表于 2018-10-31 11:07
JTAG没有关闭吧  我记的PA3 默认是 仿真接口的。

不是的   我的型号是STM32F103ZET6

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入8汤圆

发表于 2018-10-31 11:26:58 | 显示全部楼层
qaya 发表于 2018-10-31 11:16
不是的   我的型号是STM32F103ZET6

是不是 cube 产生的工程?

出0入8汤圆

发表于 2018-10-31 19:37:14 来自手机 | 显示全部楼层
qaya 发表于 2018-10-31 09:25
请看程序的第5行
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;

哈哈哈哈,楼主不要逗。一个引脚复合和多种外设,应该怎么选择不看这个吧。这个只是选择了IO模式,软件功能还得再选一次

出0入475汤圆

发表于 2018-10-31 21:54:28 来自手机 | 显示全部楼层
好像我也遇到这个问题了,

出0入0汤圆

 楼主| 发表于 2018-11-1 09:32:57 | 显示全部楼层
icoyool 发表于 2018-10-31 19:37
哈哈哈哈,楼主不要逗。一个引脚复合和多种外设,应该怎么选择不看这个吧。这个只是选择了IO模式,软件功 ...

见笑了,在下确实较菜。
您是指RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE)对吗?
这个我在别的地方已经打开了

出0入0汤圆

 楼主| 发表于 2018-11-1 09:34:08 | 显示全部楼层
kebaojun305 发表于 2018-10-31 11:26
是不是 cube 产生的工程?

不懂您说的cube是什么意思? 可否指点一下?

出0入8汤圆

发表于 2018-11-1 09:35:33 | 显示全部楼层
qaya 发表于 2018-11-1 09:34
不懂您说的cube是什么意思? 可否指点一下?

用STM32CubeMX  产生个工程 试试功能。

出0入0汤圆

发表于 2018-11-1 10:17:34 | 显示全部楼层
是不是得把PA3上面,除了TIM5_CH4之外的默认复用功能,remap到其它引脚上去呢?只留TIM5_CH4这一个功能。

出0入0汤圆

发表于 2018-11-1 10:27:49 | 显示全部楼层
如果PA3使用了复位功能:
      也就是GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
但是PA3上面默认复用功能有USART2_RX、TIM5_CH4、TIM2_CH4,总共三个,他具体使用的是哪个呢?
是不是得把另外两个Remap到别处才能使用剩下的TIM5_CH4这一个呢?

出0入0汤圆

 楼主| 发表于 2018-11-1 18:01:10 | 显示全部楼层
kebaojun305 发表于 2018-11-1 09:35
用STM32CubeMX  产生个工程 试试功能。

感谢您的指点,之前没接触过这个,先学习一下。

出0入0汤圆

 楼主| 发表于 2018-11-1 18:07:08 | 显示全部楼层
本帖最后由 qaya 于 2018-11-1 18:28 编辑
zengyi703 发表于 2018-11-1 10:27
如果PA3使用了复位功能:
      也就是GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
但是PA3上面默认 ...


我的理解是这几项都默认在PA3,看启用那一项那么PA3就连接到那一项。PA3能REMAP到其他引脚的是USART2_RX和TIM2_CH4。在我的这个项目里,USART2虽然也启用了,USART2_RX已经REMAP到了PD6。因此我启用TIM5_CH4应该是不会与USART2冲突的。TIM2虽然我也使用了,但我没有使用TIM2的PWM通道4,所以也不冲突。AD方面我只启用了AD1的通道1,应该也不冲突。

出0入8汤圆

发表于 2018-11-2 11:52:53 | 显示全部楼层
谜底解开了
PA3上面的是TIM5_CH4

出0入8汤圆

发表于 2018-11-2 11:55:50 | 显示全部楼层
https://www.st.com/content/ccc/r ... s/en.CD00171190.pdf
第185页

出0入0汤圆

 楼主| 发表于 2018-11-2 13:05:03 | 显示全部楼层
icoyool 发表于 2018-11-2 11:52
谜底解开了
PA3上面的是TIM5_CH4

感谢您的关注,PA3我就是配置的TIM5_CH4。程序没有问题。
昨晚我实在找不到原因了,示波器换了根线,居然波形测出来了,原来一根坏的示波器线害死人。
再次感谢楼上各位的指点,是我自己疏忽,没有考虑到示波器的线有问题。
不过还留有疑问的是为什么仿真没有波形出来,不知道仿真要如何设置才对。

出0入8汤圆

发表于 2018-11-4 14:57:25 来自手机 | 显示全部楼层
没有配置选项字节?我以前调试的时候怎么都出不来波形最后一看还得配置选项字节

出0入0汤圆

 楼主| 发表于 2018-11-5 09:47:46 | 显示全部楼层
mkliop 发表于 2018-11-4 14:57
没有配置选项字节?我以前调试的时候怎么都出不来波形最后一看还得配置选项字节 ...

您说的选项字节是在哪里设定?

出10入12汤圆

发表于 2018-11-5 19:40:57 | 显示全部楼层
没有开启!!!!!!

出0入0汤圆

发表于 2018-11-5 21:20:44 来自手机 | 显示全部楼层
示波器你都不用手摸一下的吗?话说我用示波器都先手摸下看看有反应没有
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-6-19 02:36

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表