谢谢了~~
确实是这样的。
我的写错了控制符,因此没有换行,我还以为是上位机软件不支持呢~~
分压电路——用AD采样来证明
还有不到一周的时间就要交作业,按照正常来说,现在正是赶作业的时候,我也不例外。做为一名物理系的学生,我想起来了高中物理电路实验:分压电路:两个电阻串联分压——两个电阻的电压值之和等于加在两端电压。
今天,就用一个滑动变阻器来证明这个定理吧!
这是从AD采样出来的数据,可以看到随着变阻器的滑动,其两端的电压呈现线性变化。
操作原理也是非常简单的,但是与论坛大多数人不同,我没有使用DMA方式,那个太复杂了。做这样的简单实验,甭费那个劲了。
当然,只需要添加一条语句:
Voltage = ADC_GetConversionValue(ADC1);
就可以了。
嘿嘿,大家放弃官方那个例程吧!
感谢 hanshuyujifen2 指明换行控制字
还有不到一周的时间就要交作业,按照正常来说,现在正是赶作业的时候,我也不例外。做为一名物理系的学生,我想起来了高中物理电路实验:分压电路:两个电阻串联分压——两个电阻的电压值之和等于加在两端电压。
今天,就用一个滑动变阻器来证明这个定理吧!
这是从AD采样出来的数据,可以看到随着变阻器的滑动,其两端的电压呈现线性变化。
操作原理也是非常简单的,但是与论坛大多数人不同,我没有使用DMA方式,那个太复杂了。做这样的简单实验,甭费那个劲了。
当然,只需要添加一条语句:
Voltage = ADC_GetConversionValue(ADC1);
就可以了。
嘿嘿,大家放弃官方那个例程吧!
感谢 hanshuyujifen2 指明换行控制字
什么叫占空比——PWM波输出
占空比(Duty Ratio)在电信领域中有如下含义:
在一串理想的脉冲周期序列中(如方波),正脉冲的持续时间与脉冲总周期的比值。例如:脉冲宽度1μs,信号周期4μs的脉冲序列占空比为0.25。占空比控制应该称为电控脉宽调制技术,它是通过电子控制装置对加在工作执行元件上一定频率的电压信号进行脉冲宽度的调制,以实现对所控制的执行元件工作状态精确,连续的控制。例如,控制步进电机的前进距离等等。
可见,PWM波的脉宽调制技术还是非常有应用前景的。下面,我们就使用stm32f103zet的tim3_ch1来输出PWM波,通过串口发送相应指令,来控制PWM波的占空比。
PC机发送“+x”为增加脉宽指令,其中,“+”为增加指令;“x”为指令结束符。将PA6引脚连接示波器,通过其观察占空比的变化。
视频在文章附1。
对TIM3进行配置如下:
GPIO_InitTypeDef GPIO_InitStructure;
TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE);
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_AFIO, ENABLE);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOA, &GPIO_InitStructure);
TIM_TimeBaseStructure.TIM_Period = 665;
TIM_TimeBaseStructure.TIM_Prescaler = 719;
TIM_TimeBaseStructure.TIM_ClockDivision = 0;
TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;
TIM_TimeBaseInit(TIM3, &TIM_TimeBaseStructure);
在main()函数里,做如下判断:
while(1)
{
while(TRUE == gRcvOverFlag)
{
tmp = gRxBuffer[0];
switch(tmp)
{
case '+' :
CCR1Val += 10;
break;
case '-':
CCR1Val -= 10;
break;
case 0:
CCR1Val = 0;
break;
case 0x35:
CCR1Val = 50;
break;
case 9:
CCR1Val = 90;
break;
default :
break;
}
TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1;
TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;
TIM_OCInitStructure.TIM_Pulse = CCR1Val; /* 调节占空比 */
TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High;
TIM_OC1Init(TIM3, &TIM_OCInitStructure);
TIM_OC1PreloadConfig(TIM3, TIM_OCPreload_Enable);
TIM_ARRPreloadConfig(TIM3, ENABLE);
TIM_Cmd(TIM3, ENABLE);
gRcvOverFlag = FALSE;
gRcvCnt = 0;
}
这样只要发送相应的指令,“+x”“-x”即可控制PWM波了。
附1:PWM波脉宽调制视频
占空比(Duty Ratio)在电信领域中有如下含义:
在一串理想的脉冲周期序列中(如方波),正脉冲的持续时间与脉冲总周期的比值。例如:脉冲宽度1μs,信号周期4μs的脉冲序列占空比为0.25。占空比控制应该称为电控脉宽调制技术,它是通过电子控制装置对加在工作执行元件上一定频率的电压信号进行脉冲宽度的调制,以实现对所控制的执行元件工作状态精确,连续的控制。例如,控制步进电机的前进距离等等。
可见,PWM波的脉宽调制技术还是非常有应用前景的。下面,我们就使用stm32f103zet的tim3_ch1来输出PWM波,通过串口发送相应指令,来控制PWM波的占空比。
PC机发送“+x”为增加脉宽指令,其中,“+”为增加指令;“x”为指令结束符。将PA6引脚连接示波器,通过其观察占空比的变化。
视频在文章附1。
对TIM3进行配置如下:
GPIO_InitTypeDef GPIO_InitStructure;
TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE);
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_AFIO, ENABLE);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOA, &GPIO_InitStructure);
TIM_TimeBaseStructure.TIM_Period = 665;
TIM_TimeBaseStructure.TIM_Prescaler = 719;
TIM_TimeBaseStructure.TIM_ClockDivision = 0;
TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;
TIM_TimeBaseInit(TIM3, &TIM_TimeBaseStructure);
在main()函数里,做如下判断:
while(1)
{
while(TRUE == gRcvOverFlag)
{
tmp = gRxBuffer[0];
switch(tmp)
{
case '+' :
CCR1Val += 10;
break;
case '-':
CCR1Val -= 10;
break;
case 0:
CCR1Val = 0;
break;
case 0x35:
CCR1Val = 50;
break;
case 9:
CCR1Val = 90;
break;
default :
break;
}
TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1;
TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;
TIM_OCInitStructure.TIM_Pulse = CCR1Val; /* 调节占空比 */
TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High;
TIM_OC1Init(TIM3, &TIM_OCInitStructure);
TIM_OC1PreloadConfig(TIM3, TIM_OCPreload_Enable);
TIM_ARRPreloadConfig(TIM3, ENABLE);
TIM_Cmd(TIM3, ENABLE);
gRcvOverFlag = FALSE;
gRcvCnt = 0;
}
这样只要发送相应的指令,“+x”“-x”即可控制PWM波了。
附1:PWM波脉宽调制视频
你的触摸屏显示程序能不能,给我一份,我买的屏,商家给的是51单片机的,改起来比较困难。邮箱:1244810996@qq.com。多谢你了!
回复
有奖活动 | |
---|---|
【有奖活动】分享技术经验,兑换京东卡 | |
话不多说,快进群! | |
请大声喊出:我要开发板! | |
【有奖活动】EEPW网站征稿正在进行时,欢迎踊跃投稿啦 | |
奖!发布技术笔记,技术评测贴换取您心仪的礼品 | |
打赏了!打赏了!打赏了! |
打赏帖 | |
---|---|
【换取逻辑分析仪】-基于ADI单片机MAX78000的简易MP3音乐播放器被打赏48分 | |
我想要一部加热台+树莓派PICO驱动AHT10被打赏38分 | |
【换取逻辑分析仪】-硬件SPI驱动OLED屏幕被打赏36分 | |
换逻辑分析仪+上下拉与多路选择器被打赏29分 | |
Let'sdo第3期任务合集被打赏50分 | |
换逻辑分析仪+Verilog三态门被打赏27分 | |
换逻辑分析仪+Verilog多输出门被打赏24分 | |
【分享评测,赢取加热台】使用8051单片机驱动WS2812被打赏40分 | |
【换取逻辑分析仪】rtthread添加RRH62000传感器驱动-基于野火启明6M5被打赏48分 | |
换逻辑分析仪+Verilog多输入门被打赏27分 |