你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。
chrome
firefox
safari
ie8及以上
ST
官网
STM32
中文官网
ST
全球论坛
登录/注册
首页
技术问答
话题
资源
创客秀
视频
标签
积分商城
每日签到
STM32全桥PWM问题
[复制链接]
atz2000
提问时间:2017-5-3 09:58 /
STM32单片机会产生6路PWM信号,全桥电路一般采用上半桥PWM调制,下半桥ON/OFF的半调制方式;
问题:6路PWM信号是如何实现半调制方式的?
赞
0
收藏
2
评论
8
分享
发布时间:2017-5-3 09:58
举报
请先
登录
后回答问题
8个回答
atz2000
回答时间:2017-5-3 10:49:00
a0a.1 0b0c
没有人知道吗?高级定时器的6路输出都是互补输出的,如何变成一个PWM输出,一个off或者一个off,一个ON?
赞
0
评论
回复
支持
反对
无薪税绵
回答时间:2017-5-15 08:14:43
a0a.1 0b0c
这个真不懂,等待大神解答。
赞
0
评论
回复
支持
反对
dear祝子
回答时间:2017-5-15 09:01:00
a0a.1 0b0c
略知一二,先给你说说原理吧,你在PWM模式下端口处于复用模式,也就是GPIO_Mode_AF,你要是下桥为P普通的IO模式呢,那就要改成GPIO模式,也就是GPIO_Mode_OUT模式。明白了吧!再看code!
//打开下桥,An_Port,An_Pin这是宏定义的,对应你自己的IO就行了
//其实就是将此端口改为GPIO_Mode_OUT模式
void open_An(void)
{
set_pin(An_Port, An_Pin);
temp = (An_Port->MODER & (~(GPIO_MODER_MODER0 << (An_Pin_Source * 2))));
An_Port->MODER = ( temp | (GPIO_Mode_OUT << (An_Pin_Source * 2)));
}
//关闭下桥
void close_An(void)
{
clr_pin(An_Port, An_Pin);
temp = (An_Port->MODER & (~(GPIO_MODER_MODER0 << (An_Pin_Source * 2))));
An_Port->MODER = ( temp | (GPIO_Mode_OUT << (An_Pin_Source * 2)));
}
//打开下桥PWM 这里将IO设置为GPIO_Mode_AF模式
void pwm_An(void)
{
temp = (An_Port->MODER & (~(GPIO_MODER_MODER0 << (An_Pin_Source * 2))));
An_Port->MODER = ( temp | (GPIO_Mode_AF << (An_Pin_Source * 2)));
}
仔细一看,很简单吧!不值是不是你要的答案
加上我的宏定义吧,
#define An_Port GPIO_Port(B)
#define An_Pin GPIO_Pin(13)
#define An_Pin_Source 13
评分
参与人数
1
ST金币
+5
收起
理由
zero99
+ 5
查看全部评分
赞
0
评论
回复
支持
反对
dapan100
回答时间:2017-5-15 10:02:32
a0a.1 0b0c
大概可是这种功能
评分
参与人数
1
ST金币
+2
收起
理由
zero99
+ 2
查看全部评分
赞
0
评论
回复
支持
反对
chen000000009
回答时间:2017-5-15 12:30:23
a1024a.1 0b0c
不懂,看看
赞
0
评论
回复
支持
反对
cldym
回答时间:2017-5-15 15:16:42
a0a.1 0b0c
这个真不懂,等待大神解答
赞
0
评论
回复
支持
反对
dear祝子
回答时间:2017-5-15 16:06:57
a0a.1 0b0c
dapan100 发表于 2017-5-15 10:02
大概可是这种功能
正解。
赞
0
评论
回复
支持
反对
zhjb1
回答时间:2017-5-16 06:26:34
a0a.1 0b0c
现在STM系列的都是采用官方已给的宏来编程,是不好懂。但可以对应着宏的运行实测接过来慢慢理解。最好有示波器对应着来看。就像 底板 和 5楼 的几乎是详解了。改变里面的代码,测试输出信号看看有什么不同,慢慢就明白了。OK
评分
参与人数
1
ST金币
+2
收起
理由
zero99
+ 2
查看全部评分
赞
0
评论
回复
支持
反对
所属标签
相似问题
关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新和工艺
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
微信公众号
手机版
快速回复
返回顶部
返回列表
//打开下桥,An_Port,An_Pin这是宏定义的,对应你自己的IO就行了
//其实就是将此端口改为GPIO_Mode_OUT模式
void open_An(void)
{
set_pin(An_Port, An_Pin);
temp = (An_Port->MODER & (~(GPIO_MODER_MODER0 << (An_Pin_Source * 2))));
An_Port->MODER = ( temp | (GPIO_Mode_OUT << (An_Pin_Source * 2)));
}
//关闭下桥
void close_An(void)
{
clr_pin(An_Port, An_Pin);
temp = (An_Port->MODER & (~(GPIO_MODER_MODER0 << (An_Pin_Source * 2))));
An_Port->MODER = ( temp | (GPIO_Mode_OUT << (An_Pin_Source * 2)));
}
//打开下桥PWM 这里将IO设置为GPIO_Mode_AF模式
void pwm_An(void)
{
temp = (An_Port->MODER & (~(GPIO_MODER_MODER0 << (An_Pin_Source * 2))));
An_Port->MODER = ( temp | (GPIO_Mode_AF << (An_Pin_Source * 2)));
}
仔细一看,很简单吧!不值是不是你要的答案
加上我的宏定义吧,
#define An_Port GPIO_Port(B)
#define An_Pin GPIO_Pin(13)
#define An_Pin_Source 13
评分
查看全部评分
评分
查看全部评分
正解。
评分
查看全部评分