不知道为什么,STM8S的TIM4一直进不了中断
答案:2 悬赏:80 手机版
解决时间 2021-03-16 20:57
- 提问者网友:我没有何以琛的痴心不悔
- 2021-03-16 13:26
不知道为什么,STM8S的TIM4一直进不了中断
最佳答案
- 五星知识达人网友:毛毛
- 2021-03-16 14:03
配置好了?
void TIM4_Config(void)
{
TIM4_DeInit();
TIM4_TimeBaseInit(TIM4_PRESCALER_1,250);//时间自己改成需要的
TIM4_ITConfig(TIM4_IT_UPDATE, ENABLE);
TIM4_ARRPreloadConfig(ENABLE);
TIM4_Cmd(ENABLE);
}
在main函数中
main()
{
TIM4_Config(); TIM4初始化、使能
enableInterrupts();//总中断使能
while(1)
{
}
}
然后再就能进了
void TIM4_Config(void)
{
TIM4_DeInit();
TIM4_TimeBaseInit(TIM4_PRESCALER_1,250);//时间自己改成需要的
TIM4_ITConfig(TIM4_IT_UPDATE, ENABLE);
TIM4_ARRPreloadConfig(ENABLE);
TIM4_Cmd(ENABLE);
}
在main函数中
main()
{
TIM4_Config(); TIM4初始化、使能
enableInterrupts();//总中断使能
while(1)
{
}
}
然后再就能进了
全部回答
- 1楼网友:長槍戰八方
- 2021-03-16 14:34
//用固件库方便些#include "stm8s_lib.h"#define ccr1_val ((u16)2047)
#define ccr2_val ((u16)1535)
#define ccr3_val ((u16)1023)
#define ccr4_val ((u16)511)
void main(void)
{
tim1_deinit();
tim1_timebaseinit(0, tim1_countermode_up, 4095, 0);
tim1_oc1init(tim1_ocmode_pwm2, tim1_outputstate_enable, tim1_outputnstate_enable, ccr1_val, tim1_ocpolarity_low, tim1_ocnpolarity_high, tim1_ocidlestate_set, tim1_ocidlestate_reset);
tim1_oc2init(tim1_ocmode_pwm2, tim1_outputstate_enable, tim1_outputnstate_enable, ccr2_val, tim1_ocpolarity_low, tim1_ocnpolarity_high, tim1_ocidlestate_set, tim1_ocidlestate_reset);
tim1_oc3init(tim1_ocmode_pwm2, tim1_outputstate_enable, tim1_outputnstate_enable, ccr3_val, tim1_ocpolarity_low, tim1_ocnpolarity_high, tim1_ocidlestate_set, tim1_ocidlestate_reset);
// tim1_oc4init(tim1_ocmode_pwm2, tim1_outputstate_enable, ccr4_val, tim1_ocpolarity_low, tim1_ocidlestate_set);
//gpio_init(gpiod,gpio_pin_7,gpio_mode_out_pp_low_fast);
//opt_init1.opt2=(opt_init1.opt2|0x10);
tim1_cmd(enable);
tim1_ctrlpwmoutputs(enable);
while (1)
{
}
}#ifdef full_assert
void assert_failed(u8 *file, u16 line)
#else
void assert_failed(void)
#endif
{
while (1)
{
}
} //不用固件库直接操作我只试过 tim2 tim3 不过tim1应该差不多,你自己参考,我只知道这么多了,莫追问void tim2_init(void) //tim2 ch1 工作于模式1
{
tim2_ccmr1= 0x60; // pwm 模式 1,tim2 ch1
tim2_ccer1= 0x03; // cc1配置为输出
tim2_ccer2= 0x03; // cc3使能
tim2_arrh = 0x03; // 配置pwm分辨率为10位,arr=0x3ff
tim2_arrl = 0xff; // pwm频率=8m/0x03ff=7820hz
tim2_cr1 |= 0x01; // 计数器使能,开始计数
}void run(void)
{ tim2_ccr1=value;
tim2_ccr3=value;
tim3_ccr2=value;
tim3_ccr1=value; //注意每个通道都要设ccr
}
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯