专家
公告
财富商城
电子网
旗下网站
首页
问题库
专栏
标签库
话题
专家
NEW
门户
发布
提问题
发文章
TIVA M4的PWM中怎么引脚对应
2019-03-24 09:08
发布
×
打开微信“扫一扫”,打开网页后点击屏幕右上角分享按钮
站内问答
/
TI MCU
10894
7
940
在网上找到了两路的pwm输出,引脚是PB6,PB7,我现在想扩展到四路,怎么从其他引脚输出呀,我总是不能成功~
此帖出自
小平头技术问答
友情提示:
此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
7条回答
hzx13888566458
2019-03-24 21:10
#include <stdint.h> #include <stdbool.h> #include "inc/hw_memmap.h" #include "inc/hw_types.h" #include "driverlib/sysctl.h" #include "driverlib/rom.h" #include "driverlib/gpio.h" #include "driverlib/pwm.h" #include "driverlib/fpu.h" #include "driverlib/pin_map.h" #define GPIO_PB6_M0PWM0 0x00011804 #define GPIO_PB7_M0PWM1 0x00011C04 #define GPIO_PB4_M0PWM2 0x00011004 #define GPIO_PB5_M0PWM3 0x00011404 void PWM_init(void) { //PWM时钟配置:64分频 SysCtlPWMClockSet(SYSCTL_PWMDIV_64); //使能PWM0模块 SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOB); //使能PWM0模块 SysCtlPeripheralEnable(SYSCTL_PERIPH_PWM0); //GPIO引脚配置 GPIOPinConfigure(GPIO_PB7_M0PWM1); GPIOPinConfigure(GPIO_PB6_M0PWM0); GPIOPinConfigure(GPIO_PB5_M0PWM3); GPIOPinConfigure(GPIO_PB4_M0PWM2); //配置引脚为PWM功能 GPIOPinTypePWM(GPIO_PORTB_BASE, GPIO_PIN_7); GPIOPinTypePWM(GPIO_PORTB_BASE, GPIO_PIN_6); GPIOPinTypePWM(GPIO_PORTB_BASE, GPIO_PIN_5); GPIOPinTypePWM(GPIO_PORTB_BASE, GPIO_PIN_4); //配置PWM发生器0和发生器1:加减计数不分频 PWMGenConfigure(PWM0_BASE, PWM_GEN_0,PWM_GEN_MODE_DOWN | PWM_GEN_MODE_NO_SYNC); PWMGenConfigure(PWM0_BASE, PWM_GEN_1,PWM_GEN_MODE_DOWN | PWM_GEN_MODE_NO_SYNC); //设置PWM发生器1的频率,时钟频率/pwm分频数/n,80M/64/3125=400hz PWMGenPeriodSet(PWM0_BASE, PWM_GEN_0, 3125); PWMGenPeriodSet(PWM0_BASE, PWM_GEN_1, 3125); //设置PWM0/PWM1输出的脉冲宽度 PWMPulseWidthSet(PWM0_BASE, PWM_OUT_0, 1200); PWMPulseWidthSet(PWM0_BASE, PWM_OUT_1, 1200); PWMPulseWidthSet(PWM0_BASE, PWM_OUT_2, 1200); PWMPulseWidthSet(PWM0_BASE, PWM_OUT_3, 1200); //使能PWM发生器 PWMGenEnable(PWM0_BASE, PWM_GEN_0); PWMGenEnable(PWM0_BASE, PWM_GEN_1); //使能PWM0和PWM1的输出 PWMOutputState(PWM0_BASE, (PWM_OUT_0_BIT), true); PWMOutputState(PWM0_BASE, (PWM_OUT_1_BIT), true); PWMOutputState(PWM0_BASE, (PWM_OUT_2_BIT), true); PWMOutputState(PWM0_BASE, (PWM_OUT_3_BIT), true); } void GPIOPin_init(void) { SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOF); //使能启动GPIOF SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOD); //使能启动GPIOD SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOA); //使能启动GPIOA GPIOPinTypeGPIOInput(GPIO_PORTD_BASE,GPIO_PIN_6|GPIO_PIN_2); //设置GPIOD_PIN2、6 为输入 GPIOPinTypeGPIOInput(GPIO_PORTA_BASE,0x3C); //设置GPIOA_PIN2-7 为输入 GPIOPinTypeGPIOOutput(GPIO_PORTF_BASE,GPIO_PIN_1|GPIO_PIN_2|GPIO_PIN_3|GPIO_PIN_4); GPIODirModeSet(GPIO_PORTD_BASE,GPIO_PIN_6|GPIO_PIN_2,GPIO_DIR_MODE_IN); GPIODirModeSet(GPIO_PORTA_BASE,0x3C,GPIO_DIR_MODE_IN); GPIOPadConfigSet(GPIO_PORTD_BASE,GPIO_PIN_6|GPIO_PIN_2,GPIO_STRENGTH_2MA,GPIO_PIN_TYPE_STD_WPU);//上拉 GPIOPadConfigSet(GPIO_PORTA_BASE,0x3C,GPIO_STRENGTH_2MA,GPIO_PIN_TYPE_STD_WPU); } void StartElCo(void) { uint32_t h0=1250,h1=1250,h2=1250,h3=1250,i; SysCtlDelay(48000000);//2s for(i=0;i<4;i++) { SysCtlDelay(2400000); //100ms if(h0<1643) { h0+=110; h1+=110; h2+=110; h3+=110; } if(h0>=1643) { h0=1643; h1=1643; h2=1643; h3=1643; } PWMPulseWidthSet(PWM0_BASE, PWM_OUT_0, h0); PWMPulseWidthSet(PWM0_BASE, PWM_OUT_1, h1); PWMPulseWidthSet(PWM0_BASE, PWM_OUT_2, h2); PWMPulseWidthSet(PWM0_BASE, PWM_OUT_3, h3); } // SysCtlDelay(24000000); //1s } int main(void) { //系统和时钟设置 SysCtlClockSet(SYSCTL_SYSDIV_2_5|SYSCTL_USE_PLL|SYSCTL_XTAL_16MHZ|SYSCTL_OSC_MAIN); PWM_init(); //PWM中断 StartElCo(); //启动电调 while(1); }
加载中...
查看其它7个回答
一周热门
更多
>
相关问题
相关文章
×
关闭
采纳回答
向帮助了您的知道网友说句感谢的话吧!
非常感谢!
确 认
×
关闭
编辑标签
最多设置5个标签!
保存
关闭
×
关闭
举报内容
检举类型
检举内容
检举用户
检举原因
广告推广
恶意灌水
回答内容与提问无关
抄袭答案
其他
检举说明(必填)
提交
关闭
×
打开微信“扫一扫”,打开网页后点击屏幕右上角分享按钮
×
付费偷看金额在0.1-10元之间
确定
×
关闭
您已邀请
0
人回答
查看邀请
擅长该话题的人
回答过该话题的人
我关注的人
一周热门 更多>