求助香主,STM32F205的HS如何工作在FS模式下

21ic官方微信-->
后使用快捷导航没有帐号?
请问香主,用STM32的硬件编码器如何扩展成32位?
&&已结帖(0)
主题帖子积分
初级技术员, 积分 63, 距离下一级还需 37 积分
初级技术员, 积分 63, 距离下一级还需 37 积分
主题帖子积分
专家等级:结帖率:100%
主题帖子积分
初级技术员, 积分 63, 距离下一级还需 37 积分
初级技术员, 积分 63, 距离下一级还需 37 积分
请问一下我的代码哪里出问题了,编码器没反应谁能帮帮我,感谢感谢。
#include&zjbmq.h&
void ENC_Init(void)
& & & & TIM_TimeBaseInitTypeDef TIM_TimeBaseS
& & & & TIM_ICInitTypeDef TIM_ICInitS
& & & & GPIO_InitTypeDef GPIO_InitS
& & & & NVIC_InitTypeDef NVIC_InitS
& & & & RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE);//使能TIM3
& & & & RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);
& & & & GPIO_StructInit(&GPIO_InitStructure);
& & & & GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6 | GPIO_Pin_7;
& & & & GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
& & & & GPIO_Init(GPIOA, &GPIO_InitStructure);
& & & & NVIC_InitStructure.NVIC_IRQChannel = TIM3_IRQn;
& & & & NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;
& & & & NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;
& & & & NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
& & & & NVIC_Init(&NVIC_InitStructure);
& & & & TIM_DeInit(TIM3);
& & & & TIM_TimeBaseStructInit(&TIM_TimeBaseStructure);
& & & & TIM_TimeBaseStructure.TIM_Prescaler = 0; //设置预分频:
& & & & TIM_TimeBaseStructure.TIM_Period = (4*1000)-1;;
& & & & TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1;
& & & & TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;& &
& & & & TIM_TimeBaseInit(TIM3, &TIM_TimeBaseStructure);
& & & & TIM_EncoderInterfaceConfig(TIM3, TIM_EncoderMode_TI12,
& && && && && && && && && &&&TIM_ICPolarity_Rising, TIM_ICPolarity_Rising);
& & & & TIM_ICStructInit(&TIM_ICInitStructure);
& & & & TIM_ICInitStructure.TIM_ICFilter = 6;
& & & & TIM_ICInit(TIM3, &TIM_ICInitStructure);
& & & & // Clear all pending interrupts
& & & & TIM_ClearFlag(TIM3, TIM_FLAG_Update);
& & & & TIM_ITConfig(TIM3, TIM_IT_Update, ENABLE);
& & & & //Reset counter
& & & & TIM3-&CNT = 0;
& & & & TIM_Cmd(TIM3, ENABLE);
s16 ENC_Get_Electrical_Angle(void)
& & & & static u16& &lastCount =0;
& & & & u16 curCount = TIM3-&CNT;
& & & & s32 dAngle =curCount - lastC
& & & & if(dAngle &= 500)
& & & && && & & & dAngle -=1000;
& & & & else if(dAngle & -500)
& && & & & & & & & dAngle += 1000;
& & & & lastCount = curC
& & & & return (s16)dA
21ic公开课,21ic网友共同的学习圈子!学单片机、嵌入式、模拟、电源……就看这里
移步更多21ic独家微课:
主题帖子积分
中级技术员, 积分 225, 距离下一级还需 75 积分
中级技术员, 积分 225, 距离下一级还需 75 积分
主题帖子积分
专家等级:结帖率:94%
主题帖子积分
中级技术员, 积分 225, 距离下一级还需 75 积分
中级技术员, 积分 225, 距离下一级还需 75 积分
21ic公开课,21ic网友共同的学习圈子!学单片机、嵌入式、模拟、电源……就看这里
移步更多21ic独家微课:
主题帖子积分
初级技术员, 积分 87, 距离下一级还需 13 积分
初级技术员, 积分 87, 距离下一级还需 13 积分
主题帖子积分
专家等级:结帖率:0%
主题帖子积分
初级技术员, 积分 87, 距离下一级还需 13 积分
初级技术员, 积分 87, 距离下一级还需 13 积分
这个是我经常用的编码器读取方法
s16& &Enc_GetCount(void)
这个MAX_COUNT的值如何求得?
21ic公开课,21ic网友共同的学习圈子!学单片机、嵌入式、模拟、电源……就看这里
移步更多21ic独家微课:
主题帖子积分
高级技术员, 积分 897, 距离下一级还需 103 积分
高级技术员, 积分 897, 距离下一级还需 103 积分
主题帖子积分
专家等级:结帖率:100%
主题帖子积分
高级技术员, 积分 897, 距离下一级还需 103 积分
高级技术员, 积分 897, 距离下一级还需 103 积分
这个MAX_COUNT的值如何求得?
根据你的编码器的最大旋转速度算出来的。比如说,你的编码器最大旋转速度是1秒钟10圈(这里就是为了好计算,一般没有转这么快的编码器),通过另一个定时器来定时的话,如果定时器取10mS的话就是0.1圈也就是36°。如果分辨率是1000的编码器0.1圈的话会计数.1=400下,那么你这个MAX_COUNT就要取得比这个400还要大一些,比如500或者600都行。
21ic公开课,21ic网友共同的学习圈子!学单片机、嵌入式、模拟、电源……就看这里
移步更多21ic独家微课:
主题帖子积分
实习生, 积分 33, 距离下一级还需 17 积分
实习生, 积分 33, 距离下一级还需 17 积分
主题帖子积分
专家等级:结帖率:0%
主题帖子积分
实习生, 积分 33, 距离下一级还需 17 积分
实习生, 积分 33, 距离下一级还需 17 积分
非常好的设计。用一个定时器10MS定时读取编码器值也不会占用CPU很多时间,还是可以干其他事的,只是要将定时器中断优先级提升。
21ic公开课,21ic网友共同的学习圈子!学单片机、嵌入式、模拟、电源……就看这里
移步更多21ic独家微课:
主题帖子积分
实习生, 积分 3, 距离下一级还需 47 积分
实习生, 积分 3, 距离下一级还需 47 积分
主题帖子积分
专家等级:结帖率:0%
主题帖子积分
实习生, 积分 3, 距离下一级还需 47 积分
实习生, 积分 3, 距离下一级还需 47 积分
我是刚接触stm32,要用其做光栅尺数显表设计,光栅尺输出A,B两路信号我接到stm32的PA6和PA7,如何实现测距呢,显示部分已做出来,计数部分不懂,光栅尺分辨率5um,量程200mm,求教
21ic公开课,21ic网友共同的学习圈子!学单片机、嵌入式、模拟、电源……就看这里
移步更多21ic独家微课:
技术新星奖章
人才类勋章
技术高手奖章
人才类勋章
时间类勋章4K的后备SRAM是一个类似于EEPROM的区域;后备寄存器是32位寄存器,当VDD没上电时,用于;就像后备SRAM,RTC和后备寄存器通过一个开关;2.2.18低功耗模式;TheSTM32F20x系列支持三种低功耗模式,;睡眠模式;在睡眠模式,只有CPU停止,所有外设处于工作状态;在保持SRAM和寄存器内容不丢失的情况下,停机模;可以通过任一配置成EXTI
4K的后备SRAM是一个类似于EEPROM的区域。它能存储VBAT和待机模式中需要保留的数据。这个存储器区域不能被禁用,以减少电能消耗(见2.2.18节:低功耗模式)。它能通过软件使能。
后备寄存器是32位寄存器,当VDD没上电时,用于存储80个字节的用户应用程序数据。后备寄存器不能被一个系统,一个电源复位,或设备从待机模式醒来时复位。(见节2.2.18:低功耗模式)。
就像后备SRAM,RTC和后备寄存器通过一个开关供电,在VDD有效时该开关选择VDD供电,否则由VBAT引脚供电。
2.2.18低功耗模式
The STM32F20x系列支持三种低功耗模式,可以在要求低功耗、短启动时间和多种唤醒事件之间达到最佳的平衡。
在睡眠模式,只有CPU停止,所有外设处于工作状态并可在发生中断/事件时唤醒CPU。 停机模式
在保持SRAM和寄存器内容不丢失的情况下,停机模式可以达到最低的电能消耗。在停机模式下,停止所有内部1.8V部分的供电,PLL、HSI的RC振荡器和HSE晶体振荡器被关闭,调压器可以被置于普通模式或低功耗模式。
可以通过任一配置成EXTI的信号把微控制器从停机模式中唤醒,EXTI信号可以是16个外部I/O口之一、PVD的输出、RTC闹钟/唤醒/窜改/时间戳事件、USB OTG FS/HS的唤醒信号或以太网唤醒。
在待机模式下可以达到最低的电能消耗。内部的电压调压器被关闭,因此所有内部1.2V部分的供电被切断;PLL、HSI的RC振荡器和HSE晶体振荡器也被关闭;进入待机模式后,SRAM和寄存器的内容将消失,但后备寄存器和选中的后备SRAM的内容仍然保留。
从待机模式退出的条件是:NRST上的外部复位信号、IWDG复位、WKUP引脚上的一个上升边沿或RTC的闹钟到时/唤醒/篡改/时间戳事件发生。
在进入停机或待机模式时,RTC、IWDG和对应的时钟不会被停止。
2.2.19 VBAT操作
VBAT管脚允许从一个外部电池或内部超级电容向STM32F20X VBAT部分供电。 当VDD没上电时,可进行VBAT操作。
VBAT管脚向RTC,后备寄存器和后备SRAM供电。
注意:当微处理器从VBAT供电时,来自VBAT操作的外部中断和RTC闹钟/事件不会退出。
2.2.20 定时器和看门狗
STM32F20x系列产品包含2个高级控制定时器、8个普通定时器和2个基本定时器,以及2个看门狗定时器。
所有定时器计数器可以在调试模式下冻结。
表4 比较了高级控制定时器、通用定时器和基本定时器的功能:
表4 定时器功能比较。略。
高级控制定时器(TIM1和TIM8)
两个高级控制定时器(TIM1和TIM8)可以被看成是分配到6个通道的三相PWM发生器,它具有带死区插入的互补PWM输出,还可以被当成完整的通用定时器。四个独立的通道可以用于:
● 输入捕获
● 输出比较
● 产生PWM(边缘或中心对齐模式)
● 单脉冲输出
配置为16位标准定时器时,它与TIMx定时器具有相同的功能。配置为16位PWM发生器时,它具有全调制能力(0~100%)。
在调试模式下,计数器可以被冻结。很多功能都与标准的TIM定时器相同,内部结构也相同,因此高级控制定时器可以通过定时器链接功能与TIM定时器协同操作,提供同步或事件链接功能。
通用定时器(TIMx)
STM32F20x系列内部集成了十个可同步运行的标准定时器(差别见表4)。
● TIM2, TIM3, TIM4, TIM5
STM32F20x系列包含4个功能齐全的通用定时器。TIM2和TIM5是32位的定时器,TIM3和TIM4是16位定时器。TIM2和TIM5是基于32位自动重装逐加/逐减计数器和16位分频器的定时器。TIM2和TIM5是基于16位自动重装逐加/逐减计数器和16位分频器的定时器。他们都有4个独立的通道,每个通道都可用于输入捕获、输出比较、PWM和单脉冲模式输出,在最大的封装配置中可提供最多16个输入捕获、输出比较或PWM通道。
TIM2, TIM3, TIM4, TIM5通用定时器还能通过定时器链接功能与其他通用定时器和高级控制定时器TIM1和TIM8共同工作,提供同步或事件链接功能。
TIM2, TIM3, TIM4, TIM5的计数器在调试模式下可以被冻结。这些通用定时器中的任何一个都能被用来产生PWM输出。
TIM2, TIM3, TIM4, TIM5 都能独立地产生DMA请求。这些定时器还能够处理增量编码器的信号,也能处理1至4个霍尔传感器的数字输出。
● TIM10,TIM11和TIM9
这些定时器是基于16位自动重载逐加计数器和16位分频器。TIM10和TIM11配备了一个独立通道,而TIM9有两个独立的通道,可用于输入捕捉/输出比较,PWM或单脉冲模式输出。它们可以和TIM2, TIM3, TIM4, TIM5功能齐全的通用定时器同步运行。它们也能够作为简单的时间基准。
● TIM12, TIM13 和 TIM14
这些定时器是基于16位自动重载逐加计数器和16位分频器。TIM13和TIM14配备了一个独立通道,而TIM12有两个独立的通道,可用于输入捕捉/输出比较,PWM或单脉冲模式输出。
它们可以和TIM2, TIM3, TIM4, TIM5功能齐全的通用定时器同步运行。
它们也能够作为简单的时间基准。
基本定时器TIM6和TIM7
这2个定时器主要是用于产生DAC触发信号,也可当成通用的16位时基计数器。 独立看门狗
独立的看门狗是基于一个12位的递减计数器和一个8位的预分频器,它由一个内部独立的32kHz的RC振荡器提供时钟;因为这个RC振荡器独立于主时钟,所以它可运行于停机和待机模式。它可以被当成看门狗用于在发生问题时复位整个系统,或作为一个自由定时器为应用程序提供超时管理。通过选项字节可以配置成是软件或硬件启动看门狗。在调试模式下,计数器可以被冻结。
窗口看门狗
窗口看门狗内有一个7位的递减计数器,并可以设置成自由运行。它可以被当成看门狗用于在发生问题时复位整个系统。它由主时钟驱动,具有早期预警中断功能;在调试模式下,计数器可以被冻结。
系统时基定时器
● 24位的递减计数器
● 自动重加载功能
● 当计数器为0时能产生一个可屏蔽系统中断
● 可编程时钟源
2.2.21 I2C总线
多达2个I2C总线接口,能够工作于多主模式或从模式,支持标准和快速模式。
I2C接口支持7位或10位寻址,7位从模式时支持双从地址寻址。内置了硬件CRC发生器/校验器。
它们可以使用DMA操作并支持SMBus总线2.0版/PMBus总线。
2.3.19通用同步/异步收发器(USART)
STM32F20x系列产品中,内置了4个通用同步/异步收发器(USART1、USART2、USART3和USART6),和2个通用异步收发器(UART4和UART5)。
这6个接口提供异步通信、支持IrDA SIR ENDEC传输编解码、多处理器通信模式、单线半双工通信模式和LIN主/从功能。USART1和USART6接口通信速率可达7.5兆位/秒。
其他接口的通信速率可达3.75兆位/秒。
USART1、USART2、USART3和USART6 接口具有硬件的CTS和RTS信号管理、兼容ISO7816的智能卡模式和类SPI通信模式,所有其他接口都可以使用DMA操作。
表5 USART功能比较
2.2.23串行外设接口(SPI)
STM32F20x系列产品配置了多达3个SPI接口,在从或主模式下,进行全双工和半双工通信。SPI1能以高达30 Mbits/s的速率通信,而SPI2和SPI3能以15 Mbit/s的速率通信。3位的预分频器可产生8种主模式频率,可配置成每帧8位或16位。硬件的CRC产生/校验支持基本的SD卡和MMC模式。
所有的SPI接口都可以使用DMA操作。
SPI接口可以配置在TI模式下操作,为了在主机模式和从机模式下通信。
2.2.24 I2S(芯片互联音频)接口
2个标准的I2S接口(与SPI2和SPI3复用)可以工作于主或从模式,在单向通信模式中,这2个接口可以配置为16位或32位传输,亦可配置为输入或输出通道。支持音频采样频率从8kHz到48kHz。当任一个或两个I2S接口配置为主模式,它的主时钟可以以256倍采样频率输出给外部的DAC或CODEC(解码器)。
所有I2Sx接口可以服务于DMA控制器。
2.2.25 SDIO
SD/SDIO/MMC主机接口可以支持MMC卡系统规范4.2版中的3个不同的数据总线模式:1位(默认)、4位和8位。在8位模式下,该接口可以使数据传输速率达到48MHz,该接口兼容SD存储卡规范2.0版。
SDIO存储卡规范2.0版支持两种数据总线模式:1位(默认)和4位。
目前的芯片版本只能一次支持一个SD/SDIO/MMC 4.2版的卡,但可以同时支持多个MMC 4.1版或之前版本的卡。
除了SD/SDIO/MMC,这个接口完全与CE-ATA数字协议版本1.1兼容。
2.2.26 带专用DMA和IEEE 1588支持的以太网MAC接口。
只有STM32F207xx系列才有的外设。
STM32F207xx系列提供了一个兼容IEEE-802.3-2002的介质访问控制器(MAC) ,它通过一个行业标准介质无关接口(MII)或一个简化的介质无关接口(RMII),用于以太局域网通信。STM32F207xx系列需要一个外部物理接口设备连接到物理局域网总线(双绞线、光纤等)。这个物理接口用17根信号线连接到STM32F207xx系列MII端口实现介质无关接口 (MII) ,或9根信号线连接到RMII端口实现精简介质无关接口(RMII) ,并且能用STM32F207xx系列中的25 MHz (MII)或50 MHz (RMII) 输出定时。
STM32F207xx系列包括如下特性:
● 支持10Mbit / s和100 Mbit / s速率
● 专用DMA控制器允许专用SRAM和descriptor之间进行高速转换(详见STM32F20x和STM32F21x参考手册)
● 附加MAC框架支持(VLAN支持)
● 半双工(CSMA / CD)和全双工操作
● MAC控制子层(控制帧)支持
● 32位CRC产生和去除。
● 对物理和多播地址的几种地址滤波模式。(多播和组地址)
● 32位状态编码用于每次传输或接受帧。
● 内部FIFO缓冲发送和接收到的帧。发送FIFO和接收FIFO都是2K,总共4K。 ● 支持硬件PTP(精确时钟同步协议),该协议遵照IEEE (PTP V2),它带有连接到TIM2输入的时间隙比较器。
● 当系统时间大于目标时间时触发中断。
2.2.27 控制器区域网络(CAN)
CAN接口兼容规范2.0A和2.0B(主动),位速率高达1兆位/秒。它可以接收和发送11位标识符的标准帧,也可以接收和发送29位标识符的扩展帧。具有3个发送邮箱和2个接收FIFO,3级28个可调节的滤波器。即使使用了一个CAN,它们都能被使用。被分配给每个CAN的256字节SRAM,不跟任何其他外设共用。
2.2.28 通用串行总线活动式全速(OTG_FS)
该系列嵌入了一个带集成收发器的USB OTG全速设备/主机/OTG外设。这个USB OTG FS外设遵从USB 2.0规范和OTG 1.0规范。它有软件可配置的端点设置并支持暂停/恢复。USB OTG全速控制器要求一个专用的48MHz时钟,它通过一个PLL连接到HSE振荡器来产生这个时钟。
主要特点是:
● 带动态FIFO大小,兼有Rx 和 Tx 320×35位的 FIFO。
● 支持会话请求协议(SRP)和主机谈判协议(HNP)
● 4个双向端点
● 支持周期输出的八个主机通道
● 内置HNP/SNP/IP(不需要任何外部电阻)
● 对于OTG/Host模式,需要一个电源开关,以防连接到电源供电设备。
● 支持内部FS OTG PHY
2.2.29 活动式高速通用串行总线 (OTG_HS)
STM32F20x系列嵌入了一个USB OTG高速(高达480 Mb/s)设备/主机/OTG外设。USB OTG HS支持全速和高速操作。它集成了用于全速操作(12 MB/s)的收发器,以及用于高速操作 (480 MB/s)的一个UTMI低引脚数接口(ULPI)。在HS模式下使用USB OTG HS时,要求外部物理设备连接到ULPI。
USB OTG HS外设符合USB 2.0规范以及OTG 1.0 规范。它有软件可配置的端点设置并支持暂停/恢复。USB OTG全速控制器要求一个专用的48MHz时钟,它通过一个PLL连接到HSE振荡器来产生这个时钟。
● 带动态FIFO大小,兼有Rx 和 Tx 1024×35位的 FIFO。
● 支持会话请求协议(SRP)和主机谈判协议(HNP)
● 6个双向端点
● 支持周期输出的12个主机通道
● 支持内部FS OTG PHY
● 外部HS 或 HS OTG操作支持SDR模式下的ULPI。OTG PHY通过12根信号线连接到微处理器的ULPI端口。它能产生60 MHz时钟输出。
● 内部USB DMA
● 内置HNP/SNP/IP(不需要任何外部电阻)
● 对于OTG/Host模式,需要一个电源开关,以防连接到电源供电设备。
2.2.30 音频锁相环(PLLI2S)
该系列配置了一个额外的专用PLL用于音频I2S 应用。当使用USB外设时,不用就CPU性能达成妥协,就可达到无差错I2S采样时钟精度。
三亿文库包含各类专业文献、各类资格考试、中学教育、高等教育、专业论文、STM32F207中文数据手册_图文25等内容。 
 MSP430F5 数据手册 102页 免费
数据手册 32页 免费
STM32F407 数据手册 ...W25Q16中文资料 61页 2下载券
W25Q64中文资料 44页 免费
W25X16中文手册 ...  喜欢此文档的还喜欢 STM32F051数据手册_中文 39页 免费S​T​M...数据手册 STM32F101x6 STM32F101x8 STM32F101xB 基本型, 32位基于ARM核心的...  STM32固件库使用手册的中文翻译_计算机软件及应用_IT/计算机_专业资料。STM32固件...13.1 NVIC 寄存器结构 NVIC 寄存器结构,NVIC_TypeDeff,在文件“stm32f10x_ma...  标准外设库的文件结构 在上一小节中已经介绍了使用标准外设库的开发的优势, 因此对标准外设库的熟悉程度直接 影响到程序的编写,下面让我们来认识一下 STM32F10XXX...  MINI_STM32V3用户手册_计算机硬件及网络_IT/计算机_...MINI-STM32超牛 组合学习套装采用 STM32F103RBT6...数据线 25脚 MISO 出 触摸中断输 10脚 DB07 ...  Device summary Reference Part number STM32F427VG, STM32F427ZG, STM32F427IG, STM32F427AG, STM32F427VI, STM32F427ZI, STM32F427II, STM32F427AI ...  ST STM32F072 ARM Cortex-M0 32位MCU解决方案_... 中文网:...tnid=207 图 19. TFT LCD 子板 MB895 电路图 ...  STM32F207的RTC模块笔记_计算机软件及应用_IT/计算机_专业资料。STM32F207的RTC模块笔记STM32F207 的 RTC 模块笔记 实时时钟介绍: ???STM32F207 的实时时钟...  中文文档 11.AN 年 5 月 STM32F10xxx LCD 面板驱动固件程序 英文...文档 软件 R2.0 Mar-2010 数据书册: 1.STM32F103CDE 增强型系列数据手册(2009...Product Information
Device Database&
Compliance Testing
Distributors
&&/&&Device Database&
STMicroelectronics&STM32F205RB
The STMicroelectronics STM32F205RB is a Core - ARM 32-bit Cortex-M3 CPU - 120 MHz maximum frequency, 150 DMIPS/1.25 DMIPS/MHz - Memory protection unit Memories - Up to 1 Mbyte of Flash memory - Up to 128 + 4 Kbytes of SRAM - Flexible static memory controller (supports Compact Flash, SRAM, PSRAM, NOR, NAND memories) - LCD parallel interface,
modes Clock, reset and supply management - 1.8 to 3.6 V application supply and I/Os - POR, PDR, PVD and BOR - 4 to 25 MHz crystal oscillator - Internal 16 MHz factory-trimmed RC - 32 kHz oscillator for RTC with calibration - Internal 32 kHz RC with calibration Low power - Sleep, Stop and Standby modes - VBAT supply for RTC, 20 × 32 bit backup registers optional 4 KB backup SRAM 3 × 12-bit, 0.5 us A/D converters - up to 24 channels - up to 6 MSPS in triple interleaved mode 2 × 12-bit D/A converters General-purpose DMA - 16-stream DMA controller centralized FIFOs and burst support Up to 17 timers - Up to twelve 16-bit and two 32-bit timers Debug mode - Serial wire debug (SWD) & JTAG interfaces - Cortex-M3 Embedded Trace Macrocell Up to 140 fast I/O ports with interrupt capability - 51/82/114/140 I/Os, all 5 V-tolerant Up to 15 communication interfaces - Up to 3 × I2C interfaces (SMBus/PMBus) - Up to 6 USARTs (7.5 Mbit/s, ISO 7816 interface, LIN, IrDA, modem control) - Up to 3 SPIs (30 Mbit/s), 2 with muxed I2S to achieve audio class accuracy - 2 × CAN interfaces (2.0B Active) - SDIO interface Advanced connectivity - USB 2.0 FS device/host/OTG controller with on-chip PHY - USB 2.0 HS/FS device/host/OTG controller with dedicated DMA on-chip FS PHY and ULPI - 10/100 Ethernet MAC with dedicated DMA supports IEEE 1588v2 hardware, MII/RMII 8- to 14-bit parallel camera interface - up to 27 Mbyte/s at 27 MHz or 48 Mbyte/s at 48 MHz CRC calculation unit, 96-bit unique ID Analog true random number generator.
Development ToolsCompiler, Assembler, Linker, Debugger
Evaluation Boards
&STMicroelectronics
JTAG Debuggers
SEGGER Microcontroller
Data Sheets
3,604,574&bytes
1,364,135&bytes
14,679,939&bytes
2,467,498&bytes
Header Files
547,361 bytes
FLASH Utilities
hse Electronic
SEGGER Microcontroller
Device Programmers
Dataman Programmers Ltd.
MDK MiddlewareThe following middleware components are pre-configured in MDK-Professional
Real-Time OS
Simulated Features
Simulation for this device is provided by the
default peripheral simulation driver.
Complete peripheral simulation
is not available and is not planned to be implemented by ARM.
Development Tools
Hardware & Collateral
Important information
This site uses cookies to store information on your computer. By continuing to use our site, you consent to our .
Don't show this message again
Privacy Policy Update
ARM’s Privacy Policy has been updated. By continuing to use our site, you consent to ARM’s Privacy Policy. Please review our
to learn more about our collection, use and transfers
of your data.
Accept and hide this message
/dd/chipinfo.aspSTM32F205ZET6(基于ARM的32位MCU,150DMIPs,高达1 MB闪存/1284KB RAM,USB OTG HS/ FS,以太网,17的TIM,3的ADC,15通讯。接口和摄像头)中文资料_供应/采购STM32F205ZET6_买卖IC网
>> STM32F205ZET6(基于ARM的32位MCU,150DMIPs,高达1 MB闪存/1284KB RAM,USB OTG HS/ FS,以太网,17的TIM,3的ADC,15通讯。接口和摄像头)
相关元件资料:
查看更多资料:21ic官方微信-->
后使用快捷导航没有帐号?
查看: 3048|回复: 13
再次请教香主STM32的CAN问题
&&已结帖(20)
主题帖子积分
中级工程师, 积分 3001, 距离下一级还需 1999 积分
中级工程师, 积分 3001, 距离下一级还需 1999 积分
主题帖子积分
专家等级:结帖率:87%
主题帖子积分
中级工程师, 积分 3001, 距离下一级还需 1999 积分
中级工程师, 积分 3001, 距离下一级还需 1999 积分
上周就已经把CAN通讯调通了,不管是查询模式还是中断模式都跑的很好,这周给板子加了个UCOS,2.86版本的。然后把CAN通讯加上去,CAN数据死活发不出来。用lookback模式自测,发现可以收到自己发出去的数据,但是用示波器测试发送脚,就是没见到波形,晚上突然有一次看到了波形,对着波形看数据,确实是我发出去的数据,害我纳闷半天,我什么都没改,怎么就好了,断电重启,又不行了,唯一好了一次,我晕。
刚开始怀疑硬件问题,用原来的裸奔程序,CAN通讯就是OK的,硬件应该不会有问题了,问题应该就是出在我移植的UCOS上面,其实也不是移植,官方有现成的,我直接把UCOS那个文件夹就是核心的那块与处理器无关的加了进来,还有ports文件夹加了进来,改了2个中断向量,一个systick的,一个pendsv的,架构和我以前的裸奔程序是一样,在UCOS创建了几个任务,如点灯,LCD,按键,串口发送,接收(串口都是用的中断模式)都没有任何问题,就是CAN通讯死活不行,在发送脚上用示波器测,半点数据都没有,看香主或者其他兄弟有没有碰到过这种情况。
简单点说,就是用lookback模式,程序里面自己可以接收到自己发的数据,但是tx脚就是不出数据(搞的我都以为我用的是静默方式了),各位兄弟碰到过没?
满意回复+20
跟UCOS无关。从症状上来看,应该是CAN的发送引脚跟某些其它外设共用了引脚,导致CAN_TX不正常。其它外设不初始化,就可以找到问题了。 ...
专注ARM及linux性能优化
主题帖子积分
中级工程师, 积分 3001, 距离下一级还需 1999 积分
中级工程师, 积分 3001, 距离下一级还需 1999 积分
主题帖子积分
专家等级:结帖率:87%
主题帖子积分
中级工程师, 积分 3001, 距离下一级还需 1999 积分
中级工程师, 积分 3001, 距离下一级还需 1999 积分
贴下代码,有用过的兄弟帮忙看下
#define GPIO_CAN& && && && && && & GPIOB
#define RCC_APB2Periph_GPIO_CAN& & RCC_APB2Periph_GPIOB
#define GPIO_Pin_RX& && && && && & GPIO_Pin_8
#define GPIO_Pin_TX& && && && && & GPIO_Pin_9
#define GPIO_Remap_CAN& && && && & GPIO_Remap1_CAN1
void CAN_init(void)
&&//&&NVIC_InitTypeDef NVIC_InitS
& & GPIO_InitTypeDef GPIO_InitS& &&&
& && &// 首先打开电源及时钟
& & /* GPIO for CAN and GPIO for LEDs clock enable */
& & RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO |RCC_APB2Periph_GPIO_CAN, ENABLE);
& & /* CAN1 Periph clock enable */
& & RCC_APB1PeriphClockCmd(RCC_APB1Periph_CAN1, ENABLE);
& & /* Enable CAN1 RX0 interrupt IRQ channel */
//& &NVIC_InitStructure.NVIC_IRQChannel = USB_LP_CAN1_RX0_IRQn;
& & //&&NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;
//& &NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;
//& &NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
//& &NVIC_Init(&NVIC_InitStructure);
& & // 然后配置pin
& & /* Configure CAN pin: RX */
& & GPIO_InitStructure.GPIO_Pin = GPIO_Pin_RX;
& & GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;
& & GPIO_Init(GPIO_CAN, &GPIO_InitStructure);
& & /* Configure CAN pin: TX */
& & GPIO_InitStructure.GPIO_Pin = GPIO_Pin_TX;
& & GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
& & GPIO_Init(GPIO_CAN, &GPIO_InitStructure);
& & // 映射下
& & GPIO_PinRemapConfig(GPIO_Remap_CAN , ENABLE);
& & // 查询方式初始化
& & CAN_Polling_init();
专注ARM及linux性能优化
主题帖子积分
中级工程师, 积分 3001, 距离下一级还需 1999 积分
中级工程师, 积分 3001, 距离下一级还需 1999 积分
主题帖子积分
专家等级:结帖率:87%
主题帖子积分
中级工程师, 积分 3001, 距离下一级还需 1999 积分
中级工程师, 积分 3001, 距离下一级还需 1999 积分
然后是设置速率和过滤器
&&* @brief&&Configures the CAN, transmit and receive by polling
&&* @param&&None
&&* @retval : PASSED if the reception is well done, FAILED in other case
void CAN_Polling_init(void)
&&CAN_InitTypeDef& && &&&CAN_InitS
&&CAN_FilterInitTypeDef&&CAN_FilterInitS
&&/* CAN register init */
&&CAN_DeInit(CAN1);
//&&CAN_StructInit(&CAN_InitStructure);
&&/* CAN cell init */&&// 36M 250k速率
&&CAN_InitStructure.CAN_TTCM=DISABLE;
&&CAN_InitStructure.CAN_ABOM=DISABLE;
&&CAN_InitStructure.CAN_AWUM=DISABLE;
&&CAN_InitStructure.CAN_NART=DISABLE;
&&CAN_InitStructure.CAN_RFLM=DISABLE;
&&CAN_InitStructure.CAN_TXFP=DISABLE;
&&CAN_InitStructure.CAN_Mode=CAN_Mode_LoopB
&&CAN_InitStructure.CAN_SJW=CAN_SJW_1
&&CAN_InitStructure.CAN_BS1=CAN_BS1_12
&&CAN_InitStructure.CAN_BS2=CAN_BS2_3
&&CAN_InitStructure.CAN_Prescaler=9;
&&CAN_Init(CAN1, &CAN_InitStructure);
&&/* CAN filter init */
&&CAN_FilterInitStructure.CAN_FilterNumber=0;
&&CAN_FilterInitStructure.CAN_FilterMode=CAN_FilterMode_IdM
&&CAN_FilterInitStructure.CAN_FilterScale=CAN_FilterScale_32
&&CAN_FilterInitStructure.CAN_FilterIdHigh=0x0000;
&&CAN_FilterInitStructure.CAN_FilterIdLow=0x0000;
&&CAN_FilterInitStructure.CAN_FilterMaskIdHigh=0x0000;
&&CAN_FilterInitStructure.CAN_FilterMaskIdLow=0x0000;
&&CAN_FilterInitStructure.CAN_FilterFIFOAssignment=0;
&&CAN_FilterInitStructure.CAN_FilterActivation=ENABLE;
&&CAN_FilterInit(&CAN_FilterInitStructure);
专注ARM及linux性能优化
主题帖子积分
中级工程师, 积分 3001, 距离下一级还需 1999 积分
中级工程师, 积分 3001, 距离下一级还需 1999 积分
主题帖子积分
专家等级:结帖率:87%
主题帖子积分
中级工程师, 积分 3001, 距离下一级还需 1999 积分
中级工程师, 积分 3001, 距离下一级还需 1999 积分
然后是查询发送的方式
TestStatus CAN_Polling(void)
&&CanTxMsg TxM
&&CanRxMsg RxM
&&uint32_t i = 0;
&&uint8_t TransmitMailbox = 0;
&&/* transmit */
&&TxMessage.StdId=0x6f1;
&&TxMessage.RTR=CAN_RTR_DATA;
&&TxMessage.IDE=CAN_ID_STD;
&&TxMessage.DLC=4;
&&TxMessage.Data[0]=0x40;
&&TxMessage.Data[1]=0x02;
&&TxMessage.Data[2]=0x1a;
&&TxMessage.Data[3]=0x80;
&&TransmitMailbox=CAN_Transmit(CAN1, &TxMessage);
// while((CAN_TransmitStatus(CAN1, TransmitMailbox) != CANTXOK) && (i != 0xFF))
&&while((CAN_TransmitStatus(CAN1, TransmitMailbox) != CANTXOK) && (i &= 1000))
&&printf(&1i is %d\r\n&,i);
&&while((CAN_MessagePending(CAN1, CAN_FIFO0) & 1) && (i != 0xFF))
& &printf(&2i is %d\r\n&,i);
&&/* receive */
&&RxMessage.StdId=0x00;
&&RxMessage.IDE=CAN_ID_STD;
&&RxMessage.DLC=0;
&&RxMessage.Data[0]=0x00;
&&RxMessage.Data[1]=0x00;
&&CAN_Receive(CAN1, CAN_FIFO0, &RxMessage);
// printf(&RxMessage.StdId is 0x%x,RxMessage.DLC is 0x%x,RxMessage.Data[0] is 0x%x,RxMessage.Data[1] is 0x%x\r\n&,
//& && && &RxMessage.StdId,RxMessage.DLC,RxMessage.Data[0],RxMessage.Data[1]);
&&if (RxMessage.StdId!=0x6f1)
& & return FAILED;&&
&&if (RxMessage.IDE!=CAN_ID_STD)
& & return FAILED;
&&if (RxMessage.DLC!=4)
& & return FAILED;&&
&&if ((RxMessage.Data[0]&&8|RxMessage.Data[1])!=0x4002)
& & return FAILED;
&&return PASSED; /* Test Passed */
专注ARM及linux性能优化
主题帖子积分
中级工程师, 积分 3001, 距离下一级还需 1999 积分
中级工程师, 积分 3001, 距离下一级还需 1999 积分
主题帖子积分
专家等级:结帖率:87%
主题帖子积分
中级工程师, 积分 3001, 距离下一级还需 1999 积分
中级工程师, 积分 3001, 距离下一级还需 1999 积分
这段测试程序放到裸奔程序没有任何问题。
采用lookback方式打印出来接收到的数据也没有问题,用示波器测试CAN的发送脚就是没有任何数据,一直为高电平3.3V。
专注ARM及linux性能优化
主题帖子积分
资深技术员, 积分 455, 距离下一级还需 45 积分
资深技术员, 积分 455, 距离下一级还需 45 积分
主题帖子积分
专家等级:结帖率:55%
主题帖子积分
资深技术员, 积分 455, 距离下一级还需 45 积分
资深技术员, 积分 455, 距离下一级还需 45 积分
关注,我也准备实验这段程序
21ic公开课,21ic网友共同的学习圈子!学单片机、嵌入式、模拟、电源……就看这里
移步更多21ic独家微课:
主题帖子积分
资深工程师, 积分 11272, 距离下一级还需 8728 积分
资深工程师, 积分 11272, 距离下一级还需 8728 积分
主题帖子积分
专家等级:结帖率:75%
主题帖子积分
资深工程师, 积分 11272, 距离下一级还需 8728 积分
资深工程师, 积分 11272, 距离下一级还需 8728 积分
跟UCOS无关。从症状上来看,应该是CAN的发送引脚跟某些其它外设共用了引脚,导致CAN_TX不正常。其它外设不初始化,就可以找到问题了。
21ic公开课,21ic网友共同的学习圈子!学单片机、嵌入式、模拟、电源……就看这里
移步更多21ic独家微课:
主题帖子积分
实习生, 积分 3, 距离下一级还需 47 积分
实习生, 积分 3, 距离下一级还需 47 积分
主题帖子积分
专家等级:结帖率:0%
主题帖子积分
实习生, 积分 3, 距离下一级还需 47 积分
实习生, 积分 3, 距离下一级还需 47 积分
你LINUX驱动搞的怎么样了?
21ic公开课,21ic网友共同的学习圈子!学单片机、嵌入式、模拟、电源……就看这里
移步更多21ic独家微课:
主题帖子积分
中级工程师, 积分 3001, 距离下一级还需 1999 积分
中级工程师, 积分 3001, 距离下一级还需 1999 积分
主题帖子积分
专家等级:结帖率:87%
主题帖子积分
中级工程师, 积分 3001, 距离下一级还需 1999 积分
中级工程师, 积分 3001, 距离下一级还需 1999 积分
问题解决了。的确跟UCOS没有关系,也跟其他引脚没有关系,设置CAN发送脚时,加了个
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
就可以用了,折腾了我2天,天啊。
专注ARM及linux性能优化
主题帖子积分
中级工程师, 积分 3001, 距离下一级还需 1999 积分
中级工程师, 积分 3001, 距离下一级还需 1999 积分
主题帖子积分
专家等级:结帖率:87%
主题帖子积分
中级工程师, 积分 3001, 距离下一级还需 1999 积分
中级工程师, 积分 3001, 距离下一级还需 1999 积分
裸机跑的时候不加也没有问题,奇怪。我用的是3.0的版本,最新的版本好像已经加了这句。
看样子得用最新的库了,哪位兄弟提供个链接?
专注ARM及linux性能优化
主题帖子积分
中级工程师, 积分 3001, 距离下一级还需 1999 积分
中级工程师, 积分 3001, 距离下一级还需 1999 积分
主题帖子积分
专家等级:结帖率:87%
主题帖子积分
中级工程师, 积分 3001, 距离下一级还需 1999 积分
中级工程师, 积分 3001, 距离下一级还需 1999 积分
你LINUX驱动搞的怎么样了?
alexbank 发表于
搞的怎么样什么意思啊,呵呵
专注ARM及linux性能优化
主题帖子积分
高级技术员, 积分 700, 距离下一级还需 300 积分
高级技术员, 积分 700, 距离下一级还需 300 积分
主题帖子积分
专家等级:结帖率:25%
主题帖子积分
高级技术员, 积分 700, 距离下一级还需 300 积分
高级技术员, 积分 700, 距离下一级还需 300 积分
CAN_Mode_LoopBack模式时,信号不会发送到TX引脚上,
你将模式改为正常模式
21ic公开课,21ic网友共同的学习圈子!学单片机、嵌入式、模拟、电源……就看这里
移步更多21ic独家微课:
主题帖子积分
中级工程师, 积分 3001, 距离下一级还需 1999 积分
中级工程师, 积分 3001, 距离下一级还需 1999 积分
主题帖子积分
专家等级:结帖率:87%
主题帖子积分
中级工程师, 积分 3001, 距离下一级还需 1999 积分
中级工程师, 积分 3001, 距离下一级还需 1999 积分
谢谢LS的回答,此问题已经解决,对stm32的CAN的lookback的理解,你可能有些问题,可以去看看STM32关于lookback方式的定义,:)
专注ARM及linux性能优化
主题帖子积分
中级技术员, 积分 150, 距离下一级还需 150 积分
中级技术员, 积分 150, 距离下一级还需 150 积分
主题帖子积分
专家等级:结帖率:40%
主题帖子积分
中级技术员, 积分 150, 距离下一级还需 150 积分
中级技术员, 积分 150, 距离下一级还需 150 积分
哥哥我爱死你了 ,我就是这个问题 一摸一样的,看了你的帖子使我茅塞顿开
帮我大忙了,但是不知道为什么,原来的库不加也没事?
21ic公开课,21ic网友共同的学习圈子!学单片机、嵌入式、模拟、电源……就看这里
移步更多21ic独家微课:
精华达人奖章
等级类勋章
湍急之河流
发帖类勋章
时间类勋章
技术奇才奖章
人才类勋章
涓涓之细流
发帖类勋章
时间类勋章
技术领袖奖章
人才类勋章
核心会员奖章
等级类勋章
坚毅之洋流
发帖类勋章}

我要回帖

更多关于 鸡蛋香肠塞进女主下体 的文章

更多推荐

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

点击添加站长微信