OpenEdv-开源电子网

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

STM32F429 无PWM波求帮助(处女贴)

[复制链接]

1

主题

3

帖子

0

精华

初级会员

Rank: 2

积分
62
金钱
62
注册时间
2016-7-27
在线时间
11 小时
发表于 2017-2-4 14:27:40 | 显示全部楼层 |阅读模式
阿波罗开发板STM32F429核心 IO有上拉无PWM波形 编译通过无错误无警告 修改TIMx-CCRx也无效果 希望大家能指点下 谢谢求助代码如下:
#include "sys.h"
#include "delay.h"
#include "usart.h"
#include "led.h"
#include "tim4.h"
/************************************************
ALIENTEK 阿波罗STM32F429开发板实验3
串口实验-HAL库函数版
技术支持:www.openedv.com
淘宝店铺:http://eboard.taobao.com
关注微信公众平台微信号:"正点原子",免费获取STM32资料。
广州市星翼电子科技有限公司  
作者:正点原子 @ALIENTEK
************************************************/
int main(void)
{

        u32 led0pwmval=0;
        u32 dir=1;
    HAL_Init();                     //初始化HAL库   
    Stm32_Clock_Init(360,25,2,8);   //设置时钟,180Mhz
    delay_init(180);                //初始化延时函数
    uart_init(115200);              //初始化USART

        TIM4_GPIO_Config();
        TIM4_Mode_Config(500-1,90-1);

        while(1)
{
        delay_ms(10);
        if(dir)led0pwmval++; //dir==1 led0pwmval递增
        else led0pwmval--; //dir==0 led0pwmval递减
        if(led0pwmval>300)dir=0; //led0pwmval到达300后,方向为递减
        if(led0pwmval==0)dir=1; //led0pwmval递减到0后,方向改为递增
        TIM_SetTIM4Compare1(led0pwmval);
}  
}


void TIM4_GPIO_Config (void)
{
        GPIO_InitTypeDef GPIO_InitStructure;
        __HAL_RCC_TIM3_CLK_ENABLE();
        __HAL_RCC_GPIOD_CLK_ENABLE();

        GPIO_InitStructure.Pin                 = GPIO_PIN_12;
        GPIO_InitStructure.Mode        = GPIO_MODE_AF_PP;
        GPIO_InitStructure.Pull                = GPIO_PULLUP;
        GPIO_InitStructure.Speed        = GPIO_SPEED_HIGH;
        GPIO_InitStructure.Alternate        = GPIO_AF2_TIM4;
        HAL_GPIO_Init(GPIOD, &GPIO_InitStructure);

}

void TIM4_Mode_Config(u16 arr, u16 psc)
{
        TIM_HandleTypeDef TIM4_Handler;
        TIM_OC_InitTypeDef TIM4_CH1Handler;

        TIM4_Handler.Instance                        =TIM4;
        TIM4_Handler.Init.Period                =arr;
        TIM4_Handler.Init.Prescaler                =psc;
        TIM4_Handler.Init.ClockDivision        =TIM_CLOCKDIVISION_DIV1;
        TIM4_Handler.Init.CounterMode        =TIM_COUNTERMODE_UP;
        HAL_TIM_PWM_Init(&TIM4_Handler);

        TIM4_CH1Handler.OCMode                =TIM_OCMODE_PWM1;
        TIM4_CH1Handler.Pulse                        =arr/2;
        TIM4_CH1Handler.OCPolarity        =TIM_OCPOLARITY_HIGH;
        HAL_TIM_PWM_ConfigChannel(&TIM4_Handler,&TIM4_CH1Handler,TIM_CHANNEL_1);

        HAL_TIM_PWM_Start(&TIM4_Handler,TIM_CHANNEL_1);
       
        }

void TIM_SetTIM4Compare1(u32 compare)
{
        TIM4->CCR1=compare;
}

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

使用道具 举报

1

主题

3

帖子

0

精华

初级会员

Rank: 2

积分
62
金钱
62
注册时间
2016-7-27
在线时间
11 小时
 楼主| 发表于 2017-2-4 17:44:55 | 显示全部楼层
@正点原子 怎么办,刚刚发现一个错误了是:__HAL_RCC_TIM3_CLK_ENABLE()这里应该是__HAL_RCC_TIM4_CLK_ENABLE(),还是有3.3V无PWM输出
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-20 06:57

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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