新手必看,关于STM32其他问题
1、使用JTAG download程序至STM32F205XX(with Cortex-M3)
问:�教各位先�M,若欲使用JTAG interface下�d程序至STM32F205XX的板子,似乎一般是透�^SEGGER的J-link,是否可使用其他的JTAG-USB下�d�如Altera出的USB Blaster?
又是否只要符合JTAG��的�鬏��皆可?
答1:只要支持M3并且支持STM32F2XX系列就可以,不一定非要JTAG,也可以使用SWD。
答2:ARM KEIL ULINK也行,兼容性非常好呀!
2、STM32触摸屏
问:我想用STM32来触摸一款触摸屏,因为我现在还不了解STM32以及触摸屏,所以我想问一下,具体用那款单片机型号最好? 最好是STM32内部已经具有触摸屏的控制器了。屏有没有数据传输总线是32位的,正好和单片机总线一样 。另要求屏的色彩深度也是32位或者是24位。3.2寸左右,这个可大也可小点。 能不能也推荐一款触摸屏的型号,以及相关资料。
答:1、这个需要根据显示屏来决定,市场上也有很多触摸的显示屏,STM32可以用过SPI、FMCS、IO口等来控制,这个要看你选择的类型 2、型号和资料,这个要找厂家要,厂家一半都会给你合适的建议和 源代码。
3、STM32可以做什么
问:学习了STM32可以做什么?有什么用途或者前途,请告诉,不胜感谢。
答:可以用的方面比较多,比如工业、消费、医疗等。这个要根据产品的需求来决定使用的芯片。
4、STM32F2X系列能能驱动多大尺寸TFTLCD呢?用FSMC模式
问:STM32F2X系列能能驱动多大尺寸TFTLCD呢?用FSMC模式,显示简单的菜单,参数等操作
答:这个没有具体的参数,个人认为10.0一下都没问题。
5、VDD与VSS的去藕电容如何处理?
问:VDD与VSS的去藕电容如何处理?
答:1、每对VDD与VSS都必须在尽可能靠近芯片处分别放置一个10nF~100nF的高频瓷介电容 2、在靠近VDD3和VSS3的地方放置一个4.7μF~10μF的钽电容或瓷介电容
6、系统时钟的监控和切换的作用是什么?
问:系统时钟的监控和切换的作用是什么?
最佳答案:STM32作为一个可靠稳定的微处理器,但是不能排除由于某些外界特殊因素可能造成STM32的外部振荡器失效,所以在芯片中需要一种包含机制能够在STM32运行时,一旦外部晶体振荡器(HSE)失效,切换STM32的系统时钟源到一个稳定的时钟源,以保证STM32能够继续运行,并进行相应的保护操作。
7、PVD的作用是什么?
答:在应用开发中,通常都要考虑到当系统电压下降或掉电状况,一旦出现该状况应对控制系统加以保护。故在程序中需要加入对系统电压的监控。当供电电压降低到某一电压值时,需要系统进入特别保护状态,执行紧急关闭任务:对系统的一些数据保存起来,同时对外设进行相应的保护操作。
8、STM32的三种低功耗模式是什么?
答:1、睡眠模式Sleep:电压调节器开启,Cortex-M3内核停止运行,外设保持运行态; 2、停止模式Stop:电压调节器可选择性开启,所有外设时钟、PLL、HSI和HSE被关闭,Cortex-M3内核和所有外设停止运行,保留SRAM和寄存器的内容; 3、待机模式Standby:电压调节器关闭、整个1.8v区域断电。除了备份区域和待机电路的寄存器以外,SRAM和寄存器的内容全部丢失。
9、STM32103RB的TIM2 channel1以及UART2的CTS都是PA0 pin, 他们是怎么区分的?
答:IC的一根管脚,做多种外设的复用pin,很常见,在PA0上,只能作为一种外设的管脚,但两个外设能同时用吗,当然是可以的。可以设置STM32中有的寄存器AFIO_MAPR来配置复用管脚及外设接口的重新映射,比如你选择PA0为UART2的CTS,PA0肯定不能再作为TIM2的channel1,但可以设置TIM2的channel1的管脚为PA15,请参考如下寄存器说明: Bits 9:8 TIM2_REMAP[1:0]: TIM2 remapping These bits are set and cleared by software. They control the mapping of TIM2 channels 1 to 4 and external trigger (ETR) on the GPIO ports. 00: No remap (CH1/ETR/PA0, CH2/PA1, CH3/PA2, CH4/PA3) 01: Partial remap (CH1/ETR/PA15, CH2/PB3, CH3/PA2, CH4/PA3) 10: Partial remap (CH1/ETR/PA0, CH2/PA1, CH3/PB10, CH4/PB11) 11: Full remap (CH1/ETR/PA15, CH2/PB3, CH3/PB10, CH4/PB11)
10 CSMA/CA算法
问:STM32W108CBU64执行一次CSMA/CA算法是延时多长时间?
RadioTransmitConfig radioTransmitConfig = {
TRUE, //waitForAck
TRUE, //checkCca
RADIO_CCA_ATTEMPT_MAX_DEFAULT, //ccaAttemptMax
RADIO_BACKOFF_EXPONENT_MIN_DEFAULT, //backoffExponentMin
RADIO_BACKOFF_EXPONENT_MAX_DEFAULT, //backoffExponentMax
TRUE //appendCrc
};
答1:更简单的可以设置两个断点,看下右下方的运行时间,就知道了!
答2:这个没有计算过,你可以在计算前加个定时器获取值,计算完以后再获取一下定时器的值,这样就知道时间了。
11、STM32F4系列软件仿真问题
问:STM32F4系列能用Keil4.54,的debug进行软件仿真吗? 我一仿真,程序指针跳到0x00000000处。很奇怪
而且peripherals菜单选项没有了。 请问这是怎么回事?
答:可以。说明你程序有错误,而不能跳到启动。你应该下载一个最新的KEIL
12、进入SLEEP模式的省电要操作哪些流程?
问:进入SLEEP模式的省电要操作哪些流程?
最佳答案:
1、关闭无需等待中断或事件的外设时钟;
2、设置进入机制(Sleep-Now或Sleep-on-Exit);
3、设置系统进入SLEEP模式。
13、STM32W 的 wireshark 用Mxchip 的ADK-DK 可以充当吗?
问:STM32W 的 wireshark 用Mxchip 的ADK-DK 可以充当吗?
答:Wireshark 抓包器需配合MXCHIP的sniffer-W使用,ADK-DK无法充当。
14、STM8A不能从CAN接收中断中唤醒Halt模式
问1:我是做车载CAN通信的,使用STM8AF51AA的MCU,但是发现CAN接收中断不能唤醒Halt模式,但是改成Wait模式就可以唤醒,Walt模式的功耗过高,不符合车厂的要求。说明书上是说两种都可以唤醒的,我现在不知道是我的设计有问题还是芯片不支持,哪位大虾遇到这种情况的,可以跟大家一起分享吗?谢谢啦!
答1:1、WKUIE中断开启了吗? 2、支持该功能,你怎么判断他没有进入唤醒?第一包的数据会丢失。
问2::WKUIE中断已经开启,因为我在Wait模式下可以正常唤醒,所以中断设置是正常的,我在中断函数里面打个断点,等待中断的到来。
答2:这个时候仿真不管用。你最好使用LED和串口调试信息
15、F0 discovery 固件库在IAR6.0上运行时提示错误
问:IAR ELF Linker V6.40.3.54009/W32 for ARM
Copyright 2007-2012 IAR Systems AB.
Error[Li005]: no definition for "SYSCFG_EXTILineConfig" [referenced from F:新建文件夹STM32F0系列测试程序Test1DebugObjstm32f0_discovery.o]
是哪里的问题呢?我运行demo就无错误
Error[Li005]: no definition for "EXTI_Init" [referenced from F:新建文件夹STM32F0系列测试程序Test1DebugObjstm32f0_discovery.o]
2 358 bytes of readonly code memory
90 bytes of readonly data memory
1 057 bytes of readwrite data memory
Errors: 2
Warnings: none
Link time: 0.05 (CPU) 0.05 (elapsed)
Error while running Linker
Total number of errors: 2
Total number of warnings: 0
答:说明这2个没有被定义,请仔细看一下,是否正确定义。
16、系统时钟的监控和切换的作用是什么?
问:系统时钟的监控和切换的作用是什么?
最佳答案:STM32作为一个可靠稳定的微处理器,但是不能排除由于某些外界特殊因素可能造成STM32的外部振荡器失效,所以在芯片中需要一种包含机制能够在STM32运行时,一旦外部晶体振荡器(HSE)失效,切换STM32的系统时钟源到一个稳定的时钟源,以保证STM32能够继续运行,并进行相应的保护操作。
17、STM32W108CBU64执行一次CSMA/CA算法是延时多长时间?
问: RadioTransmitConfig radioTransmitConfig = {
TRUE, //waitForAck
TRUE, //checkCca
RADIO_CCA_ATTEMPT_MAX_DEFAULT, //ccaAttemptMax
RADIO_BACKOFF_EXPONENT_MIN_DEFAULT, //backoffExponentMin
RADIO_BACKOFF_EXPONENT_MAX_DEFAULT, //backoffExponentMax
TRUE //appendCrc
};
最佳答案:更简单的可以设置两个断点,看下右下方的运行时间,就知道了!
18、STM32F407和Android系统的平板电脑通讯问题
问:请问我想用stm32f407的usb和Android系统的平板电脑通讯,现在我知道在xp和w7系统下都可以做到,那在Android下能兼容吗?如果不兼容都需要做哪些工作呢?希望能进快给我答复谢谢。
答1:按照android的通讯协议做就可以。
答2:这个方向我也正在做、已经琢磨了很长时间了、有难度、关键是硬件不懂软件、软件不懂硬件还有协议的问题、后来考虑了个方法但是还没有实施你可以实施看、用stm32枚举成U盘、将你要表达的
协议写成文件格式、你需要收的文件也由android做成文件、以文件的形式来交互协议
19、关于100Pin MCU FSMC的应用咨询
问:根据ST datasheet描述,100pin mcu 的fsmc只支持NE1和NCE2,意味着只能外挂Nor/PSRAM和无中断功能的Nand,并且低地址A[15:0]和D[15:0]是复用方式。
请问:
1:NADV信号是否只有在Nor模式下才能有效输出锁存信号,而在SRAM模式下输出无效信号?
2:如果外挂一颗IS64LV25616这样的SRAM,该如何将复用的A和D分开?
3:如果使用100pin这样的FSMC,是否一定要外加地址锁存器,诸如74XX573这样的芯片才能将复用的A和D分开?
4:如果使用100pin这样的FSMC,市场上有没有与之对应的Nor和SRAM,可以自己解锁出总线上的A和D,ST有没有这样的chip?
答:1、我要看看手册 2、AD复用,也就是只能用1个 3、最好加锁存器 4、有对应SRAM,这个你可以参考各个开发的设计
20、stm32F207的相关资料从何处下载?
问:stm32F207的相关资料从何处下载?比如说,库函数,应用说明,时钟等等。最近做项目要使用stm32F207,但对这款芯片了解甚少。
答:您好,这个可以到社区的资料下载。或者到官方网站的F20X资料区下载。
22、用内部HSI时钟时,外部时钟引脚应该悬空还是接地?
问:用内部HSI时钟时,外部时钟引脚应该悬空还是接地?
最佳答案:悬空。接地都可以。最好是接地
23、stm32f103c8t6芯片烧写问题
问:如题芯片首次jlink烧写程序没有任何问题,第二次烧写,jlink就不能识别,请问什么原因?
现在是第一次连接上jlink以后,jlink就出现问题了,直接显示是红灯了还有一个问题,jtag的上拉下拉电阻是不是可以不接?还有32.768Khz的晶振是不是也可以没有?
答:第一次烧录时应该是空的IC吧,没有烧录过任何CODE吧。用JLINK烧录完成后会自动断开连接,如果你没有对BOOT进行设置就不能再次烧录。BOOT设置可以查看DATA SHEET。
24、CPU休眠后无法唤醒
问:CPU休眠后,RTC无法让它唤醒,外部触发也不能唤醒,示波器测试小晶振,有正常的波形
答:这种情况也有可能是因为你对数组或者指针操作的时候引起的程序错误,而进入硬件错误中断。
25、请问STM32W108CBU64可以构成星型网络吗?
问:可以组成多少个子节点?
最佳答案:一个局域网可以有很多电脑,只要IP地址不一样就可以
26、请问各位大虾STM32F207的Camera接口支持ITU-R BT.656格式的数据输入吗?
问:本人想通过TVP5150将复合视频信号转为ITU-R BT.565后,经STM32F207的Camera接口送到LCD显示,不知道是否能实现,请各位指教。
答:可以,但是效果不是很好。毕竟频率才72Mhz。
27、LWIP和freertos的移植问题
问:请教大家一个问题,我现在想做lwip和freertos的移植,我在金牛 STM32F107_ETH_LwIP_V1.0.0例程的基础之上移植了freertos,为了验证我的系统移植没 有问题,首先我通过利用二值信号量的方式,实现了按键中断等简单程序,在这些都成功的情况下我把System_Periodic_Handle();做在了一个任务函数中,调用这个任务希 望实现telnet等基本功能,总是失败,最后我发现是不能进入总是进不去
EXTI2_IRQHandler(void)中断。我把中断这一块屏蔽了,在任务函数中加入
if (ETH_GetRxPktSize()!=0)
{
LwIP_Pkt_Handle();
}
这样就发现没有问题了,各项功能都能实现。为什么加上系统之后外部中断没有问题而网络中断不能进入,需要修改其他方面设置吗? 我又在官网(stmcu.org)上下载了STM32F107通过以太网实现在程序中编程(IAP) 就 是an3226.进行了简单的修改能在金牛板子上运行了。首先我将例程修改为通过 EXTI2_IRQHandler(void)中断实现TELNET,这样成功,这说明我对EXTI2_IRQHandler (void)的初始化是成功了。再次基础之上又做了freertos的移植,但是还是不成功。 在freertos下如何设置中断才能进如
void ETH_IRQHandler(void),还有什么方面存 在问题。菜鸟一个问的条理性不太好希望有人帮忙,万分感激。
答:这个问题发生的远不能因是你没有处理好中断,你还是处理一下吧.注意系统中中断向量列表处理。
28、stm32f107广域网互联
问:利用两块STM32F107开发板,分别置于两个不同的地区,如何通过公网建立通信,传输语音和其他的一些控制信息 是不是还要用到路由器之类的
答:如果你的距离不超过100米,可以直接用以太网连接,如果超过,就需要走网络了。如宽带,GPRS等。
29、关于LWIP和freertos的问题
问:请教大家一个问题,我现在想做lwip和freertos的移植,我在金牛 STM32F107_ETH_LwIP_V1.0.0例程的基础之上移植了freertos,为了验证我的系统移植没 有问题,首先我通过利用二值信号量的方式,实现了按键中断等简单程序,在这些都成 功的情况下我把System_Periodic_Handle();做在了一个任务函数中,调用这个任务希
望实现telnet等基本功能,总是失败,最后我发现是不能进入总是进不去 EXTI2_IRQHandler(void)中断。
我把中断这一块屏蔽了,在任务函数中加入
if (ETH_GetRxPktSize()!=0)
{
LwIP_Pkt_Handle();
}
这样就发现没有问题了,各项功能都能实现。为什么加上系统之后外部中断没有问题而 网络中断不能进入,需要修改其他方面设置吗? 我又在官网(stmcu.org)上下载了STM32F107通过以太网实现在程序中编程(IAP) 就 是an3226.进行了简单的修改能在金牛板子上运行了。首先我将例程修改为通过 EXTI2_IRQHandler(void)中断实现TELNET,这样成功,这说明我对EXTI2_IRQHandler (void)的初始化是成功了。再次基础之上又做了freertos的移植,但是还是不成功。 在freertos下如何设置中断才能进如voidETH_IRQHandler(void),还有什么方面存 在问题。菜鸟一个问的条理性不太好希望有人帮忙,万分感激~~~
答:这个问题发生的远不能因是你没有处理好中断,你还是处理一下吧.注意系统中中断向量列表处理.
30、keil环境下,如何将函数定义到指定的FLASH地址
问:keil环境下,如何将函数定义到指定的FLASH地址?定义常量变量到指定地址我知道可以通过__attribute__((at(addr))),但是函数的定义不会啊!
答:#program ROM 类似的语句,详情你可以参考帮助
31、STM32103 USART1死机
问:
void USART_Receive(USART_TypeDef* USARTx)
{
if (USART_GetFlagStatus(USARTx,USART_FLAG_RXNE)==SET)
{
USART_ClearFlag(USARTx,USART_FLAG_RXNE);
s[0]=USART_ReceiveData(USART1);
delay(1000);
s[1]=USART_ReceiveData(USART1);
delay(1000);
s[2]=USART_ReceiveData(USART1);
delay(1000);
write_char(s[0],s[1],s[2]); //发送数据到PC
//if(s[0]==0xff){GPIO_WriteBit(GPIOE,GPIO_Pin_0,Bit_SET);} // //write_char(s[0],s[1],s[2]);
// query_uart_command(); //命令判断
}
}
上面程序在
发送FF的时候收到FF FF FF
发送FF 22的时候收到FF 22 22
发送FF 22 33时收到FF 22 22
之后再发送数据时串口不响应!!!
最佳答案:
stm32串口有个可以说是bug的地方,就是即使不使能溢出等其他错误中断的情况下,若发生溢出错误,仍会进入中断,而且常规检查中断的方法无法查到中断标志。所以办法就是在串口正常中断处理之后加清除中断的语句。具体网上可以找到。之前因为这个原因,程序经常死掉,结果是死在串口中断处理里,不停中断,有没有清除中断标志哦。
32、关于STM32读取陀螺仪的是电压值,怎么经过积分变成角度的问题
问:请问下,STM32读取陀螺仪的是电压值,怎么经过积分变成角度?而且积分函数怎么写呢?
答:陀螺仪有个参数a,叫做灵敏度,单位是(°/s/V),有个参数b,叫静止电压,单位是(V).
你写的程序有个参数叫做采样率c,单位是(S/s),有一个叫做ADC基准d,单位(V),有一个叫做ADC分辨率e,没有量纲,还有一个ADC输入值f.
知道什么叫做积分,什么叫做微分吗?能够不背概念,按照自己的理解说一遍吗? 假设,每次采样的u分别为u1,u2,u3,...u1000,
令v=u1+u2+u3+...+u1000,v就是从u1到u1000的采样时间内角度的偏差. 就是从采u1到采u1000期间,陀螺仪转过的。
33、STM32F107可以和TI的无线接发模块CC2520配合使用吗?
问:STM32F107可以和TI的无线接发模块CC2520配合使用吗?如果可以,可以怎么实现呢?烦请各位大侠多多赐教!小弟刚刚接触这方面的内容。再次拜谢!
答:无线接发模块CC2520是什么接口,i2c,UART,SPI?主要是看接口支不支持。。
34、关于STM32自带的bootloader的功能
问:STM32F107:memory mapping地址0x00000000-0x0003FFFF中存放的是什么?如果是历程,则主要是做什么功能,这段程序能不能被读出?
答:在系统复位后,SYSCLK的第4个上升沿,BOOT引脚的值将被锁存。用户可以通过设置BOOT1和BOOT0引脚的状态,来选择在复位后的启动模式。 在从待机模式退出时,BOOT引脚的值将被被重新锁存;因此,在待机模式下BOOT引脚应保持为需要的启动配置。在启动延迟之后,CPU从地址0x0000 0000获取堆栈顶的地址,并从启动存储器的0x0000 0004指示的地址开始执行代码。这段代码被固定在MCU内,不能通过外部来修改。
35、关于STM32的代码加密问题
问:产品选用STM32F103,目前电路设计仅留了20pin的JTAG口。请问一下该如何加密。据说如果采用JLINK的secure选项加密,JLINK以后是无法识别和擦除的,请问一下该如何加密。目前串口、RST、BOOT脚单板上没有预留。谢谢。
答:Jlink加密以后,将不能读取FLASH中的内容,但是可以通过JFlashARM先将FLASH擦除掉,再进行新的程序烧写。
36、VDD与VSS的去藕电容如何处理?
问:VDD与VSS的去藕电容如何处理?
答:1、每对VDD与VSS都必须在尽可能靠近芯片处分别放置一个10nF~100nF的高频瓷介电容 2、在靠近VDD3和VSS3的地方放置一个4.7μF~10μF的钽电容或瓷介电容
37、stm32f107 每次ping通要重上电
问:您好,请教一下,107的芯片,phy是lan8700,仿照STM32F107_LK做的硬件,官方例程,mii模式,但是下载之后每次需要重新插拔电源才行,按下rst键或者下载都无法ping通,看了一下,phy初始化已经完成,不知道是哪里有问题,谢谢给分析下
答:应该是你发送完毕数据以后,没有结束。你仿真一下,PING完以后,下一次ping的时候,程序运行的状况。
至少你没有加PHY的reset,要不不会每次reset都无法ping通
38、仿真问题
问:keil4 STM32仿真里面怎样给USART1送入数据?
答:软件仿真的话,可以监视到USART1接收的数据。但要是给USART1送入数据的时候我一般用JLINK硬件仿真,加上电脑的串口助手发送。仿真中可以在USART1中设置断点查看数据是否发送成功(中断接收的时候)。
39、关于STM32 寄存器变量
问:STM32 寄存器变量 #define __IO volatile __IO uint32_t USART_Rx_Done = 0; USART_Rx_Done = 1;
怎样知道这个寄存器变量的地址,它是一个标志位 应该是有地址的 为什么在KEil中看不到
答:都在标准库里,你只能编译后,工程里包含的库文件才会出来,然后你选中寄存器变量,点右键,然后选择里面一个“涉及此参数”的选择。就可以找到地址了。
40、程序问题
问:SET == USART_GetFlagStatus(USART1, USART_FLAG_RXNE) 这句话是什么意思
答:当接收引脚有数据时,状态寄存器的USART_FLAG_RXNE就会为1,此时USART_GetFlagStatus(USART1, USART_FLAG_RXNE)的返回值就为1(SET),若无数据则为RESET,本语句一般用于while(SET == USART_GetFlagStatus(USART1, USART_FLAG_RXNE)),或if语句作为检测或判断条件
41、STM32重映射
问:为了使不同器件封装的外设I/O 功能的数量达到最优,可以把一些复用功能重新映射到其他一些脚上。这里的映射到其他脚上的意义是不是,假设GPIOA的PA1的复用功能是ADC1,那么是不是可以通过改变映射地址,将其映射到GPIOB的PB1上。
答:重映射的作用简单的说就是把管脚的外设功能映射到另一个管脚,但是不是可以随便映射的,具体对应关系参考手册上的管脚说明。比如USART2_TX默认在PA2管脚,当启用复用功能后就会将PD5管脚作为USART2_TX。另外也不是所有的管脚功能都能重映射,比如ADC1_IN0就只能在PA0。
42、STM32F417ZG批产烧程序
问:请问如何批量烧程序,源代码是不能给工人的,只能是编译好的二进制机器码。用的是正版的iar jlinkV8,找了几天没找到能够直接下载二进制的功能。uart串口方式烧写太麻烦了,而且产品不用串口。
答:可以,安装jlink的时候有一个J-Flash ARM的程序,这个可以直接烧写bin文件
技术咨询:廖老师 13687358291 QQ 3054605532