打印
[STM32F1]

STM32F103RBT6 TIM1 没有输出

[复制链接]
3243|16
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
kingchenzb|  楼主 | 2013-11-29 09:48 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
    我在MDK环境下,调试的TIM1 的PWM,逻辑分析仿真有输出,但是下载到芯片就没有信号了。
其他定时器TIM2/3/4 都可以使用。程序应该没有问题的,我现在考虑是地址REMAP的问题,但是仿真与实际有很大差别我是不能接受,希望能从中学到东西。希望大神和版主不吝赐教!
沙发
hudi008| | 2013-11-29 12:15 | 只看该作者
不是remap吧,你使用默认管教也这样子么?

使用特权

评论回复
板凳
hudi008| | 2013-11-29 12:16 | 只看该作者
查看一下相关的寄存器。

使用特权

评论回复
地板
gaochy1126| | 2013-11-29 12:22 | 只看该作者
看看重映射有没有打开?

使用特权

评论回复
5
missing01| | 2013-11-29 13:40 | 只看该作者
求楼主的串口下载工具

使用特权

评论回复
6
kingchenzb|  楼主 | 2013-11-29 14:40 | 只看该作者
hudi008 发表于 2013-11-29 12:15
不是remap吧,你使用默认管教也这样子么?

我没有用remap 没有输出,但是MDK debug 的logic 分析 有信号

使用特权

评论回复
7
kingchenzb|  楼主 | 2013-11-29 14:41 | 只看该作者
gaochy1126 发表于 2013-11-29 12:22
看看重映射有没有打开?

64pin 需要重映射吗 我看看吧。我不明白为什么仿真和下载到芯片有这么大差距!

使用特权

评论回复
8
kingchenzb|  楼主 | 2013-11-29 14:41 | 只看该作者
missing01 发表于 2013-11-29 13:40
求楼主的串口下载工具

我用j-link

使用特权

评论回复
9
kingchenzb|  楼主 | 2013-11-29 14:42 | 只看该作者
missing01 发表于 2013-11-29 13:40
求楼主的串口下载工具

我用的是J-LINK

使用特权

评论回复
10
missing01| | 2013-11-29 14:45 | 只看该作者
我找到了   谢谢

使用特权

评论回复
11
missing01| | 2013-11-29 15:02 | 只看该作者
能发个KEIL MDK开发的模板例程吗

使用特权

评论回复
12
missing01| | 2013-11-29 16:15 | 只看该作者
有STM32F051 库函数的中文说明吗?

使用特权

评论回复
13
kingchenzb|  楼主 | 2013-11-29 18:32 | 只看该作者
missing01 发表于 2013-11-29 16:15
有STM32F051 库函数的中文说明吗?

没有 网上搜 很多的

使用特权

评论回复
14
diweo| | 2013-11-29 18:53 | 只看该作者
有没有调用 TIM_CtrlPWMOutputs(TIM1, ENABLE); ?
TIM1和TIM8是高级定时器,与TIM2,3,4,5通用定时器不一样,一定要多调用上面的一句。

使用特权

评论回复
15
zhangmangui| | 2013-11-29 22:30 | 只看该作者
帮忙顶顶   

使用特权

评论回复
16
122541325| | 2013-11-30 22:16 | 只看该作者
看看映射有没有重复

使用特权

评论回复
17
kingchenzb|  楼主 | 2013-12-2 15:16 | 只看该作者
没问题了 谢谢大家的回复。换来一个板子就行了,可能是板子坏了。以下是详细的程序!简单明了!
TIM1 PWM的详细用法。
[TIM1 的 CH1 = PA.8和CH1N = PB.13]
Step1, 定义初始化结构体
GPIO_InitTypeDef GPIO_InitStructure;
TIM_TimeBaseInitTypeDef  TIM_TimeBaseStructure;
TIM_OCInitTypeDef  TIM_OCInitStructure;
Step2, 使能外设时钟 TIM1 GPIOA GPIOB
RCC_APB2PeriphClockCmd(RCC_APB2Periph_TIM1,ENABLE);
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);
Step3, 初始化一会儿用到的GPIO
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);

GPIO_InitStructure.GPIO_Pin = GPIO_Pin_13;
GPIO_Init(GPIOB, &GPIO_InitStructure);
Step4, 重设为缺省值
TIM_DeInit(TIM1); //重设为缺省值
Step5, TIM1时钟配置
TIM_TimeBaseStructure.TIM_Prescaler = 4000; //预分频(时钟分频)72M/4000=18K
TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;  //向上计数
TIM_TimeBaseStructure.TIM_Period = 144;//装载值 18k/144=125hz 就是说向上加的144便满
TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1; //设置了时钟分割 不懂得不管
TIM_TimeBaseStructure.TIM_RepetitionCounter = 0x0;  //周期计数器值  不懂得不管
TIM_TimeBaseInit(TIM1,&TIM_TimeBaseStructure);
Step6, Channel 1 Configuration in PWM mode
TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1;     //PWM模式2
TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;  //正向通道有效  PA8
TIM_OCInitStructure.TIM_OutputNState = TIM_OutputNState_Enable; //反向通道也有效 PB13
TIM_OCInitStructure.TIM_Pulse = 40; //占空时间44 中有40的时间为高,互补的输出相反
TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_Low;   //输出极性
TIM_OCInitStructure.TIM_OCNPolarity = TIM_OCNPolarity_Low;  //互补端的极性  
TIM_OCInitStructure.TIM_OCIdleState = TIM_OCIdleState_Reset; //空闲状态下的非工作状态
TIM_OCInitStructure.TIM_OCNIdleState = TIM_OCIdleState_Reset;  //先不管
TIM_OC1Init(TIM1,&TIM_OCInitStructure);
Step7,  TIM1 counter enable开定时器
TIM_Cmd(TIM1,ENABLE);
Step8,  TIM1 Main Output Enable 使能TIM1外设的主输出 必须的别忘了
TIM_CtrlPWMOutputs(TIM1,ENABLE);

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

7

主题

46

帖子

2

粉丝