MM32G0140核心板,使用M0单片机MM32G0141C4PV。
核心板一端是串口调试接口,好像不支持程序下载。一端是mini SWD仿真接口,这边的接口对于本人来说,根本就没有用,因为手头mini SWD插头。
拿到开发板,第一件事一般是先点个灯试试。于是从录动微官方下载了类似的开发板开发秩序包MM32G0140_Lib_Samples。打开里面的GPIO_LED_Toggle。
先试试看ST-link是否连接到MM32G0141吧,一看,居然连接不上:
检查端口,没错,这是按芯片手册的接法接的
换了jlink,还是无法连接到芯片。每个开发板上应该有电源指示LED吧,怎么也没有亮起?莫非板子的焊接有问题,或是板子设计有问题?于是只能暂时搁置。
第二天,果真在放大镜下看到第4脚VCC和第5脚GND居然是短路的,幸好SWD旁边的电源供电插针没有接上插帽,因为这个插针是用来连接3.3V输入电源的。
顺便通过万用表测试,LED接的是PA15引脚,PA15输出低电平时灯亮。
把VCC和GND短路点处理干净后,插上电源供电插帽,电源指示LED亮起。
再次接上STlink,这次能认到芯片了,下载也还正常了,但就是接上PA15的LED不亮,虽然原例程中的代码已经修改,控制了PA15的电平。
void GPIO_Configure(void)
{
GPIO_InitTypeDef GPIO_InitStruct;
RCC_AHBPeriphClockCmd(RCC_AHBENR_GPIOA, ENABLE);
GPIO_StructInit(&GPIO_InitStruct);
GPIO_InitStruct.GPIO_Pin = GPIO_Pin_9 | GPIO_Pin_10 | GPIO_Pin_11 | GPIO_Pin_12| GPIO_Pin_15;
GPIO_InitStruct.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStruct.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_Init(GPIOA, &GPIO_InitStruct);
GPIO_WriteBit(GPIOA, GPIO_Pin_9 | GPIO_Pin_10 | GPIO_Pin_11 | GPIO_Pin_12| GPIO_Pin_15, Bit_SET);//GPIO_Pin_15是加上去的
}
void GPIO_IO_Toggle(GPIO_TypeDef *GPIOn, uint16_t PINn)
{
if (Bit_RESET == GPIO_ReadOutputDataBit(GPIOn, PINn))
{
GPIO_SetBits(GPIOn, PINn);
}
else
{
GPIO_ResetBits(GPIOn, PINn);
}
}
void GPIO_LED_Toggle_Sample(void)
{
printf("\r\nTest %s", __FUNCTION__);
GPIO_Configure();
while (1)
{
GPIO_IO_Toggle(GPIOA, GPIO_Pin_9);
GPIO_IO_Toggle(GPIOA, GPIO_Pin_10);
GPIO_IO_Toggle(GPIOA, GPIO_Pin_11);
GPIO_IO_Toggle(GPIOA, GPIO_Pin_12);
GPIO_IO_Toggle(GPIOA, GPIO_Pin_15);
PLATFORM_DelayMS(100);
}
}
于是进入仿真模式,查看寄存器值的变化。寄存器的值能变化,接在PA15的LED也能点亮,但想退出仿真模式,结果退也退不出来,只能强制退出。
再次检查烧开录设置,没有错!
要不重新上电试试吧,怎么?也不会闪灯。
看来只能厂家协助解决了。