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

关于STM32F103的SPI3与debug时时钟错乱的相关问题

[复制链接]
weber33 提问时间:2020-10-29 11:18 /
问题描述:
STM32F103RCT6 使用SPI3与从设备通信时,烧写程序后板子自己运行SPI3的时钟正常(如图1),但是在MDK中使用debug功能调试时时钟不正常(如图2)。
自己运行时,只有接收到命令进行SPI3读写时会有时钟信号。而debug

dubug图标

dubug图标
时,只要点

运行

运行
就会一直有错乱的时钟,感觉是和其他信号串了。

图1

图1
1,烧写后,板子上电自己运行时SPI3的时钟

图2

图2
2,使用MDKdebug功能调试时点击,然后全速运行SPI3的时钟。
但是,已配置端口复用,管教重映射关闭JTAG开启SWD
RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE);  //使能复用功能
         GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable,ENABLE);  //重映射SWJ-JTAG  接口,开启SWD禁止JTAG
目前:
1、  整个程序运行的话有些逻辑不能正常工作,debug时不能正常工作很难进行调试。
2、  直接上电不debug运行,SPI3的通信有时正常有时不正常。
SPI部分程序:
void SPI3_TemFPGA_Init(void)
{
SPI_InitTypeDef SPI_InitStructure;
GPIO_InitTypeDef GPIO_InitStructure;
  /*Enable SPI2 and GPIO clocks */
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB | RCC_APB2Periph_GPIOA |RCC_APB2Periph_GPIOC , ENABLE);//
         RCC_APB1PeriphClockCmd(RCC_APB1Periph_SPI3,ENABLE);
         
         RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE);  //使能复用功能
//      /*重映射SPI3*/
//      GPIO_PinRemapConfig(GPIO_Remap_SPI3,ENABLE);
         GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable,ENABLE);  //重映射SWJ-JTAG  接口,开启SWD禁止JTAG
  /*Configure SPI2 pins: SCK, MISO and MOSI */
GPIO_InitStructure.GPIO_Pin = SPI3_TemFPGA_PIN_SCK |SPI3_TemFPGA_PIN_MOSI;  //|SPI3_TemFPGA_PIN_MISO;
  GPIO_InitStructure.GPIO_Mode= GPIO_Mode_AF_PP;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(SPI3_TemFPGA_GPIO, &GPIO_InitStructure);
         
         GPIO_InitStructure.GPIO_Pin= SPI3_TemFPGA_PIN_MISO  ;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
GPIO_Init(SPI3_TemFPGA_GPIO, &GPIO_InitStructure);
  /*Configure I/O for Flash Chip select */
GPIO_InitStructure.GPIO_Pin = SPI3_TemFPGA_CS;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
         GPIO_InitStructure.GPIO_Speed= GPIO_Speed_50MHz;
GPIO_Init(SPI3_TemFPGA_CSGPIO, &GPIO_InitStructure);
  /*Deselect the FLASH: Chip Select high */
SPI3_TemFPGA_CS_HIGH();
// SPI3_TemFPGA_CS_LOW();
         
         /*DRDY1 */
GPIO_InitStructure.GPIO_Pin = FPGA_AD1_DRDY_PIN ;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
GPIO_Init(FPGA_AD1_DRDY_GPIO, &GPIO_InitStructure);
  /*DRDY2 */
GPIO_InitStructure.GPIO_Pin = FPGA_AD2_DRDY_PIN ;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
GPIO_Init(FPGA_AD2_DRDY_GPIO, &GPIO_InitStructure);
   /* DRDY3 */
GPIO_InitStructure.GPIO_Pin = FPGA_AD3_DRDY_PIN ;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
GPIO_Init(FPGA_AD3_DRDY_GPIO, &GPIO_InitStructure);
     /* CNT */
GPIO_InitStructure.GPIO_Pin = FPGA_CNT_DRDY_PIN ;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
GPIO_Init(FPGA_CNT_DRDY_GPIO, &GPIO_InitStructure);
SPI_I2S_DeInit(SPI3);
  /*SPI3 configuration */
SPI_InitStructure.SPI_Direction = SPI_Direction_2Lines_FullDuplex;
SPI_InitStructure.SPI_Mode = SPI_Mode_Master;
SPI_InitStructure.SPI_DataSize = SPI_DataSize_16b;
SPI_InitStructure.SPI_CPOL = SPI_CPOL_Low;
SPI_InitStructure.SPI_CPHA = SPI_CPHA_1Edge;
SPI_InitStructure.SPI_NSS = SPI_NSS_Soft;
SPI_InitStructure.SPI_BaudRatePrescaler = SPI_BaudRatePrescaler_32;
SPI_InitStructure.SPI_FirstBit = SPI_FirstBit_MSB;
SPI_InitStructure.SPI_CRCPolynomial = 7;
SPI_Init(SPI3, &SPI_InitStructure);
         
//      SPI_SSOutputCmd(SPI3,ENABLE);
  /*Enable SPI1  */
SPI_Cmd(SPI3, ENABLE);
}
头文件中的相关定义:
/*********************************************************/
///* Defines for the SPI and GPIO pins usedto drive the SPI Flash */
#define SPI3_TemFPGA                 SPI3
#define SPI3_TemFPGA_CLK             RCC_APB1Periph_SPI3
#define SPI3_TemFPGA_GPIO            GPIOB
#define SPI3_TemFPGA_GPIO_CLK        RCC_APB2Periph_GPIOB
#define SPI3_TemFPGA_CSGPIO          GPIOA
#define SPI3_TemFPGA_CSGPIO_CLK      RCC_APB2Periph_GPIOA
#define SPI3_TemFPGA_CS                                                  GPIO_Pin_15
#define SPI3_TemFPGA_PIN_SCK         GPIO_Pin_3
#define SPI3_TemFPGA_PIN_MISO        GPIO_Pin_4
#define SPI3_TemFPGA_PIN_MOSI        GPIO_Pin_5
/* Select SPI FLASH: Chip Select pinlow  */
#define SPI3_TemFPGA_CS_LOW()       GPIO_ResetBits(SPI3_TemFPGA_CSGPIO,SPI3_TemFPGA_CS)
/* Deselect SPI FLASH: Chip Select pin high*/
#define SPI3_TemFPGA_CS_HIGH()      GPIO_SetBits(SPI3_TemFPGA_CSGPIO,SPI3_TemFPGA_CS)
#define FPGA_AD1_DRDY_PIN                GPIO_Pin_6   
#define FPGA_AD1_DRDY_GPIO             GPIOC
#define FPGA_AD1_DRDY_GPIO_CLK      RCC_APB2Periph_GPIOC
#define FPGA_AD2_DRDY_PIN                GPIO_Pin_7   
#define FPGA_AD2_DRDY_GPIO             GPIOC
#define FPGA_AD2_DRDY_GPIO_CLK      RCC_APB2Periph_GPIOC
#define FPGA_AD3_DRDY_PIN                GPIO_Pin_8   
#define FPGA_AD3_DRDY_GPIO             GPIOC
#define FPGA_AD3_DRDY_GPIO_CLK      RCC_APB2Periph_GPIOC
#define FPGA_CNT_DRDY_PIN                GPIO_Pin_9   
#define FPGA_CNT_DRDY_GPIO             GPIOC
#define FPGA_CNT_DRDY_GPIO_CLK      RCC_APB2Periph_GPIOC
#define ReadAD1DRDYState()                   GPIO_ReadInputDataBit(FPGA_AD1_DRDY_GPIO,FPGA_AD1_DRDY_PIN)
#define ReadAD2DRDYState()                  GPIO_ReadInputDataBit(FPGA_AD2_DRDY_GPIO, FPGA_AD2_DRDY_PIN)
#define ReadAD3DRDYState()                  GPIO_ReadInputDataBit(FPGA_AD3_DRDY_GPIO, FPGA_AD3_DRDY_PIN)
#define ReadCNTDRDYState()                   GPIO_ReadInputDataBit(FPGA_CNT_DRDY_GPIO,FPGA_CNT_DRDY_PIN)

收藏 1 评论0 发布时间:2020-10-29 11:18

举报

0个回答

所属标签

相似问题

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
微信公众号二维码 微信公众号
手机版二维码 手机版