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);
- }
-
- 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也能点亮,但想退出仿真模式,结果退也退不出来,只能强制退出。再次检查烧开录设置,没有错! 要不重新上电试试吧,怎么?也不会闪灯。 看来只能厂家协助解决了。 等待着-----
|