萌新自學stm完成畢業設計,從網上買了一塊stm32f103c8t6的最小系統版就開始了



用的是STM32 ST LINK Utility 燒錄hex檔案 三種啟動模式的跳線帽形狀如 B0- 空 B0+
B1- 空 B1+
這種樣子 我一直都是B0- 空
B1- 空
這樣連著(應該是flash啟動)這里不是很明白 希望大神知道的講講 主要問題在下面
然后寫了一個程式 是串口通信的 結果發現燒錄進去之后完全沒反應,所以又試了給IO口電平點亮小燈珠的程式,
也完全沒有反應,例如明明想點亮A1口,A1口接燈珠不亮,奇怪的是A12口沒有對它進行任何配置,卻一直亮著,A12下方的A15腳接燈珠微微亮,其他引腳無論怎么配置無效果 燒寫軟體應該顯示是燒寫成功的這是連接A15的圖

這是燒寫軟體的圖

下面是主要代碼
void GPIO_Configuration(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1,ENABLE);
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);
RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE);
GPIO_InitStructure.GPIO_Pin=GPIO_Pin_9;
GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AF_PP;
GPIO_Init(GPIOA,&GPIO_InitStructure);//ê?3?òy??
GPIO_InitStructure.GPIO_Pin=GPIO_Pin_10;
GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IPU;//GPIO_Mode_IN_FLOATING;
GPIO_Init(GPIOA,&GPIO_InitStructure);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1|GPIO_Pin_8;//LED GPIO_Pin_All
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_Init(GPIOA, &GPIO_InitStructure);
}
int main(void)
{
GPIO_Configuration();
while(1)
{
SystemInit();
GPIO_SetBits(GPIOA,GPIO_Pin_1|GPIO_Pin_8);
delay_ms(500);
//GPIO_ResetBits(GPIOA,GPIO_Pin_12);
//delay_ms(500);
}
}
因為剛學的,不怎么了解,感覺引腳的復用,或者是用mdk編譯時那個設定那個72MHz或者8Hz都不怎么懂 感覺都可能出問題 或者干脆是板子壞了 摸不著頭腦
求教一下大家,到底是哪出了問題?
uj5u.com熱心網友回復:
看名字 SystemInit 這個不該放到while回圈中的uj5u.com熱心網友回復:
感覺一樓說的有關系,把systeminit()放在回圈外面試試?另外,光使用GPIO的話,是沒必要開復用功能時鐘的把RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE);
uj5u.com熱心網友回復:
等等等等,你這個是要實作LED閃爍功能嗎?那你應該把你連接LED哪個GPIO 500ms 電平翻轉一次。
你先置1了A1,A8,又置0了A12,這是什么意思?這樣燈是不可能閃爍的吧!
uj5u.com熱心網友回復:
感覺上面大佬說的很清楚了uj5u.com熱心網友回復:
不錯不錯不粗uj5u.com熱心網友回復:
系統時鐘配置、外設配置(GPIO、中斷、UART等)等操作只需要一次操作即可,需要放置在回圈外,另外查一下有沒有在SystemInit 函式里面配置系統時鐘。uj5u.com熱心網友回復:
代碼問題,回圈體的錯誤轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/117201.html
標籤:其他硬件開發
