求解关于stm32f103zet6原理图正交编码器的问题

查看: 5452|回复: 17
STM32F103ZET6 串口2通信问题
主题帖子精华
初级会员, 积分 149, 距离下一级还需 51 积分
在线时间0 小时
&&&&&&&&&&&& 我的开发板默认是用串口1下载程序的,但现在我需要利用串口2,所以我想先调试串口2。串口2是通过插针引出的,我把串口1的串口通信程序经过修改后(包括总线,引脚)改成适合串口2的驱动,但没有实现功能,现在找不到原因,我能想到的只有总线和引脚了。说下我的做法,我另外用了个USB转串口的小板(芯片是CH340),我把串口小板插上电脑,再把RX
TX和STM32开发板的串口2的TX RX交叉连接。我想这样应该能达到目的才对啊??但现在是可以通信,但是显示乱码,波特率的什么都注意到了,求大虾指点
主题帖子精华
在线时间137 小时
串口2的时钟开了吗?和串口1不一样,串口1在APB2上,串口2在APB1上
主题帖子精华
初级会员, 积分 149, 距离下一级还需 51 积分
在线时间0 小时
回复【2楼】ricefat:
---------------------------------
开了,这点我注意到了,现在是同样的驱动,串口2可以通信,但接收的是乱码
主题帖子精华
金钱124024
在线时间1034 小时
回复【3楼】suso:
---------------------------------
发送没问题?
接收有问题?
中断接收的?
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺:
微信公众平台:正点原子& &
主题帖子精华
金牌会员, 积分 1277, 距离下一级还需 1723 积分
在线时间90 小时
串口2时钟为 串口1的一半哦 注意了没有?
同样是115200 &串口1是初始化72M &串口2是 36M
主题帖子精华
初级会员, 积分 183, 距离下一级还需 17 积分
在线时间0 小时
那个示波器测量一下波特率,换一下波特率试试看。
主题帖子精华
初级会员, 积分 69, 距离下一级还需 131 积分
在线时间0 小时
把波特率调小&&试试
只要路对?不怕路远
主题帖子精华
初级会员, 积分 149, 距离下一级还需 51 积分
在线时间0 小时
就是把战舰的实验四串口通信的串口1改成串口2了,然后其他的总线引脚我都改过来了,貌似可以接收,但是乱码;但好像不能发送
我直接上图吧,一个是串口1的,一个是串口2的
fdff7f9de7c6a3c78bdc0abc119a1b6a_979.jpg (0 Bytes, 下载次数: 1)
22:54 上传
271eeb936488bdbd700ba_786.jpg (0 Bytes, 下载次数: 1)
22:54 上传
另外,至于波特率,我试了下4800,也不行
主题帖子精华
初级会员, 积分 149, 距离下一级还需 51 积分
在线时间0 小时
回复【4楼】正点原子:
---------------------------------
好像不能发送,接收是乱码。就是战舰那个串口例程,是用中断接收的
主题帖子精华
在线时间0 小时
接收看一下FE位,是不是信号的问题。
于停用该账号:http://www.microstar.club
主题帖子精华
初级会员, 积分 149, 距离下一级还需 51 积分
在线时间0 小时
回复【10楼】styleno1:
---------------------------------
FE&位&是什么?
主题帖子精华
在线时间0 小时
回复【11楼】suso:
---------------------------------
USART的错误标志位
于停用该账号:http://www.microstar.club
主题帖子精华
新手入门, 积分 40, 距离下一级还需 -20 积分
在线时间0 小时
默默问一句,串口2在STM32F103咋么引出?那些口?
谢谢
捍卫梦想!
主题帖子精华
金牌会员, 积分 1125, 距离下一级还需 1875 积分
在线时间216 小时
知识是你最好的财富
主题帖子精华
初级会员, 积分 90, 距离下一级还需 110 积分
在线时间13 小时
默默问一句,串口2在STM32F103咋么引出?那些口?
主题帖子精华
初级会员, 积分 59, 距离下一级还需 141 积分
在线时间11 小时
请问下楼主 ,问题解决了吗? 我现在遇到了跟你一模一样的问题,能否答疑下,谢谢
主题帖子精华
中级会员, 积分 373, 距离下一级还需 127 积分
在线时间69 小时
RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART2, ENABLE);
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);& & & & //使能USART2,GPIOA时钟
主题帖子精华
新手入门, 积分 7, 距离下一级还需 13 积分
在线时间0 小时
Powered by查看: 2443|回复: 2
用JTAG给stm32F103ZET6下载程序出现的问题,求指导
主题帖子精华
新手入门, 积分 50, 距离下一级还需 -30 积分
在线时间0 小时
请教各位,目前用JTAG给stm32f103zet6下载程序出现无论是JTAG模式还是SW模式都不行,JTAG驱动是4.15的,MDK用3.8,驱动已经安装成功了,还有就是按下复位键,JTAG的灯闪一下红灯,之后就处于常亮状态是绿色的,原理图如下,IO口分别PA13、PA14、PA15、PB3、PB4,复位接NRST,用外部晶振8M,电源给3.3V,希望高手能给我指导,谢谢
&(40.73 KB, 下载次数: 0)
&(37.41 KB, 下载次数: 0)
&(55.61 KB, 下载次数: 0)
不在沉默中爆发,就在沉默中死亡
主题帖子精华
金钱124024
在线时间1034 小时
可能是板子硬件连接的问题。
好好检查下&硬件。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺:
微信公众平台:正点原子& &
主题帖子精华
在线时间351 小时
回复【楼主位】zhengboxing:
---------------------------------
显示没有发现你的jtag喔,看1楼原子哥的方法看下
现在,程序把烂铜烂铁变得智能化了,人呢,一旦离开了这烂铜烂铁就不知道干啥了
Powered by简述ATMEGA8与STM32F103ZET6的优点、特点与使用的注意事项?_百度知道
简述ATMEGA8与STM32F103ZET6的优点、特点与使用的注意事项?
希望有高手能完整回答问题,谢谢各位大神!
我有更好的答案
当初我也犯过这样的错误,AVCC不但是ADC的电源,还是PC端口的电源,不接AVCC虽然PC口可以输出高低电平,但输出的高电平幅值比正常的端口要低,驱动能力也很弱,估计这时候是通过一个等效电阻接到VCC上了吧!
为您推荐:
其他类似问题
atmega8的相关知识
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。1470人阅读
stm32(7)
查看了很多资料讲解到stm32编码器,自己也做学习了一下,用stm32外接as5047测试电动机的转速,经过调试可以测出来,但是问题在于 电机的速度为什么和串口打印延时有关???路过的大神求教。。。#include "encoder.h"
#include "usart.h"
#include "usart.h"
#define TRUE 1
#define FALSE 0
s16 hPrevious_angle, hSpeed_Buffer[SPEED_BUFFER_SIZE], hRot_S
static u8 bSpeed_Buffer_Index = 0;
static volatile u16 hEncoder_Timer_O
static unsigned char bIs_First_Measurement = TRUE;
void ENC_Init(void)
&span style="white-space:pre"& &/span&TIM_TimeBaseInitTypeDef
TIM_TimeBaseS
&span style="white-space:pre"& &/span&TIM_ICInitTypeDef TIM_ICInitS
&span style="white-space:pre"& &/span&GPIO_InitTypeDef GPIO_InitS
&span style="white-space:pre"& &/span&NVIC_InitTypeDef NVIC_InitS
&span style="white-space:pre"& &/span&RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE);
&span style="white-space:pre"& &/span&RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);
&span style="white-space:pre"& &/span&GPIO_StructInit(&GPIO_InitStructure);
&span style="white-space:pre"& &/span&GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6 | GPIO_Pin_7;
&span style="white-space:pre"& &/span&GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
&span style="white-space:pre"& &/span&GPIO_Init(GPIOA, &GPIO_InitStructure);
&span style="white-space:pre"& &/span&NVIC_InitStructure.NVIC_IRQChannel = TIM3_IRQn;
&span style="white-space:pre"& &/span&NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 2;
&span style="white-space:pre"& &/span&NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;
&span style="white-space:pre"& &/span&NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
&span style="white-space:pre"& &/span&NVIC_Init(&NVIC_InitStructure);
&span style="white-space:pre"& &/span&TIM_DeInit(ENCODER_TIMER);
&span style="white-space:pre"& &/span&TIM_TimeBaseStructInit(&TIM_TimeBaseStructure);
&span style="white-space:pre"& &/span&TIM_TimeBaseStructure.TIM_Prescaler = 0;
&span style="white-space:pre"& &/span&TIM_TimeBaseStructure.TIM_Period = 2000-1;
&span style="white-space:pre"& &/span&TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1;
&span style="white-space:pre"& &/span&TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;
&span style="white-space:pre"& &/span&TIM_TimeBaseInit(ENCODER_TIMER, &TIM_TimeBaseStructure);
&span style="white-space:pre"& &/span&
&span style="white-space:pre"& &/span&TIM_EncoderInterfaceConfig(ENCODER_TIMER, TIM_EncoderMode_TI12,
TIM_ICPolarity_Rising, TIM_ICPolarity_Rising);
&span style="white-space:pre"& &/span&TIM_ICStructInit(&TIM_ICInitStructure);
&span style="white-space:pre"& &/span&TIM_ICInitStructure.TIM_ICFilter = ICx_FILTER;
&span style="white-space:pre"& &/span&TIM_ICInit(ENCODER_TIMER, &TIM_ICInitStructure);
&span style="white-space:pre"& &/span&TIM_ClearFlag(ENCODER_TIMER, TIM_FLAG_Update);
&span style="white-space:pre"& &/span&TIM_ITConfig(ENCODER_TIMER, TIM_IT_Update, ENABLE);
&span style="white-space:pre"& &/span&TIM3-&CNT = COUNTER_RESET;
&span style="white-space:pre"& &/span&ENC_Clear_Speed_Buffer();
&span style="white-space:pre"& &/span&TIM_Cmd(ENCODER_TIMER, ENABLE);
s16 ENC_Get_Electrical_Angle(void)
temp = (s32)(TIM_GetCounter(ENCODER_TIMER)) * (s32)( / (4*ENCODER_PPR));
return((s16)(temp/65536));
void ENC_Clear_Speed_Buffer(void)
&span style="white-space:pre"& &/span&u32
&span style="white-space:pre"& &/span&for (i=0;i&SPEED_BUFFER_SIZE;i++)
&span style="white-space:pre"& &/span&{
&span style="white-space:pre"&
&/span&hSpeed_Buffer[i] = 0;
&span style="white-space:pre"& &/span&}
&span style="white-space:pre"& &/span&bIs_First_Measurement = TRUE;
s16 ENC_Calc_Rot_Speed(void)
&span style="white-space:pre"& &/span&s32 wDelta_
&span style="white-space:pre"& &/span&u16 hEnc_Timer_Overflow_sample_one, hEnc_Timer_Overflow_sample_
&span style="white-space:pre"& &/span&u16 hCurrent_angle_sample_one, hCurrent_angle_sample_
&span style="white-space:pre"& &/span&s
&span style="white-space:pre"& &/span&s16
&span style="white-space:pre"& &/span&if (!bIs_First_Measurement)
&span style="white-space:pre"& &/span&{
&span style="white-space:pre"&
&/span&hEnc_Timer_Overflow_sample_one = hEncoder_Timer_O
&span style="white-space:pre"&
&/span&hCurrent_angle_sample_one = ENCODER_TIMER-&CNT;
&span style="white-space:pre"&
&/span&hEnc_Timer_Overflow_sample_two = hEncoder_Timer_O
&span style="white-space:pre"&
&/span&hCurrent_angle_sample_two = ENCODER_TIMER-&CNT;
&span style="white-space:pre"&
&/span&hEncoder_Timer_Overflow = 0;
&span style="white-space:pre"&
&/span&haux = ENCODER_TIMER-&CNT;
&span style="white-space:pre"&
&/span&if (hEncoder_Timer_Overflow != 0)
&span style="white-space:pre"&
&span style="white-space:pre"&
&/span&haux = ENCODER_TIMER-&CNT;
&span style="white-space:pre"&
&/span&hEncoder_Timer_Overflow = 0;
&span style="white-space:pre"&
&span style="white-space:pre"&
&/span&if (hEnc_Timer_Overflow_sample_one != hEnc_Timer_Overflow_sample_two)
&span style="white-space:pre"&
&span style="white-space:pre"&
&/span&hCurrent_angle_sample_one = hCurrent_angle_sample_
&span style="white-space:pre"&
&/span&hEnc_Timer_Overflow_sample_one = hEnc_Timer_Overflow_sample_
&span style="white-space:pre"&
&span style="white-space:pre"&
&/span&if ( (ENCODER_TIMER-&CR1 & TIM_CounterMode_Down) == TIM_CounterMode_Down)
&span style="white-space:pre"&
&span style="white-space:pre"&
&/span&wDelta_angle = (s32)(hCurrent_angle_sample_one - hPrevious_angle -
&span style="white-space:pre"& &/span&(hEnc_Timer_Overflow_sample_one) * (4*ENCODER_PPR));
&span style="white-space:pre"&
&span style="white-space:pre"&
&/span&else
&span style="white-space:pre"&
&span style="white-space:pre"&
&/span&wDelta_angle = (s32)(hCurrent_angle_sample_one - hPrevious_angle +
(&span style="white-space:pre"& &/span&hEnc_Timer_Overflow_sample_one) * (4*ENCODER_PPR));
&span style="white-space:pre"&
&span style="white-space:pre"&
&/span&temp = (signed long long)(wDelta_angle * SPEED_SAMPLING_FREQ);
&span style="white-space:pre"&
&/span&temp *= 10;
// 0.1 Hz resolution
&span style="white-space:pre"&
&/span&temp /= (4*ENCODER_PPR);
&span style="white-space:pre"& &/span&}
&span style="white-space:pre"& &/span&else
&span style="white-space:pre"& &/span&{
&span style="white-space:pre"& &/span& &span style="white-space:pre"& &/span&bIs_First_Measurement = FALSE;
&span style="white-space:pre"&
&/span&temp = 0;
&span style="white-space:pre"&
&/span&hEncoder_Timer_Overflow = 0;
&span style="white-space:pre"&
&/span&haux = ENCODER_TIMER-&CNT;
&span style="white-space:pre"&
&/span&if (hEncoder_Timer_Overflow != 0)
&span style="white-space:pre"&
&span style="white-space:pre"&
&/span&haux = ENCODER_TIMER-&CNT;
&span style="white-space:pre"&
&/span&hEncoder_Timer_Overflow = 0;
&span style="white-space:pre"&
&span style="white-space:pre"& &/span&}
&span style="white-space:pre"& &/span&hPrevious_angle =
&span style="white-space:pre"& &/span&return((s16) temp);
s16 ENC_Calc_Average_Speed(void)
&span style="white-space:pre"& &/span&s32 wtemp,wtemp_1=0;
&span style="white-space:pre"& &/span&u32
&span style="white-space:pre"& &/span&for (i=0;i&SPEED_BUFFER_SIZE;i++)
&span style="white-space:pre"& &/span&{
&span style="white-space:pre"&
&/span&if (bSpeed_Buffer_Index == SPEED_BUFFER_SIZE)
&span style="white-space:pre"&
&span style="white-space:pre"&
&/span&bSpeed_Buffer_Index = 0;
&span style="white-space:pre"&
&span style="white-space:pre"&
&/span&wtemp = ENC_Calc_Rot_Speed();
&span style="white-space:pre"&
&/span&hSpeed_Buffer[bSpeed_Buffer_Index] = (s16)
&span style="white-space:pre"&
&/span&bSpeed_Buffer_Index++;
&span style="white-space:pre"&
&/span&wtemp_1 +=
&span style="white-space:pre"& &/span&}
&span style="white-space:pre"& &/span&wtemp_1 /= SPEED_BUFFER_SIZE;
&span style="white-space:pre"& &/span&hRot_Speed = ((s16)(wtemp_1));
&span style="white-space:pre"& &/span&return hRot_S
void TIM3_IRQHandler(void)
&span style="white-space:pre"& &/span&TIM_ClearFlag(ENCODER_TIMER, TIM_FLAG_Update);
&span style="white-space:pre"& &/span&if (hEncoder_Timer_Overflow != 65535)
&span style="white-space:pre"& &/span&{
&span style="white-space:pre"&
&/span&hEncoder_Timer_Overflow++;
&span style="white-space:pre"& &/span&}
其实不用平均一下测试的转速更准确。。。。。。。。。。。}

我要回帖

更多关于 stm32f103zet6开发板 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信