csz9981 发表于 2019-4-19 20:13:36

MCO(PA8)在DEBUG的时候不输出波形,会是什么原因??

我把几个时钟源都打开了, PA8口也配置成辅助功能输出了, 输出信号不论选择的是HSE,HSI, 在DEBUG的时候,2个LED信号(PB0、PB5)能正常翻转,但是MCO(PA8)信号,始终都是0。 为什么,什么原因会造成这种情况呢?

csz9981 发表于 2019-4-19 20:16:51

编码如下:



int main(void)
{
Stm32_Clock_Init(9);         //系统时钟设置
delay_init(72);                 //延时初始化
LED_Iinit();

RCC->APB2ENR |= 1<<2;                //开PA的时钟,
GPIOA->CRH &= 0XFFFFFFF0;        //清空旧设置,
GPIOA->CRH |= 0X0000000B;        //配置为复用推挽输出,50MHz
//GPIOA->ODR |= 1<<8;                        //PA8=1
RCC->CFGR|=0x05000000;//MCO:HSE
       
while(1)
{
//LED0 = 1;
//LED1 = 1;
GPIOB->ODR |= 0X00000020;                //总线操作
GPIOE->ODR |= 0X00000020;
delay_ms(5);
//LED0 = 0;
//LED1 = 0;
PBout(5) = 0;                                        //位操作
PEout(5) = 0;
delay_ms(5);
       
}
}

wenyangzeng 发表于 2019-4-19 20:47:26

本帖最后由 wenyangzeng 于 2019-4-19 21:27 编辑

csz9981 发表于 2019-4-19 20:16
编码如下:



在CubeMX中PA8输出MCO的配置是这样的:
GPIO_InitStruct.Pin = GPIO_PIN_8;
GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
GPIO_InitStruct.Pull = GPIO_PULLUP;
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH;
GPIO_InitStruct.Alternate = GPIO_AF0_MCO;
HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);

初始化后还要一句:
HAL_RCC_MCOConfig(RCC_MCO1, RCC_MCO1SOURCE_HSI, RCC_MCODIV_1);
楼主可以参照一下,检查是哪个设置遗漏了。





Kevin201707 发表于 2019-4-20 20:56:40

配置问题,PA8复用功能有很多,你没打开作为MCO功能。

csz9981 发表于 2019-4-21 21:08:23

Kevin201707 发表于 2019-4-20 20:56
配置问题,PA8复用功能有很多,你没打开作为MCO功能。

应该怎样打开,MCO功能 ?

Kevin201707 发表于 2019-4-21 22:59:05

使用STM32CubeMX直接配置生成code

toofree 发表于 2019-4-21 23:45:07

不要用软件仿真,软仿真的PORTA.8是IO,是PA8对应的输出寄存器位,而你要的MCO功能不是寄存器,无法仿真。
因此,如果要验证MCO,那么用实体板卡跑个程序就知道了。

csz9981 发表于 2019-4-22 15:59:54

toofree 发表于 2019-4-21 23:45
不要用软件仿真,软仿真的PORTA.8是IO,是PA8对应的输出寄存器位,而你要的MCO功能不是寄存器,无法仿真。
...

困惑了几天的问题,最终的结果是:软件没这个功能,臣妾做不到呀......唉,是我想多了。

五哥1 发表于 2019-4-22 18:19:34

大多数试验还是要硬件配合才能,仿真还有限制

csz9981 发表于 2019-4-22 21:41:52

五哥1 发表于 2019-4-22 18:19
大多数试验还是要硬件配合才能,仿真还有限制

感谢你。
页: [1] 2
查看完整版本: MCO(PA8)在DEBUG的时候不输出波形,会是什么原因??