金牌会员
 
- 积分
- 1429
- 金钱
- 1429
- 注册时间
- 2021-4-28
- 在线时间
- 536 小时
|

楼主 |
发表于 2021-9-8 20:15:13
|
显示全部楼层
问题解决
先看源代码
u8 OV7725_Init(void)
{
u16 i=0;
u16 reg=0;
//设置IO
GPIO_InitTypeDef GPIO_Initure;
__HAL_RCC_GPIOA_CLK_ENABLE(); //开启GPIOA时钟
__HAL_RCC_GPIOB_CLK_ENABLE(); //开启GPIOB时钟
__HAL_RCC_GPIOC_CLK_ENABLE(); //开启GPIOC时钟
__HAL_RCC_GPIOD_CLK_ENABLE(); //开启GPIOD时钟
__HAL_RCC_GPIOG_CLK_ENABLE(); //开启GPIOG时钟
__HAL_RCC_AFIO_CLK_ENABLE(); //开启AFIO时钟
//PA8
GPIO_Initure.Pin=GPIO_PIN_8; //PA8
GPIO_Initure.Mode=GPIO_MODE_INPUT; //输入
GPIO_Initure.Pull=GPIO_PULLUP; //上拉
GPIO_Initure.Speed=GPIO_SPEED_FREQ_HIGH; //高速
HAL_GPIO_Init(GPIOA,&GPIO_Initure);
HAL_GPIO_WritePin(GPIOA,GPIO_PIN_8,GPIO_PIN_SET); //PA8输出高电平
//PB3,4
GPIO_Initure.Pin=GPIO_PIN_3|GPIO_PIN_4; //PB3,4
GPIO_Initure.Mode=GPIO_MODE_OUTPUT_PP; //推挽输出
HAL_GPIO_Init(GPIOB,&GPIO_Initure);
HAL_GPIO_WritePin(GPIOB,GPIO_PIN_3,GPIO_PIN_SET); //PB3输出高电平
HAL_GPIO_WritePin(GPIOB,GPIO_PIN_4,GPIO_PIN_SET); //PB4输出高电平
//PC0~7,输入
GPIO_Initure.Pin=0xff;
GPIO_Initure.Mode=GPIO_MODE_INPUT; //输入
GPIO_Initure.Pull=GPIO_PULLUP; //上拉
GPIO_Initure.Speed=GPIO_SPEED_FREQ_HIGH; //高速
HAL_GPIO_Init(GPIOC,&GPIO_Initure);
//PD6
GPIO_Initure.Pin=GPIO_PIN_6; //PD6
GPIO_Initure.Mode=GPIO_MODE_OUTPUT_PP; //推挽输出
HAL_GPIO_Init(GPIOD,&GPIO_Initure);
HAL_GPIO_WritePin(GPIOD,GPIO_PIN_6,GPIO_PIN_SET); //PD6输出高电平
//PG14,15
GPIO_Initure.Pin=GPIO_PIN_14|GPIO_PIN_15; //PG14,15
GPIO_Initure.Mode=GPIO_MODE_OUTPUT_PP; //推挽输出
HAL_GPIO_Init(GPIOG,&GPIO_Initure);
HAL_GPIO_WritePin(GPIOG,GPIO_PIN_14,GPIO_PIN_SET); //PG14输出高电平
HAL_GPIO_WritePin(GPIOG,GPIO_PIN_15,GPIO_PIN_SET); //PG15输出高电平
__HAL_AFIO_REMAP_SWJ_DISABLE(); //在这里竟然把SWD和JTAG都关了 问题就出在这
SCCB_Init(); //初始化SCCB 的IO口
if(SCCB_WR_Reg(0x12,0x80))return 1; //软复位OV7725
delay_ms(50);
reg=SCCB_RD_Reg(0X1c); //读取厂家ID 高八位
reg<<=8;
reg|=SCCB_RD_Reg(0X1d); //读取厂家ID 低八位
if(reg!=OV7725_MID)
{
printf("MID:%d\r\n",reg);
return 1;
}
reg=SCCB_RD_Reg(0X0a); //读取厂家ID 高八位
reg<<=8;
reg|=SCCB_RD_Reg(0X0b); //读取厂家ID 低八位
if(reg!=OV7725_PID)
{
printf("HID:%d\r\n",reg);
return 2;
}
//初始化 OV7725,采用QVGA分辨率(320*240)
for(i=0;i<sizeof(ov7725_init_reg_tb1)/sizeof(ov7725_init_reg_tb1[0]);i++)
{
SCCB_WR_Reg(ov7725_init_reg_tb1[0],ov7725_init_reg_tb1[1]);
}
return 0x00; //ok
}
下面看看这句代码
/**
* @brief Disable the Serial wire JTAG configuration
* @note DISABLE: JTAG-DP Disabled and SW-DP Disabled /* 这里关闭了SWD和JTAG 导致不能下载程序了 */
* @retval None
*/
#define __HAL_AFIO_REMAP_SWJ_DISABLE() AFIO_DBGAFR_CONFIG(AFIO_MAPR_SWJ_CFG_DISABLE)
问题解决 将上述代码修改为
__HAL_AFIO_REMAP_SWJ_NOJTAG()
看看这句的功能
/**
* @brief Enable the Serial wire JTAG configuration
* @note NOJTAG: JTAG-DP Disabled and SW-DP Enabled /* 关闭JTAG 但不关闭SWD 便可继续下载程序 */
* @retval None
*/
#define __HAL_AFIO_REMAP_SWJ_NOJTAG() AFIO_DBGAFR_CONFIG(AFIO_MAPR_SWJ_CFG_JTAGDISABLE) |
|