標籤:keil stm32 旋轉編碼器
..\..\SYSTEM\usart\usart.c(1): error: #5: cannot open source input file "sys.h": No such file or directory
#include "..\sys\sys.h"這樣就可以找到路徑了
再次編譯出現了問題
..\..\SYSTEM\usart\..\sys\sys.h(3): error: #5: cannot open source input file "stm32f10x_lib.h": No such file or directory沒有stm32f10x_lib.h這個庫函數
怎麼辦???
上網查了很多資料,都說新版本的 MDK 把 stm32f10x_lib.h 這個檔案已經變成
stm32f10x.h 了。而且都是說把 stm32f10x.h 改成 stm32f10x_lib.h,但是怎麼改卻
沒說明。首先找到安裝路徑下的這個檔案夾
注意一定要是 Backup.001 裡面的 ARM 中才找到這個,只有這個 STM32F10x 的
檔案夾裡才有"stm32f10x_lib.h",其他地方時沒有的。然後把 STM32F10x 這個文
件整個複製下來。粘貼到工程檔案中,路徑隨便,但一定要和該工程的其他東西
放在同一個檔案夾中
這個只要把..\..\用好就行了 和linux下面的cd .. /../..
目錄結構如此可以解決這個問題
可是我的電腦裡面就是沒有這個標頭檔,我的編譯再次出現了困難?????
後來在網上看到一個文章發現這是舊版的才有新版的只需要使用stm32f10x.h就可以了
後面又出現了一個..\SYSTEM\sys\sys.c(76): error: #136: struct "<unnamed>" has no field "IPR"
..\HARDWARE\EXTI\exti.c(65): error: #20: identifier "EXTI15_10_IRQn" is undefined
直接用40代替
..\HARDWARE\EXTI\exti.c - 0 Error(s), 0 Warning(s).
..\HARDWARE\TIMER\timer.c(42): error: #20: identifier "TIM4_IRQn" is undefined
直接用30代替
..\HARDWARE\TIMER\timer.c(85): error: #20: identifier "TIM3_IRQn" is undefined
直接用29代替
..\HARDWARE\TIMER\timer.c - 0 Error(s), 0 Warning(s).
//配置向量表
#ifdef VECT_TAB_RAM
MY_NVIC_SetVectorTable(NVIC_VectTab_RAM, 0x0);
#else
MY_NVIC_SetVectorTable(NVIC_VectTab_FLASH, 0x0);
#endif
..\SYSTEM\sys\sys.c(127): error: #20: identifier "NVIC_VectTab_FLASH" is undefined
用8位的單片機,一般C語言中可以對某寄存器或輸出連接埠進行移位操作和位取反操作,可以使LED燈流水或閃爍.我想問下:1. STM32對GPIO操作一般用庫函數,那麼怎麼使某一位連接埠取反?怎麼使某口移位流水? 請寫個示範代碼.2.我見一個例子中對PC6連接埠某個LED閃爍代碼如下,不知是什麼意思? 是不是取反操作?為什麼要先讀出位?GPIO_WriteBit(GPIOC, GPIO_Pin_6, (BitAction)(1 -GPIO_ReadOutputDataBit(GPIOC, GPIO_Pin_6)));3.中斷向量表是不是都是固定如下的?還是某些情況要重設?/* Set the Vector Table base location at 0x20000000 */ NVIC_SetVectorTable(NVIC_VectTab_RAM, 0x0); #else /* VECT_TAB_FLASH */ /* Set the Vector Table base location at 0x08000000 */ NVIC_SetVectorTable(NVIC_VectTab_FLASH, 0x0);