OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 6494|回复: 4

stm32 TIM1 的IO能否当普通IO口用

[复制链接]

23

主题

95

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
207
金钱
207
注册时间
2013-2-19
在线时间
0 小时
发表于 2013-7-17 15:07:27 | 显示全部楼层 |阅读模式
如题,
PB13/SPI2_MOSI/TIM1_CH1N
PB14/SPI2_MOSI/TIM1_CH2N
PB15/SPI2_MOSI/TIM1_CH3N
这几个IO口,初始化后,输出高电平,但是用万用表量引脚电阻没有输出高 。。。

RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);
GPIO_InitStructure.GPIO_Pin =  GPIO_Pin_14;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOB, &GPIO_InitStructure);

GPIO_SetBits(GPIOB,GPIO_Pin_14);

请原子大哥看到后指点下,我的原意是想用 B14/SPI2_MISO/TIM1_CH2N 这个引脚来输出PWM驱动蜂鸣器,
按照ALIENTEK开发板的PWM 实验的操作方法初始化后没有效果!
顺便请原子大哥指导下, PB14/SPI2_MISO/TIM1_CH2N  这个引脚是否可以实现输出PWM驱动蜂鸣器!










www.wxx3g.com
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

23

主题

95

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
207
金钱
207
注册时间
2013-2-19
在线时间
0 小时
 楼主| 发表于 2013-7-17 16:44:27 | 显示全部楼层
回复【楼主位】wuxinxinggg:
---------------------------------
GPIO_InitStructure.GPIO_Mode 这个设置错了,导致没有输出高,不过关于那个引脚的PWM输出不知道能否实现 。。。 谢谢
www.wxx3g.com
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2013-7-17 17:04:23 | 显示全部楼层
PWM都没配置,怎么会输出PWM啊?
TIM1的PWM输出记得使能MCO.
另外你用的CH1N/CH2N,应该是要用互补输出.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

23

主题

95

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
207
金钱
207
注册时间
2013-2-19
在线时间
0 小时
 楼主| 发表于 2013-7-17 17:09:29 | 显示全部楼层
回复【3楼】正点原子:

PWM都没配置,怎么会输出PWM啊?
TIM1的PWM输出记得使能MCO.
另外你用的CH1N/CH2N,应该是要用互补输出.

---------------------------------
PWM设置了的,只是没吧代码贴出来,配置如下,另外请问下原子大哥互补输出是什么意思,MC0调用库函数的哪个接口进行使能!
               RCC_APB2PeriphClockCmd(RCC_APB2Periph_TIM1, ENABLE); //使能定时器1时钟

/* IO初始化设置*/ 
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);
GPIO_InitStructure.GPIO_Pin =  GPIO_Pin_14;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; // 复用推挽输出
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOB, &GPIO_InitStructure);

// GPIO_SetBits(GPIOB,GPIO_Pin_14);
 
   //初始化TIM1
TIM_TimeBaseStructure.TIM_Period = arr; //设置在下一个更新事件装入活动的自动重装载寄存器周期的值
TIM_TimeBaseStructure.TIM_Prescaler =psc; //设置用来作为TIMx时钟频率除数的预分频值 
TIM_TimeBaseStructure.TIM_ClockDivision = 0; //设置时钟分割:TDTS = Tck_tim
TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;  //TIM向上计数模式
TIM_TimeBaseInit(TIM1, &TIM_TimeBaseStructure); //根据TIM_TimeBaseInitStruct中指定的参数初始化TIMx的时间基数单位

//初始化TIM1 Channel1 WM模式  
TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1; //选择定时器模式:TIM脉冲宽度调制模式1
TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable; //比较输出使能
TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High; //输出极性:TIM输出比较极性高
TIM_OC2Init(TIM1, &TIM_OCInitStructure);  //根据T指定的参数初始化外设TIM1 OC2

TIM_OC2PreloadConfig(TIM1, TIM_OCPreload_Enable);  //使能TIM1在CCR2上的预装载寄存器
 
TIM_Cmd(TIM1, ENABLE);  //使能TIM1
TIM_CtrlPWMOutputs(TIM1, ENABLE); /* 一定要加 */
www.wxx3g.com
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2013-7-17 17:53:27 | 显示全部楼层
回复【4楼】wuxinxinggg:
---------------------------------
CH1N,就是互补通道啊,所以要用互补输出.
MCO,就是主输出使能,TIM1要设置这个东东,否则不会出波.
具体看数据手册,找寄存器描述吧.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-7-18 05:23

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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