你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。
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管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
微信公众号
手机版
快速回复
返回顶部
返回列表
//打开下桥,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
评分
查看全部评分
评分
查看全部评分
正解。
评分
查看全部评分