费了九牛二虎之力,先是自己飞线(废了一块板子),后又由于飞线没有固定飞线脱落(不敢自己再飞),最后拿胶枪终于固定了一块板子,又由于触电接触不量,软件Max Clock设置不正确等问题,反复折腾,最后终于成功访问了板子。终于可以上板调试了,祝贺一下先!!!
赶紧实验第一个程序,新板子的LED是接在PB4上的,按照例子,初始化LED,电灯失败!代码如下:
void LED_Init(void)
{
RCC->APB2ENR|=1<<3; //使能PORTB时钟
GPIOB->CRL&=0XFFF0FFFF;
GPIOB->CRL|=0X00030000;//PB4 推挽输出
GPIOB->ODR|=1<<4; //PB4 输出高
}
int main(void)
{
Stm32_Clock_Init(9);
delay_init(72);
LED_Init();
while(1)
{
LEDB = 0;
delay_ms(500);
LEDB = 1;
delay_ms(500);
}
}
查阅了STM32的手册,原来PB4在上电复位后,默认是用于JTAG调试的。
复位期间和刚复位后,复用功能未开启,I/O端口被配置成浮空输入模式(CNFx[1:0]=01b,MODEx[1:0]=00b)。 复位后,JTAG引脚被置于输入上拉或下拉模式:
─ PA15:JTDI置于上拉模式
─ PA14:JTCK置于下拉模式
─ PA13:JTMS置于上拉模式
─ PB4: JNTRST置于上拉模式
软件将JTAG调试关闭后,LED闪亮起来,太美了!
int main(void)
{
Stm32_Clock_Init(9);
delay_init(72);
LED_Init();
JTAG_Set(JTAG_SWD_DISABLE);
JTAG_Set(SWD_ENABLE);
while(1)
{
LEDB = 0;
delay_ms(500);
LEDB = 1;
delay_ms(500);
}
}