这款32的淘宝单片机碰触传感器在哪买啊,淘宝上不是新的stm32f107vc神舟四号开发板

意法半导体STM32/STM8技术社区 - 提供最新的ST资讯和技术交流
技术交流QQ群:
样片购买:400 800 8051
中国,日——意法半导体用于连接蜂窝物联网的STM32*探索套件今年早些时候首次亮相2018年嵌入式系统展会和亚洲物联网展会,现在,客户可以通过意法半导体全球分销网订购。该套件现有两款产品可选,每款产品都包含STM32L496探索板和集成Quectel调制解调器的STMod +蜂窝扩展板...
未回答未回答已回答已回答已回答已回答
Using FreeRTOS and libopencm3 instead of the Arduino software environment,
Get up and running programming the STM32 line using the hands-on information ...
第一部分“从0到1写RT-Thread内核”重点讲解RT-Thread的原理实现;第二部分“RTT内核...
Tel: 3-8064
备案号: 苏ICP备号-2查看: 452|回复: 0
stm32f107智嵌以太网IAP远程更新附源代码和说明文件
附IAP远程更新源代码和说明文件
0.png (42.73 KB, 下载次数: 0)
02:11 上传
0.jpg (44.69 KB, 下载次数: 3)
02:11 上传
0.png (278.96 KB, 下载次数: 3)
02:12 上传
单片机源程序如下:
/* Includes ------------------------------------------------------------------*/
#include &stm32_eth.h&
#include &netconf.h&
#include &main.h&
#include &helloworld.h&
#include &httpd.h&
#include &tftpserver.h&
#include &KEY.H&
#include &stdio.h&
#include &bkp.h&
#include &LED.H&
/* Private typedef -----------------------------------------------------------*/
/* Private define ------------------------------------------------------------*/
#define SYSTEMTICK_PERIOD_MS&&10
#ifdef __GNUC__
&&/* With GCC/RAISONANCE, small printf (option LD Linker-&Libraries-&Small printf
& &&&set to 'Yes') calls __io_putchar() */
&&#define PUTCHAR_PROTOTYPE int __io_putchar(int ch)
#else
&&#define PUTCHAR_PROTOTYPE int fputc(int ch, FILE *f)
#endif /* __GNUC__ */
/* Private macro -------------------------------------------------------------*/
/* Private variables ---------------------------------------------------------*/
__IO uint32_t LocalTime = 0; /* this variable is used to create a time reference incremented by 10ms */
uint32_
typedef&&void (*pFunction)(void);
pFunction Jump_To_User_A
uint32_t Jump_User_A
/* Private function prototypes -----------------------------------------------*/
void System_Periodic_Handle(void);
void IAP_httpd_init(void);
void IAP_tftpd_init(void);
void MY_NVIC_Configuration(void);
void NVIC_DeInit(void);
void BKP_Configuration(void);
void MCU_Reset(void);
void EARES_SRAM(void);
void NVIC_Configuration(void);
/* Private functions ---------------------------------------------------------*/
/**
&&* @brief&&Main program.
&&* @param&&None
&&* @retval None
&&*/
& && &&&
int main(void)
{
& && &&&unsigned int g_bUpdateFlag = 0;
& && &&&NVIC_DeInit();
& && &&&RCC_DeInit();& && &&&
& && &&&SystemInit();
& && &&&BKP_Configuration();
& && &&&NVIC_Configuration();
& && &&&SEI(); //开全局中断
& && &&&g_bUpdateFlag = BKP_ReadBackupRegister(BKP_DR9);&&//读取更新标志
& && &&&//if(!(KEY1 | KEY2 | KEY3 | KEY4)
& && &&&if(g_bUpdateFlag&&== 0x0)& &&&//不需要升级,
& && &&&{&&
& && && && && & /* Check if valid stack address (RAM address) then jump to user application */
& && && && && & if (((*(__IO uint32_t*)USER_FLASH_FIRST_PAGE_ADDRESS) & 0x2FFE0000 ) == 0x)
& && && && && & {
& && && && && && && && &CLI();& && && && && && && && &//关闭总中断,必须有、
& && && && && && && && &NVIC_DeInit();
& && && && && && && && &RCC_DeInit();
& && && && && && && && &/* Jump to user application */
& && && && && && && && &Jump_User_Address = *(__IO uint32_t*) (USER_FLASH_FIRST_PAGE_ADDRESS + 4);
& && && && && && && && &Jump_To_User_Application = (pFunction) Jump_User_A
& && && && && && && && &/* Initialize user application's Stack Pointer */
& && && && && && && && &__set_MSP(*(__IO uint32_t*) USER_FLASH_FIRST_PAGE_ADDRESS);
& && && && && && && && &Jump_To_User_Application();
& && && && && && && && &while (1);
& && && && && & }
& && && && && & else
& && && && && & {
& && && && && && && && &//printf(&非法SRAM\n&);
& && && && && & }
& && &&&}
& &
& &else& && && &//初始化网络模块,等待用户远程登录,更新固件
& &{
& && && && && & /* Setup STM32 system (clocks, Ethernet, GPIO, NVIC) and STM3210C-EVAL resources */
& && && && && & BKP_WriteBackupRegister(BKP_DR9,0x00);// 标志已经下载了程序了
& && && && && & System_Setup();
& && && && && & /* Initilaize the LwIP satck ip地址设置,mac设置,*/
& && && && && & LwIP_Init();
& && && && && &
& && && && && & IAP_httpd_init();
& && && && && & /* Infinite loop */
& && && && && & while (1)
& && && && && & {& &
& && && && && && && & /* Periodic tasks */
& && && && && && &&&System_Periodic_Handle();
& && && && && & }
& && &&&}
}
void MCU_Reset(void)
{
& && &&&__disable_fault_irq();& && &// STM32 软复位&&
& && &&&NVIC_SystemReset();
}
PUTCHAR_PROTOTYPE
{
&&/* Place your implementation of fputc here */
&&/* e.g. write a character to the USART */
&&USART_SendData(USART2, (uint8_t) ch);
&&/* Loop until the end of transmission */
&&while (USART_GetFlagStatus(USART2, USART_FLAG_TC) == RESET)
&&{}
&&
}
/**
&&* @brief&&Inserts a delay time.
&&* @param&&nCount: number of 10ms periods to wait for.
&&* @retval None
&&*/
void Delay(uint32_t nCount)
{
&&/* Capture the current local time */
&&timingdelay = LocalTime + nC&&
&&/* wait until the desired delay finish */&&
&&while(timingdelay & LocalTime)
&&{& &&&
&&}
}
/**
&&* @brief&&Updates the system local time
&&* @param&&None
&&* @retval None
&&*/
void Time_Update(void)
{
&&LocalTime += SYSTEMTICK_PERIOD_MS;
}
/**
&&* @brief&&Handles the periodic tasks of the system
&&* @param&&None
&&* @retval None
&&*/
void System_Periodic_Handle(void)
{
&&/* Update the LCD display and the LEDs status */
&&/* Manage the IP address setting */
&&Display_Periodic_Handle(LocalTime);
&&
&&/* LwIP periodic services are done here */
&&LwIP_Periodic_Handle(LocalTime);
}
#ifdef&&USE_FULL_ASSERT
……………………
…………限于本文篇幅 余下代码请从51黑下载附件…………
复制代码
所有资料51hei提供下载:
(6.42 MB, 下载次数: 12)
19:04 上传
点击文件名下载附件
下载积分: 黑币 -5
Powered by【讨论交流】STM32F107或207或407的LWIP协议以太网应用求助-电子产品世界论坛
【讨论交流】STM32F107或207或407的LWIP协议以太网应用求助
最近在搞STM32F207+DP83848物理层芯片的LWIP,在TCP应用下,遇到一个问题,就是如何修改MAC地址,目前我认为与两个相关的函数有关:
void ETH_MACAddressConfig(uint32_t MacAddr, uint8_t *Addr);
void ETH_GetMACAddress(uint32_t MacAddr, uint8_t *Addr);
前一个是配置对应的MAC地址(STM32的以太网控制外设支持0-3共4个MAC地址寄存器),第二个函数是读取对应的MAC地址寄存器的内容。经测试,读取到的内容和当前网络中的实际物理地址相同,即读取函数是对的,同时用配置函数修改MAC地址后立即读取其内容则为想要修改的内容,但是网络连接中的物理地址仍然没有改变,不知道是什么原因,不知道哪位大侠对STM32的网络应用较熟悉的,指点一下,万分感谢!
话说我手里也有一块STM32F207的板子。就是现在时间紧没有玩呢&&
就帮楼主 顶一下吧
不过,我的LM3S8962貌似也是这样改。
改之后的结果怎么样,我认为是我修改时没有注意物理地址的规范,没有学过计算机网络,用起来还是比较费力,不知道修改这个物理地址具体还要注意些什么&&
自已做了一块9D92的板子,不过是核心板那种,接口板还没有做,也没有网络接口&&
我都是用人家给的Mac地址来设定,自己还没有设置过。不过,这个简单,周末帮你验证一下就得了呗&&
今天就是周末,看来我还是去办公室看能不能把东西拿回来,好一起玩一下!
结题了:这几天要完成一个CAD表格的制作,因此提出的问题就没有来得及去研究,刚刚把CAD的任务完成了,拿出开发板(以前调直接用的产品的板子)拿出以前调过的程序,突然一下子发现main.h文件里面有一个关于MAC地址的宏定义:
#define MAC_ADDR0&& 2
#define MAC_ADDR1&& 0
#define MAC_ADDR2&& 0
#define MAC_ADDR3&& 0
#define MAC_ADDR4&& 0
#define MAC_ADDR5&& 0
难怪每次改了之后复位结果却没发生任何改变,把这些预定义代码注释了后,通过编译器找到使用这些代码的地方:ethernetif.c里面有个函数:
static void low_level_init(struct netif *netif)
将这个函数里面与MAC地址有关的代码改一下就好了,这个问题终于解除了&&
嘿嘿,楼主的问题的确很难发现,这个是代码风格的问题啊~~
话说的LM3S8962开发板挂掉了&&555...
都是自已不小心,前面调的时候一直关注着main.h里的预定义,结果有问题的时候把它给忘了&&你的芯片被锁了?
解决了就好!
匿名不能发帖!请先 [
Copyright (C) 《电子产品世界》杂志社 版权所有查看: 890|回复: 2
请教个问题,我用的是STM32F107VC芯片一共256k flash 用串口工具eisp软件下载程序时会把flash全部擦除,但是现在我只想把前面的254K的flash擦除 最后的2K,不擦除 ,
主题帖子精华
新手入门, 积分 26, 距离下一级还需 -6 积分
在线时间0 小时
请教个问题,我用的是STM32F107VC芯片一共256k flash 用串口工具eisp软件下载程序时会把flash全部擦除,但是现在我只想把前面的254K的flash擦除 最后的2K,不擦除 ,保留之前保存过的数据
a8b0c3ef95d1_651.png (0 Bytes, 下载次数: 0)
22:54 上传
6bdca528cc312_103.png (0 Bytes, 下载次数: 0)
22:54 上传
这个软件,无此功能,用仿真器吧
主题帖子精华
金钱128938
在线时间1150 小时
这个软件,无此功能,用仿真器吧
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺:
主题帖子精华
新手入门, 积分 26, 距离下一级还需 -6 积分
在线时间0 小时
回复【2楼】正点原子:
---------------------------------
其他的软件有吗&最好不需要自己修改的&有现成就可以用的?
Powered bySTM32单片机硬件关键基础精华及注意事项
我的图书馆
STM32单片机硬件关键基础精华及注意事项
  STM32简单介绍   一、背景   如果你正为项目的处理器而进行艰难的选择:一方面抱怨16位单片机有限的指令和性能,另一方面又抱怨32位处理器的高成本和高功耗,那么,基于 ARM Cortex-M3内核的STM32系列处理器也许能帮你解决这个问题。使你不必在性能、成本、功耗等因素之间做出取舍和折衷。   即使你还没有看完STM32的产品手册,但对于这样一款融合ARM和ST技术的“新生儿”相信你和我一样不会担心这款针对16位MCU应用领域 的32位处理器的性能,但是从工程的角度来讲,除了芯片本身的性能和成本之外,你或许还会考虑到开发工具的成本和广泛度;存储器的种类、规模、性能和容 量;以及各种软件获得的难易,我相信你看完本专题会得到一个满意的答案。
  对于在16位MCU领域用惯专用在线仿真器(ICE)的工程师可能会担心开发工具是否能够很快的上手?开发复杂度和整体成本会不会增加?产品上 市时间会不会延长?没错,对于32位嵌入式处理器来说,随着时钟频率越来越高,加上复杂的封装形式,ICE已越来越难胜任开发工具的工作,所以在32位嵌 入式系统开发中多是采用JTAG仿真器而不是你熟悉的ICE。但是STM32采用串行单线调试和JTAG,通过JTAG调试器你可以直接从CPU获取调试 信息,从而将使你的产品设计大大简化,而且开发工具的整体价格要低于ICE,何乐而不为?   有意思的是STM32系列芯片上印有一个蝴蝶图像,据ST微控制器产品部Daniel COLONNA先生说,这是代表自由度,意在给工程师一个充分的创意空间。我则“曲解”为预示着一种蝴蝶效应,这种蝴蝶效应不仅会对方案提供商以及终端产 品供应商带来举足轻重的影响,而且会引起竞争对手策略的改变……翅膀已煽动,让我们一起静观其变!   二、STM32市面上流通的型号   截至日,市面流通的型号有:   基本型:STM32F101R6,STM32F101C8,STM32F101R8,STM32F101V8 ,STM32F101RB,STM32F101VB   增强型:STM32F103C8,STM32F103R8,STM32F103V8,STM32F103RB,STM32F103VB,STM32F103VE,STM32F103ZE   三、STM32系列的作用   ARM公司的高性能”Cortex-M3”内核   1.25DMips/MHz,而ARM7TDMI只有0.95DMips/MHz   一流的外设   1μs的双12位ADC,4兆位/秒的UART,18兆位/秒的SPI,18MHz的I/O翻转速度   低功耗   在72MHz时消耗36mA(所有外设处于工作状态),待机时下降到2μA   最大的集成度   复位电路、低电压检测、调压器、精确的RC振荡器等   简单的结构和易用的工具   四、STM32F10x重要参数   2V-3.6V供电   容忍5V的I/O管脚   优异的安全时钟模式   带唤醒功能的低功耗模式   内部RC振荡器   内嵌复位电路   工作温度范围:-40℃至+85℃或105℃   五、性能特点   基本型STM32F101:36MHz CPU,多达16K字节SRAM,1x12位ADC温度传感器   增强型STM32F103:72MHz CPU,多达20K字节SRAM,2x12位ADC 温度传感,PWM定时器,CAN,USB
  六、STM32互联型系列简介:   全新STM32互连型(Connectivity)系列微控制器增加一个全速USB(OTG)接口,使终端产品在连接另一个USB设备时既可以 充当USB主机又可充当USB从机;还增加一个硬件支持IEEE1588精确时间协议(PTP)的以太网接口,用硬件实现这个协议可降低CPU开销,提高 实时应用和联网设备同步通信的响应速度。   全新互连型系列还是STM32家族中首款集成两个CAN2.0B控制器的产品,让开发人员能够研制可连接两条工业标准CAN(控制器区域网)总 线的网关设备。此外,新系列微控制器还支持以太网、USB OTG和CAN2.0B外设接口同时工作,因此,开发人员只需一颗芯片就能设计整合所有这些外设接口的网关设备。   STM32互连型系列产品强化了音频性能,采用一个先进的锁相环机制,实现音频级别的I2S通信。结合USB主机或从机功能,STM32可以从 外部存储器(U盘或MP3播放器)读取、解码和输出音频信号。设计人员还可以在新系列微控制器上开发人机界面(HMI)功能,如播放和停止按键,以及显示 器界面。这个功能使其可用于各种家庭音响设备,如音响底座系统、闹钟/音乐播放器和家庭影院。   新系列产品整合先进的面向连接的外设,标准的STM32外设(包括一个PWM定时器),高性能的32位ARM Cortex-M3 CPU,这些特性使开发人员可以在设备上(如家电、楼宇或工业自动化)整合多种功能,如马达控制、用户界面控制和设备互连功能。其它目标应用包括需要联 网、数据记录或USB外设扩展功能的系统,如病患监视、销售终端机、自动售货机和保安系统。   包括新的互连型系列在内的STM32系列微控制器具有多种配套软件和开发工具,其中包括意法半导体免费提供的软件库以及第三方工具厂商的广泛支持。意法半导体还将推出一个新的评估板,目前正在向大客户提供STM32F105和STM32F107互连型系列的样片。   七、STM32新系列产品的功能:   STM32互连型系列产品分为两个型号:STM32F105和STM32F107。STM32F105具有USB OTG 和CAN2.0B接口。STM32F107在USB OTG 和CAN2.0B接口基础上增加了以太网10/100 MAC模块 。片上集成的以太网MAC支持MII和RMII,因此,实现一个完整的以太网收发器只需一个外部PHY芯片。只使用一个25MHz晶振即可给整个微控制器 提供时钟频率,包括以太网和USB OTG外设接口。微控制器还能产生一个25MHz或50MHz的时钟输出,驱动外部以太网PHY层芯片,从而为客户节省了一个附加晶振。   音频功能方面,新系列微控制器提供两个I2S音频接口,支持主机和从机两种模式,既用作输入又可用作输出,分辨率为16位或32位。音频采样频 率从8kHz到96kHz。利用新系列微控制器强大的处理性能,开发人员可以用软件实现音频编解码器,从而消除了对外部组件的需求。   把U盘插入微控制器的USB OTG接口,可以现场升级软件;也可以通过以太网下载代码进行软件升级。这个功能可简化大型系统网络(如远程控制器或销售终端设备)的管理和维护工作。   八、充分发挥 STM32架构的优势:   除新增的功能强化型外设接口外,STM32互连系列还提供与其它STM32微控制器相同的标准接口,这种外设共用性提升了整个产品家族的应用灵 活性,使开发人员可以在多个设计中重复使用同一个软件。新STM32的标准外设包括10个定时器、两个12位1-Msample/s 模数转换器 (交错模式下2-Msample/s)、两个12位数模转换器、两个I2C接口、五个USART接口和三个SPI端口。新产品外设共有12条DMA通道, 还有一个CRC计算单元,像其它STM32微控制器一样,支持96位唯一标识码。   新系列微控制器还沿续了STM32产品家族的低电压和节能两大优点。2.0V到3.6V的工作电压范围兼容主流的电池技术,如锂电池和镍氢电 池,封装还设有一个电池工作模式专用引脚Vbat。以72MHz频率从闪存执行代码,仅消耗 27mA电流。低功耗模式共有四种,可将电流消耗降至两微安。从低功耗模式快速启动也同样节省电能;启动电路使用STM32内部生成的8MHz信号,将微 控制器从停止模式唤醒用时小于6微秒。   九、存储器和封装选项:   在STM32F105和STM32F107互连型系列微控制器之前,意法半导体已经推出STM32基本型系列、增强型系列、USB基本型系列和 增强型系列;新系列产品沿用增强型系列的72MHz处理频率。内存包括64KB到256KB闪存和 20KB到64KB嵌入式SRAM。新系列采用LQFP64、LQFP100和LFBGA100三种封装,不同的封装保持引脚排列一致性,结合STM32 平台的设计理念,开发人员通过选择产品可重新优化功能、存储器、性能和引脚数量,以最小的硬件变化来满足个性化的应用需求。
  STM32硬件关键设计精华集锦   如何保证ADC精度之STM32的ADC   共有最多3个ADC模块,最多21个ADC输入通道   特性   12位分辨率   自校准   转换结束,注入转换结束和发生模拟看门狗事件时产生中断   带内嵌数据一致的数据对齐   非常丰富的操作模式   双重模式(带2个或以上ADC的器件)   ADC转换时间:   1μs:ADC时钟为14MHz时达到最快   14个时钟周期,转换周期可调:14、20、26、41、54、68、84、252   ADC供电要求:2.4V~3.6V   ADC输入范围:VREF-≤VIN≤VREF+   规则通道转换期间有DMA请求产生   模拟看门狗
  ADC输入通道映射
  STM32的双ADC操作模式
  ADC的误差种类   (1) 理想ADC转换曲线   (2) 实际ADC转换曲线   (3) 实际ADC两终点连线
  ET 总误差:实际ADC转换曲线与理想曲线间的最 大偏离   EO 偏移误差:实际转换曲 线上第一次跃迁与理想 曲线中第一次跃迁之差   EG 增益误差:实际转换曲 线上最后一次跃迁与理 想曲线中最后一次跃迁 之差   ED 微分线性误差:实际转 换曲线上步距与理想步 距(1LSB)之差   EL 积分线性误差:实际转 换曲线与终点曲线间最 大偏离
  消除影响ADC精度的因素(1)   1、ADC模块自身的误差   积分线性误差(ILE)和微分线性误差(DLE)依赖于ADC模块的设计,校准它们是困难的。进行多次转换再做平均可以减小它们的影响。偏移和增益误差可以简单地使用ADC模块的自校准功能补偿。   2、电源噪声,尤其是开关电源(SMPS)的高频噪声   线性稳压器具有较好的输出。强烈建议在整流输出端连接滤波电容。如果使用开关型电源,建议使用一个线性稳压器为模拟部分供电。建议在电源线和地 线之间连接具有良好高频特性的电容,即在靠近电源一端应放置一个0.1μF和一个1~10μF的电容。每一对VDD和VSS管脚都需要使用单独的去藕电 容。VDDA管脚必须连接到2个外部的去藕电容器(10nF瓷介电容+1μF的钽电容或瓷介电容)对于100脚和144脚封装的产品,可以在VREF+上 连接一个外部的ADC的参考输入电压,从而改善对输入低电压的精度。   消除影响ADC精度的因素(2)
  消除影响ADC精度的因素(3) &   1、电源输出不稳,随负载变化   ADC模块使用VREF+或VDDA作为模拟参考,数字数值的输出是这个参考电压与模拟输入信号的比值,VREF+必须在各种负载情况下保持稳定。可以使用诸如LM236作为VREF+的参考电压,这是一个2.5V的电压参考二极管   2、模拟输入信号的噪声   平均值方法:适合处理不频繁变化的模拟输入信号,增加一个外部滤波器消除高频噪声。   3、将最大的信号幅度与ADC动态范围匹配   选择参考电压(仅适合于具有VREF+引脚的产品),使用一个外部的前级放大器。   4、I/O引脚间的串扰(临近数字信号的翻转)   模拟信号线的周围布置地线产生屏蔽,能有效地减小串扰干扰噪声。   消除影响ADC精度的因素(4)
  VDD与VDDA的处理   供电引脚   STM32共有7种封装规格,共有多组VDD/VSS引脚,以及一组VDDA/VSSA引脚。
  尽管所有VDD和所有VSS在内部相连,在芯片外部仍然需要连接上所有的VDD和VSS。因为导线较细,内部连接负载能力较差,抗干扰的能力也较差,如果漏接VDD或VSS,容易造成内部线路损坏,同时抗干扰能力下降。   VDD与VSS的去藕电容   每对VDD与VSS都必须在尽可能靠近芯片处分别放置一个10nF~100nF的高频瓷介电容。在靠近VDD3和VSS3的地方放置一个4.7μF~10μF的钽电容或瓷介电容。
  VDD与VDDA的关系   VDDA为所有的模拟电路部分供电,包括:
  ADC模块,复位电路,PVD(可编程电压监测器),PLL,上电复位(POR)和掉电复位(PDR)模块,控制VBAT切换的开关等。即使不 使用ADC功能,也需要连接VDDA,强烈建议VDD和VDDA使用同一个电源供电。VDD与VDDA之间的电压差不能超过300mV,VDD与VDDA 应该同时上电或调电。   供电方案
  如何达到最优功耗水准   低功耗模式
  I/O引脚的处理   1、如果需要减小I/O端口的电流消耗,可以根据具体情况配置I/O端口的状态:   输入端口????配置为浮空输入,带外部上拉的输出端口????配置为推挽输出并输出’1’,,带外部下拉的输出端口????配置为推挽输出并输出’0’。   2、未用的内部外设:   保持为关闭和默认的复位状态:   不要进行重映射,复位寄存器RCC_APB1RSTR和RCC_APB2RSTR。关闭对应的时钟,时钟使能寄存器:RCC_AHBENR、RCC_APB2ENR和RCC_APB1ENR。   进入SLEEP模式的省电操作   1、为了降低系统功耗,进入SLEEP模式时,执行如下操作流程:   关闭无需等待中断或事件的外设时钟;设置进入机制(Sleep-Now或Sleep-on-Exit);设置系统进入SLEEP模式。   2、退出睡眠模式的方式:   WFI(等待中断),可由任一外设中断触发,WFE(等待事件),可由任一外设事件触发。   进入STOP省电模式的操作   为了降低系统功耗,进入STOP模式的操作流程:   关闭设置为普通IO功能的GPIO口时钟;   关闭已开启时钟的外设的使能位(尤其是ADC、DAC、USB等带模拟模块的外设);   关闭已开启时钟的外设的时钟;   关闭预取缓冲区,并将Flash等待周期置为0;   设置PWR_CR中LPDS位选择电压调节器的模式:   正常模式:电压调节器处于正常供电状态;   低功耗模式:可降低电压调节器自身的功耗,   将MCU从STOP模式唤醒的时间有所增加;   设置系统进入STOP模式。   退出STOP省电模式的操作   1、退出停止模式:   以WFI进入时:任意外部中断线的中断;   以WFE进入时:任意外部中断线的事件;   不包括PVD和USB唤醒事件。   2、从STOP模式恢复后,时钟的配置返回到复位时的状态(系统时钟为HSI),用户程序必须重新配置整个时钟系统,包括PLL。
  如何获得高精度的RTC   STM32使用Pierce振荡器,原理图及重要参数如下:
  三个步骤选择一个合适的LSE   第一步:增益裕量(Gainmargin)计算   选择一个晶振(参考MCU的数据手册确定晶振的频率)   计算晶振的增益裕量(Gainmargin)并检查其是否大于5:   如果Gainmargin《 5,说明这不是一个合适的晶振,应当再挑选一个低ESR值和低CL值的晶振,重新第一步。如果Gainmargin》 5,进行第二步。   第二步:外部负载电容的计算   计算CL1和CL2的值,并检查标定为该计算值的电容是否能在市场上获得。如果能找到容值为计算值的电容,则晶振可以在期望的频率正常起振。然后转到第三步。   如果找不到容值为计算值的电容:   该应用对频率要求很高,你可使用一个可变电容并将其调整到计算值,然后转到第三步。如果对频率的要求不是特别苛刻,选择市场上能获得的电容中容值距计算值最近的电容。   第三步:驱动级别及外部电阻的计算   计算驱动级别DL并检查其是否大于DLcrystal:   如果DL《 DLcrystal,没必要使用外部电阻,祝贺你,你找到了合适的晶振。如果DL》 DLcrystal,你应该计算RExt 使其确保DL《 DLcrystal 并据此重新计算Gainmargin。如果Gainmargin》 5,祝贺你,你找到了合适的晶振。如果Gainmargin《 5,你别无选择,再重新挑选另外一个晶振吧。然后重新回到第一步。   ST推荐的LSE型号   对于STM32(TM)的LSE部分,推荐使用CL《7pF的晶振(过大的CL会导致过大的gmcrit,从而无法保证足够的增益裕量)。
  RTC是一个计数器,对输入时钟分频、计数、比较
  RTC的校准   设置BKP_RTCCR寄存器,每220(1048576)个时钟周期中,减去相应周期数,每个单位能实现0.954() ppm的精度校准,BKP_RTCCR寄存器取值范围0-127,时钟可以调慢0 -121 ppm。
  对于32,768Hz晶振,可补偿频偏范围为:32,768Hz 《 fLSE《 32,772Hz ????调慢,设置RTC预分频寄存器RTC_PRLH / RTC_PRLL。   例如:由预设值32768调整为32766,再设置BKP_RTCCR寄存器,此时,对于32,768Hz晶振,可补偿频偏范围:
  复位电路   外部复位信号低脉冲至少保持300ns,系统复位信号不影响备份区域的工作,NRST复位引脚是CMOS工艺的开漏电路。在产生内部复位信号时,NRST引脚会输出一个低电平。
  SWJ调试电路   SWJ电路设计及注意事项
  调试烧录失败的常见原因   1、目标芯片没有正确连接,不能正常工作:   解决方法:确保目标板的最小系统正确连接,芯片能正常工作:VDD、VDDA及VSS 、VDDS已全部正确连接,复位电路能够可靠复位,各复位源不互相影响。   2、芯片内原先烧录的代码影响了新的调试操作:   芯片内原先烧录的代码出错,芯片上电运行,进入未定义状态,不能进入调试模式。芯片内原先烧录的代码启动了某些外设,或者将SWJ引脚配置为普通I/O口。   解决方法:选择芯片的BOOT0/BOOT1引脚从RAM启动,或先擦除芯片内代码。   3、芯片已被读/写保护:   调试工具不能读写芯片内置的Flash。   解决方法:先使用调试工具解除芯片的读/写保护。
  STM32硬件电路设计注意事项   STM32的基本系统主要涉及下面几个部分:   1、电源   1)、无论是否使用模拟部分和AD部分,MCU外围出去VCC和GND,VDDA、VSSA、Vref(如果封装有该引脚)都必需要连接,不可悬空;   2)、对于每组对应的VDD和GND都应至少放置一个104的陶瓷电容用于滤波,并接该电容应放置尽量靠近MCU;   2、复位、启动选择   1)、Boot引脚与JTAG无关。其仅是用于MCU启动后,判断执行代码的起始地址;   2)、在电路设计上可能Boot引脚不会使用,但要求一定要外部连接电阻到地或电源,切不可悬空;   3、调试接口   4、ADC   1)、ADC是有工作电压的,且与MCU的工作电压不完全相同。MCU工作电压可以到2.0V~3.6V,但ADC模块工作的电压在2.4V~3.6V。设计电路时需要注意。   5、时钟   1)、STM32上电默认是使用内部高速RC时钟(HSI)启动运行,如果做外部时钟(HSE)切换,外部时钟是不会运行的。因此,判断最小系统是否工作用示波器检查OSC是否有时钟信号,是错误的方法;   2)、RTC时钟要求使用的32.768振荡器的寄生电容是6pF,这个电容区别于振荡器外部接的负载电容;   5、GPIO   1)、IO推动LED时,建议尽量考虑使用灌电流的方式。   2)、在Stop等低功耗模式下,为了更省电,通常情况下建议GPIO配置为带上拉的输出模式,输出电平由外部电路决定;   6、FSMC   1)、对应100pin或144pin,FSMC的功能与I2C是存在冲突的,如果FSMC时钟打开,I2C 1的硬件模式无法工作。这在STM32F10xxx的勘误表中是有描述的。   ST官方推荐的几大主流开发板的原理图,在画电路的时候可以做为参考依据:   1、IAR   1)、STM32F103RBT6   2)、STM32F103ZET6   2、MDK   1)、STM32F103RBT6   2)、STM32F103ZET6   3、Raisonance   1)、STM32F103RBT6   2)、STM32F103VET6   4、ST官方的板   1)、STM3210E-LK   2)、STM3210B-EVAL   3)、STM3210E-EVAL   4)、STM3210C-EVAL
喜欢该文的人也喜欢}

我要回帖

更多关于 单片机 淘宝 的文章

更多推荐

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

点击添加站长微信