搜索
查看: 180266|回复: 277

[实战经验] STM32官方实战经验分享(2020.7.31更新)

  [复制链接]

该用户从未签到

307

主题

3432

帖子

0

蝴蝶豆

论坛元老

最后登录
2020-7-17
发表于 2014-1-23 14:58:52 | 显示全部楼层 |阅读模式
>>实战经验列表


社区资料下载栏目开通【ST MCU实战经验】版块,将在这个板块中,针对工程师的应用问题,ST做了详细的解答。进入ST MCU实战经验,可直接下载文档以及程序。也欢迎大家回帖交流。

提示:点击各主题,进入帖子,可下载ST工程师解答详请


一、通信接口

1. STM32F2x7_Ethernet(FreeRTOS)驱动更新

2. SPI 接口发片选信号导致死机

3. USART1不能设定600BPS的波特率

4. I2C 接口进入 Busy 状态不能退出

5. 对 Flash操作导致 USARTU接收丢数据

6. USB接口易损坏

7. UART发送数据丢失最后一个字节

8. 使用 CCM 导致以太网通信失败

9. SPI3 接口没有信号送出

10. 时钟延展导致 I2C 通信不可靠

11. M0的USART波特率自动识别问题

12. WK15 OTG做U盘主机兼容性提高

13. 以太网电路设计注意事项

14. OUG主机库在BULK传输上对NAK的处理

15. 串口断帧检测

16. VCP例程用于数据传输时丢失数据的处理

17. STM8L051F3P6串口UART数据起始位判断的问题

18. STM8L152C6T6 硬件IIC,发送从地址后无ACK信号

19. STM8中UART奇偶校验的使用方法

20. STM32以太网硬件设计——PHY

21. 一个判断I2C总线通信异常原因的方法

22. USB device库使用说明

23. STM32F103上USB的端点资源

24. 使用CubeMX生成TCPEchoServer程序

25. SPI接收数据移位

26. STM32F0中Guard Time的设置

27. LwIP内存配置

28. STM32 USB Device的简易验证方法

29. USART 中断方式接收无响应问题的一种情况及其处理方法

30. STM32 基于 Nucleo板 CAN总线的建立

31. STM8 CAN总线的IdMask模式的讲解

32. STM32F746ZG USB 驱动不正常

33. MCU在STOP状态下通过UART唤醒分析

34. 通过STM32CubeMX生成HID双向通讯工程

35. 串口工作在DMA模式下有时接收异常

36. STM32 Bootloader中 DFU使用限制

37. UART异常错误分析

38. 基于Cube库无法检测CAN2的接收中断

39. 基于STM32F7的网络时间同步客户端实现

40. HID与音频冲突问题

41. 在进行USB CDC类开发时,无法发送64整数倍的数据

42. 从零开始使用CubeMX创建以太网工程

43. STM32F4xxx的I2C总线挂起异常处理

44. LPUART唤醒STOP MODE下的MCU

45. STM32系列 MCU模拟双盘符 U盘的应用

46. CEC输出的数据和数据长度始终不匹配

47.STM8Lxxx I2C 程序第二次数据通信失败的问题分析

48.在进行 USB CDC类开发时, 无法发送64整数倍的数据(续)

49. 增加UART接口应用时的异常分析

50.UART应用异常案例分析

51. I2C配置顺序引发的异常案例

52. STM32 USBD VBUS GPIO

53. USB传输数据时出现卡顿现象

54. STM32的高速USB信号质量测试实现

55. 基于STM32 I2S的音频应用开发介绍

56. HID_CDC复合设备在WIN10的识别问题  

57. STM32F767 的 USB 工作在 HOST 模式下的远程唤醒问题  

58. 一个关于LPUART输出异常的问题分享  

59.通过 DfuSe 工具控制程序跳进 DFU 模式

60.UART IDLE中断使用-接收不定长串口数据 (2019·9·更新)

61.一个因初始化顺序而导致异常的话题 (2019.12.24)

62.MC SDK 5.x 中增加位置环 (2020.5.29)

63. 如何根据应用需求调整STM32L5的memory partition(2020.7.16)

64. 使用STM32的MPU实现代码隔离和访问控制 (2020.7.16)

二、电源与复位

1. Vbat管脚上的怪现象

2. 上电缓慢导致复位不良

3. 关闭电源还在运行

4. 使用STM32 实现锂电充电器

5. STM8L152 IDD电流测量

6. STM8连续复位问题

7. STM32F2电压调节器REGOFF与IRROFF引脚的使用

8. 使用STM8L-Discovery验证STM8L在LSI+WAIT模式下的电流

9. STM32F7与STM32F4的复位序列比较

10. STM32F107 复位标志问题

11. VBUS引脚一段时间后管脚无法正常工作的分析和解决方法  

12. Nucleo_L053不上电也能运行

13. STM32L4中STOP2模式下的漏电流

14. 在没有外置晶振时HSE_RDY异常置位

15. FLASH被异常改写   (2018.5更新)

16.与 PDR_ON 有关的一种异常现象及分析(2019·2·更新)

17.一个 STM32 芯片异常复位之案例分析(2020·2.27)

三、IAP和Bootloader

1. Boot Loader与上位机通信不稳定

2. IAP+APP 模式下不能启动 RTOS

3. 从 IAP Loader 向 App 跳转不可靠

4. STM32 MCU IAP例程跳转到APP代码简要分析

5. STM32F091从自举程序向应用程序跳转的问题与解决

6. STM32F09x不使用BOOT脚实现System Bootloader升级代码

7. STM32F0启动模式相关问题探讨

8.STM32F091空片使用System Bootloader下载代码

9.STM8L  IAP 应用程序中编程指导

10. 如何通过STM32的串口实现简易脱机编程器

11. 一种从用户代码调用系统存储器中Bootloader 的方法  

12. 利用 USB DFU实现 IAP功能

13. STM32 Bootloader中 DFU使用限制

14. STM32L011x和STM32L021x启动模式注意事项

15. STM32L011&STM32F091 空片检测进行 System Bootloader 编程注意事项

16. 无法使用内置 Bootloader 的 DFU 方式进行固件升级

17. 如何使用STM32NUCLEO 板来测试串口Bootloader

18. 在STM32L011上通过I2C接口实现IAP

19. 在IAR中实现通过将程序在SRAM中调试的方法

20. STM32F769AI 同时使能FMC 和QSPI 带来的引脚冲突问题

21. USB DFU IAP 例程移植的两个话题

22. STM32F769双bank启动

23. DFU加载 工具 DfuSeCommand的使用

24. STM32F0 使用 DFU 升级后 Leave DFU Mode 不能运行用户代码   

25.STM32F767的USB工作在HOST模式下的远程唤醒问题  (2018.12月更新)

26.STM32 Bootloader异常复位案例(2019.4)

四、存储器

1. 对 Flash操作导致 USARTU接收丢数据

2. 使用外部 SRAM 导致死机

3. SRAM 中的数据丢失

4. 干扰环境下 Flash 数据丢失

5. 使用 CCM 导致以太网通信失败

6. STM32F429使用外扩SDRAM运行程序的方法

7. 使用STVP实现对STM32L1系列EEPROM预置数据

8. FreeRTOS RAM使用情况及优化方法

9. 在IAR 6.5下如何将数据存放至flash中

10. IAR下如何让程序在RAM中运行

11. RAM上电后初始值问题

12. Stem Win 驱动移植-FLASH&PSRAM(MCP)接口驱动设计

13. LwIP内存配置

14. STM32F2高低温死机问题

15. 使用STM32F427的CCM RAM时遇到的问题

16. 利用QuadSPI外扩串行NOR Flash的实现  

17. STM32擦除内部FLASH时间过长导致IWDG复位     


18. 基于STM32CubeMX开发U盘访问应用  (2019·6·18更新)

五、模拟外设

1. ADC对小信号的转换结果为零

2. ADC键盘读不准

3. 扫描模式下 ADC 发生通道间串扰

4. DAC无法输出0V的问题分析解决

5. DAC无法输出满量程电压的分析解决

6. STM32F30x 的ADC 采样的傅立叶变换

7. STM32 F1系列 DAC的示例详解

8. ADC 连续模式采样浮空引脚问题

9. PWM硬件间隔触发ADC

10. STM32F30x 禁止ADC 已关闭情况下再次关闭ADC

11. STM32L4 系列中ADC 通道配置上的区别

12. STM32 ADC模拟看门狗及其应用

13. STM32L053 comp2 比较电压无效问题

14. 运算放大器OPAMP在STM32L4上的应用

15. STM32 OTA例程之ESP8266使用

16.  STM32多个ADC模块同时采样转换的应用示例 (2019·7·24)

六、计数外设

1. Watch Dog 失效

2. RTC计秒不均匀

3. 软件启动模式导致 IWatchDog 失效

4. STM32F030R8 定时器移植问题

5. STM32F0使用RTC Tamper的几个注意事项

6. STM32L053可控PWM脉冲方法之DMA

7. CounterMode,OCMode与OCPolarity关系

8. STM32L053可控PWM脉冲方法之DMA

9. STM32F1通用定时器示例详解—TimeBase

10. STM32F1通用定时器示例详解--TIM15_ComplementarySignals

11. STM32F334 应用于LLC + SR 的高精度 Timer 波形产生

12. HRTIMER的多种Fault事件联动机制

13. STM32通用定时器 示例详解 —One Pulse

14. 如何用LSE校准STM32F4内部RC振荡器

15. 一种使用Timer测试HSI实际值的方法

16. FreeRTOS定时器精度研究

17. HRTIMER产生多相相移信号

18. 窗口看门狗启动时异常复位问题

19. PWM硬件间隔触发ADC

20. STM32F030低温下RTC不工作

21. 教你一手 | 基于 STM32Cube 库的 Timer 捕获应用   

22.STM32F334 应用于LLC + SR 的高精度 Timer 波形产生 (2018·9·29)

23. 基于STM32定时器实现定制波形的示例 (2019·7·25)

24.STM32定时器触发SPI逐字收发之应用示例(2019.12.24)

25.MC SDK 5.x 中增加位置环 (2020.3.31)

26.STM32高精度定时器PWM输出话题 (2020.4.29)


27. 基于高级定时器的全桥移相PWM发波方案(2020.5.12)

七、内核

1. 使用指针函数产生Hard Faul

2. 调试器不能通过JTAG连接器件

3. 鬼魅一样的Hard Fault

4. 进入了已屏蔽的中断[

5. 浮点 DSP 运算效率不高

6. STM32上RTOS的中断管理

7. STM32F7与STM32F4的复位序列比较

8. STM32F30x 的ADC 采样的傅立叶变换

9. EXTI重复配置两次导致误触发中断的问题

10. STM32F3xx/STM32F4xx使用浮点开方指令

11. RMW(Read-Modify-Write)对 STM32F7xx内核运行速度的影响

12. STM32F7 MPU Cache浅析  

13. STM8使用24MHz外部晶振无法正常运行  (2018.3更新)

14. STM32F0 不同代码区跳转时总失败…这些操作你..  (2018.6更新)


八、系统外设

1. PCB 漏电引起 LSE 停振

2. 时钟失效后CPU还会正常运行

3. STM32F2中DMA的FIFO模式

4. STM32L053的GPIO翻转速度的测试

5. STM32F4xx PCROP应用

6. STM32L053的GPIO翻转速度的测试

7. 如何在IAR中配置CRC参数

8. PCROP区域函数无法被调用的问题与解决

9. 关于AN4065中STM32F0 IAP升级后的外部中断不响应问题

10. Stem Win 驱动移植-FLASH&PSRAM(MCP)接口驱动设计

11. 如何用LSE校准STM32F4内部RC振荡器

12. EXTI重复配置两次导致误触发中断的问题  

13. 时钟安全系统的应用(LES篇)  

14. 利用DFSDM开发PDM麦克风应用介绍  

15. STM32H7的FMC外设在DCACHE使能时运行不正常

16. STM32H7 DMA 传输异常案例分析   (2019·3·19更新)


九、标签和收发器

1. CR95HF的初始化步骤



十、生态系统

1. STemWin_Library_V1.1.1中STM324x9I-EVAL的RTOS工程显示不正常问题

2. MDK Logic Analyzer 功能在STM32中的实现问题

3. 在IAR6.5下如何将数据存放至flast中

4. FatSL移植笔记

5. Keil中使用STM32F4xx硬件浮点单元

6. 如何生成库文件(MDK和IAR)

7. Nand Flash文件系统解决方案

8. STVD在调试时弹出“Cannot access configuration database”的解决

9. RTOS低功耗特性的设计原理和实现

10. IAR下使用J-Trace进行指令跟踪

11. STM32上RTOS的中断管理

12. IAR下如何让程序在RAM中运行

13. 如何在IAR中配置CRC参数

14. 基于STM32F411 Nucleo板的Broadcom Wi-Fi开发套件的快速开始手册

15. 使用mbed进行STM32开发及STM32F0的时钟问题

16. 使用STM32CubeMX实现USB虚拟串口的环回测试功能

17. 多任务系统中的不可重函数使用注意事项

18. STM32 utility的hot plug功能

19. 如何将CoreMark程序移植到STM32上

20. FreeRTOS定时器精度研究

21. 如何使用Eclipse和GCC搭建STM32环境

22. 如何建立一个基于GIT的STM32库

23. 从零开始使用CubeMX创建以太网工程

24.从STM32Cube库向标准外设库移植FatFs文件系统

25. 基于 STemWin的屏幕旋转

26. 编译软件 Hex文件烧写

27. 使用B-L475E-IOT01A探索套件连接AWS IOT平台

28. USB CDC类入门培训

29. USB DFU培训

30. 用于量产烧录的拼接Bin文件操作

31. STM32免费开发环境该用谁

32. 免费全功能STM32_TrueSTUDIO_9.0  (2018.3更新)

33. 基于STM32L4 IoT探索套件开发AliOS Things  (2018.5更新)

34. TrueSTUDIO出现 Program “gcc” not found in PATH的解决  

35. STM32 FOTA 例程之 cJSON使用   

36. STM32F769DK 云端固件升级例程使用说明

37. STM32 FOTA 例程之 Paho MQTTClient embeddedC 使用

38. 基于 STM32 的阿里云物联网平台方案

39.AliOS 任务上下文切换原理分析  

40.STM32F334 上的 ADC 管脚和 DAC 管脚 复用问题  

41. STM32F769DK 云端固件升级例程软件开发文档  

42. STM32CubeL4 固件库V1.13.0版的RTC唤醒问题 (2019·6·18更新)

43.使用USB虚拟网线(USB Ethernet gadget)直连STM32MP1和Windows PC(2019.9.19)

44.零基础快速入手STM32MP1 (2019.9.19)

45.STM32L1xx与 STM32L1xx_A的差别 (2020.4.29)

十一、调试

1. 关于STM8S SWIM Error[30006]的分析

2. STVD在调试时弹出“Cannot access configuration database”的解决

3. IAR下使用J-Trace进行指令跟踪

4. 菊花链 JTAG STM32

5. STM32F411CEUx 能下载程序但不能执行

6. STM32F103C8T6 程序上电跑飞

7. 使用STM32 ST-LINK Utility 设置读保护后不能运行

8. VBUS引脚一段时间后管脚无法正常工作的分析和解决方法  

9. SWIM协议的GPIO口模拟

10. STM32F091空片使用ST-LINK烧写后复位不能运行用

11. STM32L011对空片进行编程后程序运行问题 (2019·9·12更新)

12.如何在IAR和KEIL中计算CRC值 (2019.1.2.24)

13. X_Cube_ClassB代码移植 (2019.12.24)


14.Keil中烧写STM32F750内部Flash方法 (2019.12.24)

十二、人机调试

1. 一步步使用STemWin在STM32上开发一个简单的应用

2. Stem Win 驱动移植-FLASH&PSRAM(MCP)接口驱动设计

3. GUI方案中ALPHA通道处理介绍

4. 基于FMC8080接口8位LCD的STemWin的移植

5. TouchGFX中Callback模板实现原理 (2019·9·12更新)

6. TouchGFX快速创建滑动应用例程 (2019·9·12更新)

7、TouchGFX 简单界面设计_按键控制光圈移动(2020.2.27)

8、STM32L5中如何关闭trustzone (2020.5.12)

十三、马达

1. 电机控制同步电角度测试说明



十四、安全

1. 一步一步使用STM32安全启动与固件更新(2018.3更新)


十五、其他

1. 跳不出的 while 循环

2. 外部IC连接NRST导致MCU内部复位信号失效的问题

3. 潮湿环境下不工作

4. PCB 漏电引起 LSE 停振

5. STM8L152 IDD电流测量

6. 使用STM32实现锂电池充电器

7. STM32_STM8硬件平台基本检查

8. 验证STM32F401在STOP模式下的电流

9. P-NUCLEO-IHM001 电机开发板串口调试指南

10. 一种计算CPU使用率的方法及其实现原理

11. STM32 RTC不更新原因分析

12. 关于ST库函数的代码性能对比

13. 在IAR中实现通过将程序在SRAM中调试的方法

14. M95xxx EEPROM写保护配置

15. 4SRxx的GPO的属性

16. CR95HF的初始化步骤

17. 电机控制同步电角度测试说明  

18. STM32+BLE通过 Notification与 Android应用程序通信的例程

19. M95xxx EEPROM介绍

20. STM32 DFSDM测量温度应用

21.代码实现PCROP清除

22. 理解与应用MPU的特权与用户模式

23. 用于电机控制单电阻采样PWM变形信号产生

24. STM32L低功耗模式唤醒时间测量

25. X_CUBE_SPN7程序电机启动抖动问题

26. 发现STM32防火墙的安全配置

27. ST FOC4.3库关于STM32F30x系列ICS采样代码的修改

28. 如何用STVP 命令行模式对STM8进行批量烧写(2019·9·12更新)

温馨提示:

如果您在使用ST产品过程中出现问题,欢迎在社区发新帖提问。版主和工程师网友会热心帮助您。











评分

参与人数 6ST金币 +6 收起 理由
t525 + 1 很给力!
dsctsam + 1 很给力! 赞一个!
北极熊 + 1 赞一个!
wangziwei111 + 1
tian0yan + 1 很给力!
电子星辰 + 1 很给力!

查看全部评分

回复

使用道具 举报

该用户从未签到

0

主题

5

帖子

0

蝴蝶豆

新手上路

最后登录
2016-7-26
发表于 2016-7-26 19:35:55 | 显示全部楼层
非常好的帖子,THANKS!
回复 支持 2 反对 0

使用道具 举报

该用户从未签到

47

主题

3456

帖子

30

蝴蝶豆

版主

最后登录
2022-12-25
发表于 2015-5-18 07:01:19 | 显示全部楼层
好详细,多谢分享
回复 支持 0 反对 1

使用道具 举报

该用户从未签到

3

主题

11

帖子

0

蝴蝶豆

新手上路

最后登录
1970-1-1
发表于 2014-1-23 15:10:56 | 显示全部楼层

回复:【ST MCU实战经验】栏目开通!官方解答应用问题,欢迎下载!

楼主,我想问一下,STM32F4 SPI1和SPI2自通信问题,SPI1为主模式,SPI2为从模式,可是我在设置波特率时,必须按二分频,SPI2才收得到SPI1发来的数据,如果设置为其他分频情况,将卡在while(SPI_GetFlagStatus(SPI2,SPI_FLAG_RXNE)==RESET); 这句上,还有就是SPI1和SPI2的波特率是不是必须为相同的,才能正确通信
以下是全部代码:
#include"stm32F4xx.h"
void RCC_Configuration(void);
void GPIO_Configuration(void);
void SPI_Configuration(void);
void Delay(int nCount);
int main(void)
{  RCC_Configuration();
  GPIO_Configuration();
  SPI_Configuration();
 while(1)
 { int data=0;
  SPI_SendData(SPI1,0x55);
  while(SPI_GetFlagStatus(SPI2,SPI_FLAG_RXNE)==RESET);
  data=SPI_ReceiveData(SPI2);
  if(data==0x55)
     {  while(1)
             {   GPIO_SetBits(GPIOA,GPIO_Pin_4);
                Delay(0xfffff);
                GPIO_ResetBits(GPIOA,GPIO_Pin_4);
                Delay(0xfffff);
  
             };
     }
     else while(1)
            {   GPIO_SetBits(GPIOA,GPIO_Pin_4);
               //Delay(0xfffff);
               //GPIO_ResetBits(GPIOA,GPIO_Pin_5);
               //Delay(0xfffff);
  
            };
 }
}
void RCC_Configuration()
{  RCC_APB2PeriphClockCmd(RCC_APB2Periph_SPI1, ENABLE);
  RCC_APB1PeriphClockCmd(RCC_APB1Periph_SPI2, ENABLE);
  RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA|RCC_AHB1Periph_GPIOB, ENABLE);  
}
void GPIO_Configuration()
{  GPIO_InitTypeDef GPIO_InitStructure;
  GPIO_InitStructure.GPIO_Pin=GPIO_Pin_4;
  GPIO_InitStructure.GPIO_Mode=GPIO_Mode_OUT;
  GPIO_InitStructure.GPIO_Speed=GPIO_Speed_100MHz;
  GPIO_InitStructure.GPIO_OType=GPIO_OType_PP;
  GPIO_InitStructure.GPIO_PuPd=GPIO_PuPd_UP;
  GPIO_Init(GPIOA,&GPIO_InitStructure);
  GPIO_InitStructure.GPIO_Pin=GPIO_Pin_5|GPIO_Pin_6|GPIO_Pin_7;
  GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AF;
  GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
  GPIO_InitStructure.GPIO_OType=GPIO_OType_PP;
  GPIO_InitStructure.GPIO_PuPd=GPIO_PuPd_NOPULL;
  GPIO_Init(GPIOA,&GPIO_InitStructure);
  GPIO_InitStructure.GPIO_Pin=GPIO_Pin_13|GPIO_Pin_14|GPIO_Pin_15;
  GPIO_Init(GPIOB,&GPIO_InitStructure);
}
void SPI_Configuration()
{  SPI_InitTypeDef SPI_InitStructure;
  GPIO_PinAFConfig(GPIOA, GPIO_PinSource5, GPIO_AF_SPI1);
  GPIO_PinAFConfig(GPIOA, GPIO_PinSource6, GPIO_AF_SPI1);
  GPIO_PinAFConfig(GPIOA, GPIO_PinSource7, GPIO_AF_SPI1);
   GPIO_PinAFConfig(GPIOB, GPIO_PinSource13, GPIO_AF_SPI2);
  GPIO_PinAFConfig(GPIOB, GPIO_PinSource14, GPIO_AF_SPI2);
  GPIO_PinAFConfig(GPIOB, GPIO_PinSource15, GPIO_AF_SPI2);
  SPI_InitStructure.SPI_Direction = SPI_Direction_2Lines_FullDuplex;
  SPI_InitStructure.SPI_Mode = SPI_Mode_Master;
  SPI_InitStructure.SPI_DataSize = SPI_DataSize_8b;
  SPI_InitStructure.SPI_CPOL = SPI_CPOL_Low;
  SPI_InitStructure.SPI_CPHA = SPI_CPHA_2Edge;
  SPI_InitStructure.SPI_NSS = SPI_NSS_Soft;
   SPI_InitStructure.SPI_BaudRatePrescaler = SPI_BaudRatePrescaler_2;
   SPI_InitStructure.SPI_FirstBit = SPI_FirstBit_LSB;
  SPI_Init(SPI1, &SPI_InitStructure);
  SPI_InitStructure.SPI_Mode = SPI_Mode_Slave;
   SPI_Init(SPI2, &SPI_InitStructure);
   SPI_Cmd(SPI1,ENABLE);
   SPI_Cmd(SPI2,ENABLE); 
}
void Delay(int nCount)
{ int c1=nCount;
 int c2=nCount;
 for(;c1>0;c1--)
  {
  for(;c2>0;c2--);
 };
}
先谢谢了~~
回复 支持 反对

使用道具 举报

该用户从未签到

307

主题

3432

帖子

0

蝴蝶豆

论坛元老

最后登录
2020-7-17
 楼主| 发表于 2014-1-23 15:22:54 | 显示全部楼层

回复:【ST MCU实战经验】栏目开通!应用问题,官方解答,欢迎下载!

回复第 2 楼 于2014-01-23 15:10:56发表:
楼主,我想问一下,STM32F4 SPI1和SPI2自通信问题,SPI1为主模式,SPI2为从模式,可是我在设置波特率时,必须按二分频,SPI2才收得到SPI1发来的数据,如果设置为其他分频情况,将卡在while(SPI_GetFlagStatus(SPI2,SPI_FLAG_RXNE)==RESET); 这句上,还有就是SPI1和SPI2的波特率是不是必须为相同的,才能正确通信
以下是全部代码:
#include"stm32F4xx.h"
void RCC_Configuration(void);
void GPIO_Configuration(void);
void SPI_Configuration(void);
void Delay(int nCount);
int main(void)
{  RCC_Configuration();
  GPIO_Configuration();
  SPI_Configuration();
 while(1)
 { int data=0;
  SPI_SendData(SPI1,0x55);
  while(SPI_GetFlagStatus(SPI2,SPI_FLAG_RXNE)==RESET);
  data=SPI_ReceiveData(SPI2);
  if(data==0x55)
     {  while(1)
             {   GPIO_SetBits(GPIOA,GPIO_Pin_4);
                Delay(0xfffff);
                GPIO_ResetBits(GPIOA,GPIO_Pin_4);
                Delay(0xfffff);
  
             };
     }
     else while(1)
            {   GPIO_SetBits(GPIOA,GPIO_Pin_4);
               //Delay(0xfffff);
               //GPIO_ResetBits(GPIOA,GPIO_Pin_5);
               //Delay(0xfffff);
  
            };
 }
}
void RCC_Configuration()
{  RCC_APB2PeriphClockCmd(RCC_APB2Periph_SPI1, ENABLE);
  RCC_APB1PeriphClockCmd(RCC_APB1Periph_SPI2, ENABLE);
  RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA|RCC_AHB1Periph_GPIOB, ENABLE);  
}
void GPIO_Configuration()
{  GPIO_InitTypeDef GPIO_InitStructure;
  GPIO_InitStructure.GPIO_Pin=GPIO_Pin_4;
  GPIO_InitStructure.GPIO_Mode=GPIO_Mode_OUT;
  GPIO_InitStructure.GPIO_Speed=GPIO_Speed_100MHz;
  GPIO_InitStructure.GPIO_OType=GPIO_OType_PP;
  GPIO_InitStructure.GPIO_PuPd=GPIO_PuPd_UP;
  GPIO_Init(GPIOA,&GPIO_InitStructure);
  GPIO_InitStructure.GPIO_Pin=GPIO_Pin_5|GPIO_Pin_6|GPIO_Pin_7;
  GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AF;
  GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
  GPIO_InitStructure.GPIO_OType=GPIO_OType_PP;
  GPIO_InitStructure.GPIO_PuPd=GPIO_PuPd_NOPULL;
  GPIO_Init(GPIOA,&GPIO_InitStructure);
  GPIO_InitStructure.GPIO_Pin=GPIO_Pin_13|GPIO_Pin_14|GPIO_Pin_15;
  GPIO_Init(GPIOB,&GPIO_InitStructure);
}
void SPI_Configuration()
{  SPI_InitTypeDef SPI_InitStructure;
  GPIO_PinAFConfig(GPIOA, GPIO_PinSource5, GPIO_AF_SPI1);
  GPIO_PinAFConfig(GPIOA, GPIO_PinSource6, GPIO_AF_SPI1);
  GPIO_PinAFConfig(GPIOA, GPIO_PinSource7, GPIO_AF_SPI1);
   GPIO_PinAFConfig(GPIOB, GPIO_PinSource13, GPIO_AF_SPI2);
  GPIO_PinAFConfig(GPIOB, GPIO_PinSource14, GPIO_AF_SPI2);
  GPIO_PinAFConfig(GPIOB, GPIO_PinSource15, GPIO_AF_SPI2);
  SPI_InitStructure.SPI_Direction = SPI_Direction_2Lines_FullDuplex;
  SPI_InitStructure.SPI_Mode = SPI_Mode_Master;
  SPI_InitStructure.SPI_DataSize = SPI_DataSize_8b;
  SPI_InitStructure.SPI_CPOL = SPI_CPOL_Low;
  SPI_InitStructure.SPI_CPHA = SPI_CPHA_2Edge;
  SPI_InitStructure.SPI_NSS = SPI_NSS_Soft;
   SPI_InitStructure.SPI_BaudRatePrescaler = SPI_BaudRatePrescaler_2;
   SPI_InitStructure.SPI_FirstBit = SPI_FirstBit_LSB;
  SPI_Init(SPI1, &SPI_InitStructure);
  SPI_InitStructure.SPI_Mode = SPI_Mode_Slave;
   SPI_Init(SPI2, &SPI_InitStructure);
   SPI_Cmd(SPI1,ENABLE);
   SPI_Cmd(SPI2,ENABLE); 
}
void Delay(int nCount)
{ int c1=nCount;
 int c2=nCount;
 for(;c1>0;c1--)
  {
  for(;c2>0;c2--);
 };
}
先谢谢了~~
 

楼上的问题,看我帖子给出的提示哦~
回复 支持 反对

使用道具 举报

该用户从未签到

40

主题

1635

帖子

1

蝴蝶豆

论坛元老

最后登录
2018-7-23
发表于 2014-1-24 09:53:43 | 显示全部楼层

RE:【ST MCU实战经验】栏目开通!应用问题,官方解答,欢迎下载!

非常详细,具有参考价值,支持
回复 支持 反对

使用道具 举报

该用户从未签到

3

主题

12

帖子

0

蝴蝶豆

新手上路

最后登录
1970-1-1
发表于 2014-2-14 11:37:16 | 显示全部楼层

回复:【ST MCU实战经验】栏目开通!应用问题,官方解答,欢迎下载!

 多谢,真好的板块,学嵌入式的好地方啊,来对了,哈哈。
回复 支持 反对

使用道具 举报

该用户从未签到

307

主题

3432

帖子

0

蝴蝶豆

论坛元老

最后登录
2020-7-17
 楼主| 发表于 2014-2-26 17:13:44 | 显示全部楼层

回复:【ST MCU实战经验】栏目开通!应用问题,官方解答,欢迎下载!

回复第 5 楼 于2014-02-14 11:37:16发表:
 多谢,真好的板块,学嵌入式的好地方啊,来对了,哈哈。
 

多谢支持!!
回复 支持 反对

使用道具 举报

该用户从未签到

2

主题

22

帖子

0

蝴蝶豆

初级会员

最后登录
2022-7-27
发表于 2014-3-9 13:43:20 | 显示全部楼层

RE:【ST MCU实战经验】栏目开通!应用问题,官方解答,欢迎下载!

ST社区做的确实很好 版块引导很好 资料分区也好
回复 支持 反对

使用道具 举报

该用户从未签到

15

主题

146

帖子

0

蝴蝶豆

中级会员

最后登录
2020-3-16
发表于 2014-4-3 18:52:58 | 显示全部楼层

RE:【ST工程师 MCU实战经验30篇】之USB接口易损坏

非常好的帖子,希望可以及时汇总更新,收藏了
回复 支持 反对

使用道具 举报

该用户从未签到

1

主题

21

帖子

0

蝴蝶豆

初级会员

最后登录
1970-1-1
发表于 2014-4-4 18:00:50 | 显示全部楼层

回复:【ST工程师 MCU实战经验30篇】之USB接口易损坏

非常不错哦,支持下
回复 支持 反对

使用道具 举报

该用户从未签到

1

主题

21

帖子

0

蝴蝶豆

初级会员

最后登录
1970-1-1
发表于 2014-4-4 18:00:51 | 显示全部楼层

回复:【ST工程师 MCU实战经验30篇】之USB接口易损坏

非常不错哦,支持下
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 注册/登录

本版积分规则

关闭

站长推荐上一条 /3 下一条

Archiver|手机版|小黑屋|论坛-意法半导体STM32/STM8技术社区

GMT+8, 2024-4-27 17:10 , Processed in 1.219662 second(s), 45 queries .

Powered by Discuz! X3.4

Copyright © 2001-2024, Tencent Cloud.

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