STM32F030的PF0、PF1作为普通IO使用时无法正常输出高低电平
如下配置无法正常运行
GPIO_InitTypeDef GPIO_InitStructure;
/* GPIO Periph clock enable */
RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOF, ENABLE);
/* Configure IO in output pushpull mode */
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;
GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;
GPIO_Init(GPIOF, &GPIO_InitStructure);
GPIO_SetBits(GPIOF, GPIO_Pin_1);
原因:
PF0,PF1在上电初始化过程中默认打开HSE时钟,这两个引脚作为晶振信号输入。
上电—>SystemInit()—>SetSysClock()
—>RCC->CR |= ((uint32_t)RCC_CR_HSEON)/* Enable HSE */
解决办法:
1.在时钟初始化时增加RCC->CR &= ~((uint32_t)RCC_CR_HSEON);
2.在PF0、PF1初始化时增加
GPIO_InitTypeDef GPIO_InitStructure;
/*STM32F030使用PF0 PF1,需要关闭HSE时钟*/
RCC->CR &= ~((uint32_t)RCC_CR_HSEON);
/* GPIO Periph clock enable */
RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOF, ENABLE);
/* Configure IO in output pushpull mode */
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;
GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;
GPIO_Init(GPIOF, &GPIO_InitStructure);
GPIO_SetBits(GPIOF, GPIO_Pin_1);
STM32F0 强制设置TRACE功能,提示TRACE HW not present
Cortex-M0不支持Trace功能,因为是ARM V6结构,较老,没有ITM功能,所以无论你用Jlink,还是STLink,都不能用到Trace。
上一篇:STM32F103 - ADC采集电压
下一篇:CAN通信波特率与每秒收发帧数
推荐阅读最新更新时间:2024-03-16 16:27
设计资源 培训 开发板 精华推荐
- RT-Thread Smart正式上线,源代码可开放下载
- 苹果更新了Windows版迁移助理软件:兼容Big Sur系统
- OPPO Reno5系列或有三款机型以及搭载三款不同的芯片
- 华为折叠新机Mate X2现身于工信部网站
- 仅128GB储存M1 MacBook Air现身教育机构页面
- 社会准备好让完全无人驾驶汽车上路了吗?
- warning: #1295-D: Deprecated declaration spistar - give arg types
- PIC12F675单片机LED控制程序
- PIC16F877单片机DS18B20数码管温度计仿真程序 可显示负温度
- PIC单片机按键控制PWM输出LED灯亮度C语言程序