一乐电子

一乐电子百科

 找回密码
 请使用微信账号登录和注册会员

QQ登录

只需一步,快速开始

快捷登录

手机号码,快捷登录

搜索
楼主: xjw01
收起左侧

stm32怎么学

  [复制链接]
发表于 2012-12-2 09:02 | 显示全部楼层
我使和ST的ISP下载,提示下载成功。
试验在PA2上输出闪烁灯,不过没有反应,是高阻端口。
是在一个F103c8 ...
xjw01 发表于 2012-12-1 16:05 https://www.yleee.com.cn/images/common/back.gif



               一。硬件部分

            STM32启动方式见手册!


2.JPG

               不清楚您用是什么ISP下载软件!因为现在的开发板五花八门,情况不一。

             我的开发板上,有一启动方式选择。当ISP下载时,BOOTO选择1,下载结束BOOTO选择0,开始启动运行用户程序。

这一点容易被忽略。有时下载程序后发现没反映,查后发现忘了将BOOTO选择0。
发表于 2012-12-2 09:16 | 显示全部楼层
二,软件部分

           由于使用版本不同。会有差异。我使用板载8M晶振, 如您使用PA2口,系统时钟初始化 如下(有注解)
void RCC_Configuration(void)
{
  RCC_DeInit();          //时钟控制寄存器全部恢复默认值
    RCC_HSEConfig(RCC_HSE_ON);      //外部高速时钟源开启(8M晶振)
   HSEStartUpStatus = RCC_WaitForHSEStartUp();  //等待外部时钟就绪
  if(HSEStartUpStatus == SUCCESS)     //如果时钟启动成功
  {
       RCC_HCLKConfig(RCC_SYSCLK_Div1);    //定义AHB设备时钟为系统时钟1分频
       RCC_PCLK2Config(RCC_HCLK_Div1);     //定义AHB2设备时钟为HCLK时钟1分频
        RCC_PCLK1Config(RCC_HCLK_Div2);     //定义AHB1设备时钟为HCLK时钟2分频
        FLASH_SetLatency(FLASH_Latency_2);    //设定内部FLASH的的延时周期为2周期
        FLASH_PrefetchBufferCmd(FLASH_PrefetchBuffer_Enable);  //使能FLASH预存取缓冲区
        RCC_PLLConfig(RCC_PLLSource_HSE_Div1, RCC_PLLMul_9);  //配置PLL时钟为外部高速时钟的9倍频,8MHz * 9 = 72 MHz
       RCC_PLLCmd(ENABLE);           //使能PLL时钟
       while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET)   //等待PLL时钟设置完成准备就绪
    {
    }
        RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);     //使用PLL时钟作为系统时钟源
       while(RCC_GetSYSCLKSource() != 0x08)      //返回系统所用时钟源确认为外部高速晶振,8M晶振。
    {
    }
  }
   RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA , ENABLE); //使能由APB2时钟控制的外设中的PA端口------
}
发表于 2012-12-2 09:20 | 显示全部楼层
另一方法:可以通过软件仿真看一下程序是否正确!
 楼主| 发表于 2012-12-2 12:38 | 显示全部楼层
忙了一天半,终于下载成功。道路曲折。
1、买了F0版的原装开发板子,
网络上找软件,keil不好找啊。直接用官网的3.5评估版,结果没有STM32F0选项。再找,好容易找到,却是4.12版,还是没有F0的选项。将就用了。
原装开发板居然是一个没有资料的板子。商家的理由说,资料在st官网。
我到官网查了一下,下载了一大堆,一个字“乱”,一片混乱。
于是放弃这个版本了。对我来说,F0变成了拉圾。
2、买了F103最小板
下载了ISP软件,名称是:Flash Loader Demostrator 2.2
网上有1.0版本的说明书,但找不到1.0的软件,只好使用2.2版本的。
好容易做了一个LED点亮程序,准备下载,又遇到难题:无法使用ISP下载。
用我使用自取电DIY的串口转换器,下载时总是提示“不能识别的设备”或“设备没有响应”
Flash Loader Demostrator几个选项,试验了好久,均不成功。
最后,对照ISP帮助文档,改为默认值。
心想,是不是自取电串口转换有问题。拿到STC单片机测试。结果是正常的。
也许是,Flash Loader Demostrator下载时,没有打开RS232电源,自取电串口无法工作。
于是,使用Max232串口转换下载
还是不行。原因????
拿到STC上测试,还是不行。
STC上显示,锂电池电压不正常,原先为7.6V,现在为7.4,几秒钟后7.3V,再几秒7.2V,再几秒Max232芯片爆裂,响声挺大的。
糟糕,我给Max232加上的电压是稳压前的电压,即7.6V,所以爆炸。
只好更换Max232,重新接上,STC正常下载。
接下来,Max232接到STM32F103最小,测试,还是“设备没有响应”,Boot0、Boot1决对没有设置错,我在网络上查了不知多少次,也对照了数据手册,绝对没错。
折腾死人。
休息几个小时,不死心,再测试。
调对Tx与Rx
这下有响应了。原来,Max232版子上的Rx与Tx标错了,看来,买成品转换板,不是绝对可信的。
虽然有响应,可是,下载器只支持HEX格,只好重新编译程序。
终于下载成功。

不过,LED不亮。
是程序了错了吗。

又在网上搜索啊搜搜搜。没有答案。
我认真比对各种版本的LED点亮程序、跑马灯程序,断定,算法上绝对没有错。编译上也不会有错,因为keil编译与window下各种C++是类似的,即头文件、与主体程序位置安放、装载好即可。
程序没错,那么LED为什么为亮。
难到是程序F103不兼容。
不过,网上没有人说到这种程序与F103不兼容,而且前几楼坛友提示,不同版本的STM兼容性比较好。

那么,问题出在哪里?

我注意到Flash Loader Demostrator 2.2有个选项“Jump到用户程序”
这个选项是干什么用的,是不是与它有关。
我把它钩上,重新下载。
LED还是不亮,郁闷!两分钟后,我马上意识到,本次操作有个失误,即Boot0没有改回来。重置Boot0之后,终于成功。LED亮起来了!

于时,我再次改动程序,重新下载,看看这种下载方法是否“可重复”,果然,下载不可“重复”,提示“设备没有响应”

试了了10下,均不成功,一次也没有成功。

休息一下,喝了两怀茶。

再下载,成了。

难到,STM32也需要休息?

再试,原来,复位后,需在0.5秒左右点击下载器上的“next”
就因选择了“Jump到用户程序”,现在每次下载者得控制“0.5秒”问题,注意力得高度集中才能下载。0秒不行,3秒也不行,你得乖乖的使用0.5秒


我不知道为什么,STM32要把软件设计成这个样子,非常难用。

为了确定连接有没有错,得找一张STM32的引脚图。手册上找啊找,找找找,再找找找,还是没有。用baidu找,终于找到了,STM的打手说STC管脚多,所以没法画图标住管脚。
呵呵,别信STM一家之言。有了管脚图,使用、检查时,方便多了。是STM的工程师们懒惰,不愿意作图,仅使有一张表格表示。
我为了下载,走了这么大一个弯路,也是STM ISP的工程师们懒惰造成的,手册里没有讲清楚下载细节及可能遇到的问题。软件设计成那个样子,一点也不“亲民”,难怪stm32的DIY作品少,网上资料也少。
看了STM32的资料,真是无语,那都是STM自已的专业资料拼凑出来的,根本不是教学资料。就象一个图书库一样,你不知道一选取哪一本资料。首次拿到STM32,你不知道第一步要做什么,第二步要做什么。

不过,忙了几天,总算下载成功了,挺高兴的。
 楼主| 发表于 2012-12-2 15:02 | 显示全部楼层
回复 62# 倪大德


    谢谢您。
我下载成功了。
我一步应该学习 GPIO还是TIM定时器,还是钟源设置?
发表于 2012-12-2 15:10 | 显示全部楼层
试试这个下载软件如何,Flash_Loader_Demonstrator_v2.6.0
http://www.st.com/stonline/stappl/resourceSelector/app?page=resourceSelector&doctype=SW_DEMO&ClassID=1734
还有下面这个 111222.png
FlyMcu.rar (777.44 KB, 下载次数: 229)
发表于 2012-12-2 15:16 | 显示全部楼层
俺可以提供STM32F10X、STM32F40X所有系列的技术支持,电路图支持,以及外围器件底层驱动以及UCOS-GUI支持
 楼主| 发表于 2012-12-2 15:23 | 显示全部楼层
回复 51# lichuang1005


    stm32管脚细,我没法用洞洞板焊接,所以买了一个现成的最小系统板。是STM32F103C8的。
   其它版本的STM32,以后再玩。
  STM32比51烧钱。我经常在淘宝上乱买东西。这次,买了F0系列的芯片,花了170元,结果没有用上。
  现在F103C8的能用,先将就使用。
  玩51,花了小几千元。玩stm32,可能得大几千元。
  现在,卡上的钱不多了,等年低看看会不会有钱。今年,买东西过多,在淘宝,几个月时间,由V3变成V4会员。我得节约一些。
发表于 2012-12-2 17:11 | 显示全部楼层
看STM的资料就头疼,所以我一直使用51,51上手容易,而且直观,许老师都转向STM了,看来我也要学习一下,不过我年龄有些大了,慢慢来吧。
发表于 2012-12-2 17:18 | 显示全部楼层
第一次总是这样的, 熟能生巧,  不过为什么要用ISP下载,  F0上面带 STLINK,  用SWM方式下载调试很方便啊

本版积分规则

QQ|一淘宝店|手机版|商店|电子DIY套件|一乐电子 ( 粤ICP备09076165号 ) 公安备案粤公网安备 44522102000183号

GMT+8, 2024-4-29 07:45 , Processed in 0.047610 second(s), 32 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表