<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                企業??AI智能體構建引擎,智能編排和調試,一鍵部署,支持知識庫和私有化部署方案 廣告
                經過今天一天的努力終于完成了我的stm32第一個程序;我也是今天才開始接觸stm32。 由于苦于沒有資料,木有例程,找到的例程都是帶有庫的,這樣對stm32基礎的管腳配置就不容易懂了,主要是沒有一個具體的輪廓。 經過對庫文件的研究,和看了好幾節視頻,又根據自己以前搞430和arm9的經驗,就按著以前的思路進行研究,終于開發出自己的第一個LED程序; 1、創建工程 (1)Project ?--> ? New uvision Project? (2)選擇工程要保存的地方 (3)選擇CPU (4)選擇“是”(如果你使用從STM下載的庫的話,就選“否”) ![](https://box.kancloud.cn/2016-06-21_576915b0b2b38.jpg) (5)修改一下代碼(如果不注視掉紅色部分,會出現錯誤) ~~~ ; Reset handler Reset_Handler PROC EXPORT Reset_Handler [WEAK] IMPORT __main ;IMPORT SystemInit ;LDR R0, =SystemInit ;BLX R0 LDR R0, =__main BX R0 ENDP ~~~ (6)加入定義 Flash ?--> Flash config tools --> ?C/C++ ?--> 在Defines里面添加:STM32F10X_HD 不然也會提示錯誤! (7)Jlink下載設置(如果你用的是Jlink可以設置下) 在(6)的Flash config tools中的Debug中選中use [J-LINK / J-Trace Cortex ] -->Setting --> Flash Download 按照如下設置 ![](https://box.kancloud.cn/2016-06-21_576915b0d40f8.jpg) 這樣算是大致設置好了。 2、編寫時鐘初始化程序 ![](https://box.kancloud.cn/2016-06-21_576915b102105.jpg) ~~~ int sys_init(unsigned char PLL) { unsigned char temp = 0; RCC->CR |= 1<<16; //OPEN HSE while(!(RCC->CR>>17)); RCC->CFGR = 0x04<<8; //APB1 HSE/2 PLL -= 2; //9-2 = 0111b RCC->CFGR |= PLL << 18; //0111 ==> X9 RCC->CFGR |= 1 << 16; //PREDIV1 ouput as source of PLL FLASH->ACR |= 0x32; //With RCC->CR |= 1<<24; //enable PLL [24bit] while(!(RCC->CR >> 25)); RCC->CFGR |= 0x2<<0;//PLL As System Clock while(temp != 0x02) { temp = RCC->CFGR >> 2; temp &= 0x03; } return 0; } ~~~ ![](https://box.kancloud.cn/2016-06-21_576915b102105.jpg) 具體數值為什么這么配置,請看寄存器 3、延時函數 為了實現準確延時,我們選用SysTick ~~~ void delay_ms(int timeout) { u32 temp = 0; SysTick->CTRL = 0xfffffffb; SysTick->LOAD = timeout*9000; SysTick->VAL = 0x00; SysTick->CTRL = 0x01; do{ temp = SysTick->CTRL; }while((temp&0x01)&&!(temp&(1<<16))); SysTick->CTRL = 0x00; SysTick->VAL = 0x00; } ~~~ 這里的timeout不能超過一個值,具體多大可以自己計算下; LOAD為24位 0xffffff/9000 = timeout_max;【注:感謝@大黃同學的幫我指出錯誤!!可以看下下面的寄存器】 ![](https://box.kancloud.cn/2016-06-21_576915b149540.jpg) STK_LOAD可用位數為[23:0];【再次感謝大黃!!!】 4、LED燈的控制 我的板子LED燈與stm32的pin是這樣對應的 LED1 ?--> ?PE1 LED2 ?--> ?PE0 ? ? ? LED3 ?--> ?PE2 ? ? ?? LED4 ?--> ?PE3 我這里準備對LED2/PE0進行操作 ~~~ int main() { sys_init(9); //系統時鐘初始化72M = 8M X 9 RCC->APB2ENR |= 1<<6; //使能GPIOE的時鐘 GPIOE->CRL &= 0xFFFFFFF0;//清除PE0的控制位 GPIOE->CRL |= 0x00000003; //選用輸出模式 --->50MHz GPIOE->ODR |= 1<<0;//設置PE0位輸出模式 //GPIOE->BRR = 1<<0;//設置PE0輸出的電平 while(1){ delay_ms(1000); GPIOE->BRR = 1<<0;// delay_ms(1000); GPIOE->BSRR = 1<<0;// } } ~~~
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看