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

新手STM32学习笔记

[复制链接]
私奔 发布时间:2009-1-4 12:05
作者:阿九1 ]5 N; q% o' O/ P4 C0 [3 u$ X
上周4终于买了块万利的STM32开发板,武汉本地的万利代理处买的,之前问了好久都没货,这次终于有了:)199还开了发票,尽管老板是分不愿意,没利润阿,再开个票亏了。。。 & u: B+ Z7 c) O( s0 S$ K
代码我做了颜色高亮,看起来很舒服:) 3 O0 o; K+ j2 A8 d' i: j
咱也就初学者水平,目前对STM32还处在学习各种模块的阶段,so,高手们请多多指点,别介意小弟啰嗦把这点P东西都放网上~~
& O7 l7 ?/ A+ ^) r4 }% c1 r5 d学这高级单片机,是想过几天把它用到雕刻机的控制上,解释下G代码呀,插补个圆弧直线啥的,顺便还和PLC通讯通讯:) ! {, J; H* G$ R: Y+ R/ I4 S
! R/ W* m/ w& X! `% n6 W
STM32笔记(零)我的STM32工程模板
3 G) x2 f) n. Q3 j$ ]/ H
0 d% u# W: I1 g  这是我自己的STM32工程模板,其实和网上所有的都一样,其中包括IAR和MDK两个文件,各自包含FWLib2.0,解压缩后修改文件名即可使用。
( ]; w+ |& ]4 g  T  用法同网上的其他文件一致,用户代码在user文件夹下,main.c和stm32f10x_it.c
( i9 D+ @% P8 o! @( s- H, ?  传一份上来供大家使用:)
9 z) U/ F" J# L 其中底层的SPI总线对SD卡的操作在SPI_SD_driver.c/h中,而FATFS的移植文件diskio.c中对磁盘的操作函数中将调用底层的操作函数。下面是一些底层操作函数:
$ G5 i: A) }* M/ {/ t: @( u0 Au8 SPI_ReadWriteByte(u8 TxData);                                             //SPI总线读写一个字节
$ J1 g% W/ J0 m2 o3 `( u  ~u8 SD_WaitReady(void);                                                           //等待SD卡就绪- R* l. `8 U2 P* f; r2 V
u8 SD_SendCommand(u8 cmd, u32 arg, u8 crc);                      //SD卡发送一个命令
& O% a& I* {7 J& d  xu8 SD_SendCommand_NoDeassert(u8 cmd, u32 arg, u8 crc);  //SD卡发送一个命令,不断线1 _1 ]3 Z# Z3 Y, Q& J
u8 SD_Init(void);                                                                      //SD卡初始化
* e6 i( B* o- G) T; v* W) g, f$ Y                                 
8 `+ E6 M* [5 V) J; `% Qu8 SD_ReceiveData(u8 *data, u16 len, u8 release);                   //SD卡读数据
; H5 D$ ]6 n8 S, }% eu8 SD_GetCID(u8 *cid_data);                                                   //读SD卡CID
! r/ Y+ o5 X/ o1 ?) w2 iu8 SD_GetCSD(u8 *csd_data);                                                 //读SD卡CSD  r! q/ E9 I4 h0 k
u32 SD_GetCapacity(void);                                                     //取SD卡容量6 c9 h. J8 K4 c  y* N
8 e; q: g* Q- `' g
u8 SD_ReadSingleBlock(u32 sector, u8 *buffer);                      //读一个sector3 r, t1 X, \/ O
u8 SD_WriteSingleBlock(u32 sector, const u8 *buffer);           //写一个sector
- x1 v- a" f) q. eu8 SD_ReadMultiBlock(u32 sector, u8 *buffer, u8 count);       //读多个sector# C0 ?" \) K7 ?! q) f
u8 SD_WriteMultiBlock(u32 sector, const u8 *data, u8 count);  //写多个sector; i' i6 |5 R4 q; W  y

1 z# C% ]6 W7 _5 W: t  这是diskio.c中的一段代码,在disk初始化中,我们调用了SPI_SD_driver.c中的SD卡初始化函数。
. _, T& K0 V0 E3 J4 O2 v" [. ?DSTATUS disk_initialize (
- v; T3 g+ a$ z2 E8 d    BYTE drv                /* Physical drive nmuber (0..) */
# a8 C2 O( L8 u8 `* F+ {) d)
- s) L% |5 H4 p! n5 p4 j{
0 D) {- i& \* S1 I    u8 state;& o7 B4 Y- y# `4 k& ~

' _# E9 u4 E0 `/ c, W" Z9 ]    if(drv)
" n4 d% E, D/ w8 D/ R& S5 d% k    {2 K7 R2 ^2 B$ E- |4 Y" |8 f+ ]- \
        return STA_NOINIT;  //仅支持磁盘0的操作6 f  f, P- h# v* ~! _& s
    }
% c, k1 _, X$ Q) r! M
; c' [9 Z: J, I( F2 }8 k    state = SD_Init();! R5 n# [; e3 r# m
    if(state == STA_NODISK)' e3 i5 r7 O/ A6 x5 n1 m
    {* z/ U4 I8 Q+ c. k$ f' I' B
        return STA_NODISK;
  e# }( p) o) H# K    }) X) S1 o7 p( n+ e2 x" ~" Z7 q
    else if(state != 0)
& y" O  x* ]* Y; M. h2 j    {8 g. V6 x) k% V3 w+ w
        return STA_NOINIT;  //其他错误:初始化失败2 i- p5 U) d1 `& ?& V6 c1 F& M
    }3 {* I; D" |, A8 n# W  y
    else" J- O- t# [0 T3 u: t
    {
! E7 @7 w) H) m* B1 M* b        return 0;           //初始化成功
0 k- L! Y) I, n3 K+ [( d    }2 M, m1 X- j, f5 g/ P
}7 _8 T- g& W, V0 w/ i
  1 z9 d( L/ C% D! a
  总之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管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版