你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

新手STM32学习笔记

[复制链接]
私奔 发布时间:2009-1-4 12:05
作者:阿九7 i% O  o* ?9 w. K7 u
上周4终于买了块万利的STM32开发板,武汉本地的万利代理处买的,之前问了好久都没货,这次终于有了:)199还开了发票,尽管老板是分不愿意,没利润阿,再开个票亏了。。。
, j' F! y2 O% K; T5 ?% w" l2 a代码我做了颜色高亮,看起来很舒服:) ( k7 J2 n) ~1 \9 W) ]
咱也就初学者水平,目前对STM32还处在学习各种模块的阶段,so,高手们请多多指点,别介意小弟啰嗦把这点P东西都放网上~~
+ e8 ^, i: S1 a4 Y5 r学这高级单片机,是想过几天把它用到雕刻机的控制上,解释下G代码呀,插补个圆弧直线啥的,顺便还和PLC通讯通讯:) 9 w( F4 x4 t% ^; O1 ?: p
9 ]  t+ V) }2 {: G* r+ h
STM32笔记(零)我的STM32工程模板
- `9 ^9 `) i: p1 f. J+ {* ?+ Z, |( V: B( S  x
  这是我自己的STM32工程模板,其实和网上所有的都一样,其中包括IAR和MDK两个文件,各自包含FWLib2.0,解压缩后修改文件名即可使用。 * t* v, X$ D- A9 P* x! n7 A
  用法同网上的其他文件一致,用户代码在user文件夹下,main.c和stm32f10x_it.c ; D. v% c; V( E+ g
  传一份上来供大家使用:)
9 V8 `1 ?( p' L4 D+ d 其中底层的SPI总线对SD卡的操作在SPI_SD_driver.c/h中,而FATFS的移植文件diskio.c中对磁盘的操作函数中将调用底层的操作函数。下面是一些底层操作函数:
+ e7 A- O5 S) v  qu8 SPI_ReadWriteByte(u8 TxData);                                             //SPI总线读写一个字节
$ ~* _3 q' D. M, `u8 SD_WaitReady(void);                                                           //等待SD卡就绪" J' s3 ?% R$ K
u8 SD_SendCommand(u8 cmd, u32 arg, u8 crc);                      //SD卡发送一个命令' U' I( R7 U$ I8 H, l$ L! h
u8 SD_SendCommand_NoDeassert(u8 cmd, u32 arg, u8 crc);  //SD卡发送一个命令,不断线
3 {( Z- m" E4 G! u0 su8 SD_Init(void);                                                                      //SD卡初始化) }7 e$ t! j- x* b: a% X1 M
                                 
7 m: i* g# e; j# Z, Tu8 SD_ReceiveData(u8 *data, u16 len, u8 release);                   //SD卡读数据
+ e" ?4 c' v$ Au8 SD_GetCID(u8 *cid_data);                                                   //读SD卡CID0 z& m& o, R" e3 [
u8 SD_GetCSD(u8 *csd_data);                                                 //读SD卡CSD! E! {, |( I3 `4 _
u32 SD_GetCapacity(void);                                                     //取SD卡容量
& v" M7 _  ~& a. z  Q
* I7 r! a  Y2 Ku8 SD_ReadSingleBlock(u32 sector, u8 *buffer);                      //读一个sector& ^0 W8 I1 b* p3 {5 [* u; _7 `
u8 SD_WriteSingleBlock(u32 sector, const u8 *buffer);           //写一个sector% I$ U* X3 Z0 Y( J! I7 R% l
u8 SD_ReadMultiBlock(u32 sector, u8 *buffer, u8 count);       //读多个sector" s7 C2 M& Z6 T; T2 e) f
u8 SD_WriteMultiBlock(u32 sector, const u8 *data, u8 count);  //写多个sector
( f, f5 c  V8 o
0 e* t) t! c" |; H- ~8 i0 G  这是diskio.c中的一段代码,在disk初始化中,我们调用了SPI_SD_driver.c中的SD卡初始化函数。
% \& @- N6 Z7 |- V9 }' NDSTATUS disk_initialize (& i5 \1 c' F" o
    BYTE drv                /* Physical drive nmuber (0..) */+ F: ]0 P0 s6 o+ ]
)
: X7 u' v$ J# \{: ^8 X# D1 y6 L$ X; K. }$ F4 Q
    u8 state;0 o4 \" w2 w, w7 z' X+ `8 i; X9 |# \

5 c! \5 _4 ?/ L% R& o    if(drv), F, h: q; O2 c* \
    {9 T' V2 \) x* X8 E% O; ]: I
        return STA_NOINIT;  //仅支持磁盘0的操作
; i. P. N0 o- Z  E& T    }1 l, P# B/ m; |

/ r4 Z) F/ I. S' i0 o* W    state = SD_Init();
3 E" ^/ b; _, V/ \$ V% ~  N    if(state == STA_NODISK)
: ]3 P; b: z1 ]( @' Y# D    {
2 a: d) Y* o! b1 b( f8 K5 z        return STA_NODISK;, L8 b  \& H: G
    }5 J" X1 y- w$ X
    else if(state != 0)6 q, B# W. Z+ ^) Y, ]  L  [$ _
    {
1 V& W- q8 g; v: t! o1 }5 G        return STA_NOINIT;  //其他错误:初始化失败6 j& v# v" @3 i" J7 D& H
    }
. y/ u7 Q: D" ]9 |$ G    else( Q+ B/ T% g) ]% B( H2 M5 g% _
    {
1 _6 \/ a9 S2 G2 y) Z        return 0;           //初始化成功
) m! U4 E3 _2 b! Q    }
. @8 ]; C0 h6 |- w/ z. q2 z}
) S# K! p: Z9 P' D. X  5 t& q. o' Y. V5 ~
  总之FATFS文件系统具有很高的可移植性,经测试,在STM32的18MSPI时钟下,读文件的速度在每秒300K以上,写文件也有100多K的速度,应该说基本满足了嵌入式工程应用中,对磁盘读写的速度要求。如果进一步优化SD卡读写代码,速度应该还会有一定提高,同时还要注意的是FLASH自身读写速度没有ram那么快,通过更换SD卡发现读写速度和卡本身有直接的关系,所以应该尽量选择速度较快的卡。
赞 收藏 评论3 发布时间:2009-1-4 12:05

举报

3个回答
zhanglmwuhan 回答时间:2009-6-13 15:23:47

RE:新手STM32学习笔记

好,赞一个,呵呵
zhanglmwuhan 回答时间:2009-6-13 15:24:19

RE:新手STM32学习笔记

好,赞一个,呵呵
huangsongyou 回答时间:2009-12-5 11:04:28

RE:新手STM32学习笔记

学习。。。。。。。。。。。。。。。。
关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
人形机器人运动控制、感知与智能配电
半导体创新技术与应用方向
EE架构与软件定义汽车
12V/48V 汽车智能配电(SPD)
区域控制单元(ZCU)与分区架构
关注我们
st-img 微信公众号
st-img 手机版