Actualmente estoy intentando crear mi propia placa de desarrollo stm32. Tengo el microcontrolador stm32f100c4t6 montado en pcb. Estoy usando la edición gratuita de Atollic True Studio. Yo había hecho un pequeño programa de parpadeo como abajo.
#include <stddef.h>
#include "stm32f10x.h"
void delay(int count)
{
volatile int i;
for (i = 0; i < count; i++)
{
}
}
GPIO_InitTypeDef GPIO_InitStructure;
int main(void)
{
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_3 | GPIO_Pin_4 | GPIO_Pin_5 | GPIO_Pin_6 ;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_Init(GPIOA, &GPIO_InitStructure);
while (1)
{
delay(100000);
GPIOA->BSRR = 0xF << 3;
delay(100000);
GPIOA->BRR = 0xF << 3;
}
}
He usado el demostrador del cargador de flash st en Windows para cargar el programa en la memoria flash. sin embargo, detecta que el tamaño de la memoria flash es de 32 KB, mientras que en realidad tiene 16 KB. pero el programa cargado a flash y verificado con éxito. (Detecta el ID del dispositivo como 0x420, que es para la línea de valor de densidad media, mientras que este microcontrolador es la línea de valor de baja densidad).
Cuando cambio la configuración del puente de BOOT0 a tierra para ponerlo en modo de ejecución, no sucede nada. El pin PA3 a P6 permanece en 0v. He conectado el cristal de 24 MHz como crytal principal y 32.768 KHz como el cristal RTC. Puedo obtener voltajes alrededor de 1.8v a 24 MHz de cristal. Las otras clavijas de cristal permanecen en 0v. ¿Esto está mal?
También he intentado stm32flash en linux para cargar el programa, carga y verifica el programa con éxito. pero, también detecta el microcontrolador como línea de valor de densidad mediam (128 KB).
Estoy atrapado en esta situación. Cualquier ayuda sería apreciable.
Gracias por leer.
EDITAR: He adjuntado el enlace de esquema .