你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

同时使用两个定时器TIM1和TIM2,TIM1用PWM波,TIM2改变占空比,先初始化TIM2,当且仅当响应优先级为3时,无法产生呼吸灯是为什么?

[复制链接]
寂铭轩 提问时间:2022-4-3 22:04 / 未解决
![PWM波输出呼吸灯.zip](data/attachment/forum/?imageMogr2/auto-orient/strip%7CimageView2/2/w/300 "PWM波输出呼吸灯.zip")
收藏 评论6 发布时间:2022-4-3 22:04

举报

6个回答
寂铭轩 最优答案 回答时间:2022-4-3 22:07:29

寂铭轩 发表于 2022-4-3 22:06</p>
<h1>include "stm32f10x.h"</h1>
<h1>include "led.h"</h1>
<h1>include "timer.h"</h1>
<p>

[md]主函数

寂铭轩 最优答案 回答时间:2022-4-3 22:08:56

寂铭轩 发表于 2022-4-3 22:06</p>
<h1>include "timer.h"</h1>
<h1>include "stm32f10x.h"</h1>
<h1>include "led.h"</h1>
<p>

[md]定时器设置函数

寂铭轩 回答时间:2022-4-3 22:06:08

include "stm32f10x.h"

include "led.h"

include "timer.h"

include "delay.h"

u16 flag=1; u16 ledpwmpare=0; int main() { //GPIO_InitTypeDef GPIO_Initstring2; NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); delay_init(); led_Init();

timer_Init(99,7199);//定时器2初始化 (99+1)*0.1ms=1ms timer1_PWM_Init(899,1);// // GPIO_Initstring2.GPIO_Mode=GPIO_Mode_Out_PP; // GPIO_Initstring2.GPIO_Pin=GPIO_Pin_3; // GPIO_Initstring2.GPIO_Speed=GPIO_Speed_50MHz; // GPIO_Init(GPIOA,&GPIO_Initstring2); // PAout(3)=0; //GPIOA PA3 输出 50MHZ

while(1) { delay_ms(3); if(flag)ledpwmpare++; else ledpwmpare--;

if(ledpwmpare&gt;300)flag=0;
if(ledpwmpare==0)flag=1;
TIM_SetCompare1(TIM1,ledpwmpare);

} } void TIM3_IRQHandler(void)//定时器2的中断服务函数 { if(TIM_GetITStatus(TIM3,TIM_IT_Update)!=RESET) { // PAout(3)=!PAout(3);//电平翻转 // if(flag)ledpwmpare++; // else ledpwmpare--; // // if(ledpwmpare>300)flag=0; // if(ledpwmpare==0)flag=1; // // TIM_SetCompare1(TIM1,ledpwmpare); //TIM_SetCompare1(TIM1,450); TIM_ClearITPendingBit(TIM3,TIM_IT_Update); } }

寂铭轩 回答时间:2022-4-3 22:06:36

include "timer.h"

include "stm32f10x.h"

include "led.h"

void timer_Init(u16 arr,u16 psc)//arr是重装载值 psc是预分频系数 { TIM_TimeBaseInitTypeDef TIM_TimeBaseInitstring1; NVIC_InitTypeDef NVIC_Initstring;

RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3,ENABLE);//使能APB1时钟

TIM_TimeBaseInitstring1.TIM_Period=arr; TIM_TimeBaseInitstring1.TIM_Prescaler=psc; TIM_TimeBaseInitstring1.TIM_CounterMode=TIM_CounterMode_Up; TIM_TimeBaseInitstring1.TIM_ClockDivision=TIM_CKD_DIV1; TIM_TimeBaseInit(TIM3,&TIM_TimeBaseInitstring1); //初始化定时器 配置arr重装载值 配置psc预分频系数

NVIC_Initstring.NVIC_IRQChannel=TIM3_IRQn; NVIC_Initstring.NVIC_IRQChannelCmd=ENABLE; NVIC_Initstring.NVIC_IRQChannelPreemptionPriority=1;//0抢占 NVIC_Initstring.NVIC_IRQChannelSubPriority=3;//3响应 NVIC_Init(&NVIC_Initstring); //初始化中断优先级

TIM_ITConfig(TIM3,TIM_IT_Update,ENABLE); //开启定时器中断 TIM_Cmd(TIM3,ENABLE); //使能定时器 }

void timer1_PWM_Init(u16 arr,u16 psc)//arr是重装载值 psc是预分配系数 { GPIO_InitTypeDef GPIO_Initstring; TIM_TimeBaseInitTypeDef TIM_TimeBaseInitstring; TIM_OCInitTypeDef TIM_OCInitstring;

RCC_APB2PeriphClockCmd(RCC_APB2Periph_TIM1,ENABLE);//使能APB2时钟 TIM1挂在APB2下 RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);//使能GPIOA LED0 GPIOA

GPIO_Initstring.GPIO_Mode=GPIO_Mode_AF_PP; GPIO_Initstring.GPIO_Pin=GPIO_Pin_8; GPIO_Initstring.GPIO_Speed=GPIO_Speed_10MHz; GPIO_Init(GPIOA,&GPIO_Initstring); //配置PA8 复用推挽

TIM_TimeBaseInitstring.TIM_Period=arr; TIM_TimeBaseInitstring.TIM_Prescaler=psc; TIM_TimeBaseInitstring.TIM_CounterMode=TIM_CounterMode_Up; TIM_TimeBaseInitstring.TIM_ClockDivision=TIM_CKD_DIV1; TIM_TimeBaseInit(TIM1,&TIM_TimeBaseInitstring); //初始化定时器 arr为重装载值 psc为分频系数 模式为向上计数模式

TIM_OCInitstring.TIM_OCMode=TIM_OCMode_PWM2;//模式2 cnt大于比较值为高 TIM_OCInitstring.TIM_OutputState=TIM_OutputState_Enable;//比较输出使能 TIM_OCInitstring.TIM_OCPolarity=TIM_OCPolarity_High; TIM_OCInitstring.TIM_Pulse=0;//比较值初始化为0 TIM_OC1Init(TIM1,&TIM_OCInitstring); //初始化定时器1的通道1 模式2 cnt大于比较值为高 输出使能 有效为高

TIM_CtrlPWMOutputs(TIM1,ENABLE); //初始化主输出使能 //定时器1是高级计时器 所以说需要主输出使能

TIM_OC1PreloadConfig(TIM1,TIM_OCPreload_Enable); //CH1预装载使能

TIM_ARRPreloadConfig(TIM1,ENABLE); //使能预装载寄存器

TIM_Cmd(TIM1,ENABLE); //使能定时器1 }

寂铭轩 回答时间:2022-4-3 22:07:58

寂铭轩 发表于 2022-4-3 22:06</p>
<h1>include "stm32f10x.h"</h1>
<h1>include "led.h"</h1>
<h1>include "timer.h"</h1>
<p>

[md]主函数

鹿森 回答时间:2022-4-4 19:51:05

学习一下!

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版