OpenEdv-开源电子网

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

示波器检测单片机输出pwm波占空比都不对

[复制链接]

1

主题

8

帖子

0

精华

初级会员

Rank: 2

积分
51
金钱
51
注册时间
2020-12-24
在线时间
12 小时
发表于 2022-5-6 16:26:54 | 显示全部楼层 |阅读模式
1金钱
本帖最后由 caixukun123 于 2022-5-11 11:27 编辑

单片机使用的f429
设置频率在10khz,占空比40% QQ图片20220506162330.jpg QQ图片20220506162315.jpg


附上程序
TIM_HandleTypeDef TIM3_PWM_Handler;
TIM_OC_InitTypeDef TIM3_PWM_OC_Init;
void TIM3_PWM_Init(void)
{

        
        TIM3_PWM_Handler.Instance=TIM3;
        TIM3_PWM_Handler.Init.Prescaler=90-1;                //预分频系数
        TIM3_PWM_Handler.Init.CounterMode=TIM_COUNTERMODE_UP;                //计数模式
        TIM3_PWM_Handler.Init.Period=100-1;                //自动装载值               
        HAL_TIM_PWM_Init(&TIM3_PWM_Handler);
        
        TIM3_PWM_OC_Init.OCMode=TIM_OCMODE_PWM1;                //模式PWM1 OR PWM2,通道1在向上计数时小于为有效电平
        TIM3_PWM_OC_Init.Pulse=40;                //设置比较值CCRx
        TIM3_PWM_OC_Init.OCPolarity=TIM_OCPOLARITY_HIGH;                //输出比较极性,高电平为有效电平
        HAL_TIM_PWM_ConfigChannel(&TIM3_PWM_Handler,&TIM3_PWM_OC_Init,TIM_CHANNEL_4);
        
        HAL_TIM_PWM_Start(&TIM3_PWM_Handler,TIM_CHANNEL_4);
        
}



void HAL_TIM_PWM_MspInit(TIM_HandleTypeDef *htim)
{
        
        if(htim->Instance==TIM3)                //pwm实基参数配置为tim3时,才使能时钟和配置io口
        {
                __HAL_RCC_TIM3_CLK_ENABLE();
                __HAL_RCC_GPIOB_CLK_ENABLE();
               
                GPIO_InitTypeDef GPIO_Initure;
               
                GPIO_Initure.Pin=GPIO_PIN_1;                        //PB1
                GPIO_Initure.Mode=GPIO_MODE_AF_PP;                //复用推挽输出
                GPIO_Initure.Pull=GPIO_PULLUP;                        //上拉
                GPIO_Initure.Speed=GPIO_SPEED_FAST;                //高速
                GPIO_Initure.Alternate=GPIO_AF2_TIM3;        //复用为TIM3
                HAL_GPIO_Init(GPIOB,&GPIO_Initure);                   //初始化PB1
        }
}
int main(void)
{

    HAL_Init();                     //初始化HAL库   
    Stm32_Clock_Init(360,25,2,8);   //设置时钟,180Mhz
    delay_init(180);                //初始化延时函数
    uart_init(115200);              //初始化USART
    LED_Init();                     //初始化LED
    KEY_Init();                     //初始化按键
                TIM3_PWM_Init();        //调用pwm_init
        

}



试了一下改变占空比,输出的频率也会改变,实在搞不懂

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

使用道具 举报

3

主题

821

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3359
金钱
3359
注册时间
2011-11-10
在线时间
207 小时
发表于 2022-5-6 21:03:56 | 显示全部楼层
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165371
金钱
165371
注册时间
2010-12-1
在线时间
2110 小时
发表于 2022-5-7 00:15:45 | 显示全部楼层
主频不对?
回复

使用道具 举报

9

主题

57

帖子

0

精华

高级会员

Rank: 4

积分
933
金钱
933
注册时间
2020-1-6
在线时间
121 小时
发表于 2022-5-7 09:42:57 | 显示全部楼层
计数周期 T=(psc+1)*(arr+1)/主频,
在这你想要设置频率在10khz,占空比40%,所以可以得出周期按理说应该是1/25Khz,
1/25000=90*100/主频,
所以主频是2.25MHz, 可是为什么算出来之后感觉哪里怪怪的。。。。。。
不过楼主可以测试一下   
回复

使用道具 举报

13

主题

250

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2248
金钱
2248
注册时间
2019-8-7
在线时间
364 小时
发表于 2022-5-7 17:33:03 | 显示全部楼层
你主频是180M嘛
回复

使用道具 举报

13

主题

250

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2248
金钱
2248
注册时间
2019-8-7
在线时间
364 小时
发表于 2022-5-7 17:33:26 | 显示全部楼层
方正波 发表于 2022-5-7 09:42
计数周期 T=(psc+1)*(arr+1)/主频,
在这你想要设置频率在10khz,占空比40%,所以可以得出周期按理说应 ...

你算错了..时钟树看看
回复

使用道具 举报

1

主题

8

帖子

0

精华

初级会员

Rank: 2

积分
51
金钱
51
注册时间
2020-12-24
在线时间
12 小时
 楼主| 发表于 2022-5-11 11:19:50 | 显示全部楼层
本帖最后由 caixukun123 于 2022-5-11 11:26 编辑

主频180M,定时器频率90M,psc是90,那么计数频率为1M,应该没错啊
回复

使用道具 举报

1

主题

8

帖子

0

精华

初级会员

Rank: 2

积分
51
金钱
51
注册时间
2020-12-24
在线时间
12 小时
 楼主| 发表于 2022-5-11 11:31:19 | 显示全部楼层
方正波 发表于 2022-5-7 09:42
计数周期 T=(psc+1)*(arr+1)/主频,
在这你想要设置频率在10khz,占空比40%,所以可以得出周期按理说应 ...

周期跟占空比没关系吧,周期就是1/频率
回复

使用道具 举报

1

主题

8

帖子

0

精华

初级会员

Rank: 2

积分
51
金钱
51
注册时间
2020-12-24
在线时间
12 小时
 楼主| 发表于 2022-5-11 11:33:14 | 显示全部楼层

用的f429IGT6,是180M,并且改变占空比输出频率为什么会改变呢?
回复

使用道具 举报

13

主题

250

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2248
金钱
2248
注册时间
2019-8-7
在线时间
364 小时
发表于 2022-5-11 14:13:42 | 显示全部楼层
caixukun123 发表于 2022-5-11 11:33
用的f429IGT6,是180M,并且改变占空比输出频率为什么会改变呢?

正点的例程 你直接烧进去看看 是不是对的 他那个好像是百分之50 2KHZ吧 排除下硬件问题吧 例如用了内部晶振
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-2-25 18:22

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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