- 2024-11-06
-
回复了主题帖:
stm32f103c8t6定时器1遇到的诡异问题
经高人指点,初始化0就好了。
void TIM1_Int_Init(u16 arr,u16 psc)
{
TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure = {0};
NVIC_InitTypeDef NVIC_InitStructure ={0};
RCC_APB2PeriphClockCmd(RCC_APB2Periph_TIM1, ENABLE); //时钟使能
TIM_TimeBaseStructure.TIM_Period = arr; //设置在下一个更新事件装入活动的自动重装载寄存器周期的值
TIM_TimeBaseStructure.TIM_Prescaler =psc; //设置用来作为TIMx时钟频率除数的预分频值
TIM_TimeBaseStructure.TIM_ClockDivision = 0; //设置时钟分割:TDTS = Tck_tim
TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up; //TIM向上计数模式
TIM_TimeBaseInit(TIM1, &TIM_TimeBaseStructure); //根据TIM_TimeBaseInitStruct中指定的参数初始化TIMx的时间基数单位
- 2024-11-04
-
发表了主题帖:
stm32f103c8t6定时器1遇到的诡异问题
本帖最后由 ywfw30 于 2024-11-4 16:32 编辑
stmf103c8t6定时器1遇到的诡异问题:
1. 想通过定时器1产生1s的中断用作计时,
具体参数配置 TIM1_Int_Init(9999,7199);
void TIM1_Int_Init(u16 arr,u16 psc)
{
TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;
NVIC_InitTypeDef NVIC_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_TIM1, ENABLE); //时钟使能
TIM_TimeBaseStructure.TIM_Period = arr; //设置在下一个更新事件装入活动的自动重装载寄存器周期的值
TIM_TimeBaseStructure.TIM_Prescaler =psc; //设置用来作为TIMx时钟频率除数的预分频值
TIM_TimeBaseStructure.TIM_ClockDivision = 0; //设置时钟分割:TDTS = Tck_tim
TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up; //TIM向上计数模式
TIM_TimeBaseInit(TIM1, &TIM_TimeBaseStructure); //根据TIM_TimeBaseInitStruct中指定的参数初始化TIMx的时间基数单位
TIM_ITConfig( //使能或者失能指定的TIM中断
TIM1, //TIM2
TIM_IT_Update ,
ENABLE //使能
);
NVIC_InitStructure.NVIC_IRQChannel = TIM1_UP_IRQn; //TIM3中断
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1; //先占优先级0级
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 3; //从优先级3级
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; //IRQ通道被使能
NVIC_Init(&NVIC_InitStructure); //根据NVIC_InitStruct中指定的参数初始化外设NVIC寄存器
TIM_Cmd(TIM1, ENABLE); //使能TIMx外设
}
2.遇到的诡异问题是和PA0、PA1管脚有关
如果程序中不用PA0、PA1管脚,那么定时器可以稳定的产生1s中断
可是一旦要用到PA0、PA1管脚,定时器的中断时间突然变成了3s??????????
用到PA0和PA1时的代码如下,而且是仅仅初始化一下就会影响定时器1
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);//使能PORTA时钟
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;//PA0
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU; //PA0设置成输入,默认上拉
GPIO_Init(GPIOA, &GPIO_InitStructure);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1;//PA0
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU; //PA0设置成输入,默认上拉
GPIO_Init(GPIOA, &GPIO_InitStructure);
3.想不通PA0、PA1怎么影响到定时器1呢,感觉有点无厘头??
难道买到假的芯片了?不可能这种假法吧??
- 2024-08-20
-
发表了主题帖:
示波器测量信号的直流分量?
示波器测量信号,直流分量是读哪个参数?平均值吗?
- 2024-07-31
-
回复了主题帖:
固态继电器(mos输出)的开关速率
qwqwqw2088 发表于 2024-7-30 22:01
固态继电器(mos输出)开关频率一般都比较高吧
所说的这两个时间不是开关频率时间
Operate ...
是的,这样的话开关频率时间应该会更慢,Khz级别不容易达到
-
回复了主题帖:
固态继电器(mos输出)的开关速率
qwqwqw2088 发表于 2024-7-30 21:01
魏德米勒高频固态继电器MOS 5VTTL/24VDC 0,1A
100KHZ
负载是交流的,想用mos输出的固态继电器。
mos输出的固态继电器频率好像都不高
- 2024-07-30
-
发表了主题帖:
固态继电器(mos输出)的开关速率
固态继电器(mos输出)的开关速率是不是很难达到KHz级别呀?
我看数据手册上这类器件的开关时间单位都是ms,也就是说大部分用在Hz级别的情况下?
- 2024-07-29
-
回复了主题帖:
如何产生脉宽不同的正负脉冲?
蓝雨夜 发表于 2024-7-29 17:26
目标波形图里面的电平高度能不能标志出来!
单极和双极还是有区别的吧
高度是一样的。
都是双极性的,只不过正负极性的脉宽不一样
-
回复了主题帖:
如何产生脉宽不同的正负脉冲?
振动试验仪器 发表于 2024-7-29 14:26
改用MOS管的输出方式好控制些
类似于H桥吗?要产生正负不对称的脉冲群
-
回复了主题帖:
如何产生脉宽不同的正负脉冲?
maychang 发表于 2024-7-29 13:58
从首帖第二幅图看,楼主要的波形只有三个电平。那么用两个直流电源,MOS管做开关,即可实现楼主想要的波 ...
是的,DA的话比较容易生成。选择变压器是考虑到时候有个打耐压测试,有个几千伏吧,想通过变压器实现
-
回复了主题帖:
如何产生脉宽不同的正负脉冲?
tagetage 发表于 2024-7-29 13:54
电刺激的产品----这东西现在还有人用吗????---你要求的波形是不能通过变压器的,正规的办法是变压器或 ...
升压后是一系列脉冲组合,有正有负,而H桥好像多用于固定电源吧
-
回复了主题帖:
如何产生脉宽不同的正负脉冲?
maychang 发表于 2024-7-29 13:50
【现在想要的是截取其中一部分产生直流分量】
你想要的波形,与你的负载有关。首帖第三幅图,P12右边 ...
500欧姆的负载
-
回复了主题帖:
如何产生脉宽不同的正负脉冲?
maychang 发表于 2024-7-29 11:14
【经过变压器后的刺激波形是这样的】
这样的波形不可能通过变压器。变压器不能传递直流成分,而这样的波 ...
经过变压器后上下是对称的,只不过上下是两种波形在对称。
现在想要的是截取其中一部分产生直流分量
-
发表了主题帖:
如何产生脉宽不同的正负脉冲?
1. 在做一个电刺激的产品。
经过变压器后的刺激波形是这样的。
现在想产生正负脉宽不同的波形,就是想要截取现有波形的一部分,如下图所示
最终想要的波形是这样的
2.
设计的电路是这样的,放在变压器输出后面,通过通断三极管来截取想要的波形。
现在的问题是在三极管导通期间可以输出想要的波形,可是三极管截取期间输出不是0,而是一段干扰波形。
这段干扰波形怎不知道怎么彻底消除?
试了好多种方法都不行,不知道问题出在哪里