標(biāo)題: STM32最基本問題,點(diǎn)亮LED。 [打印本頁]

作者: hange_v    時(shí)間: 2017-8-20 14:59
標(biāo)題: STM32最基本問題,點(diǎn)亮LED。
為什么我的LED不閃爍,下面是程序和電路。#include "stm32f10x.h"
void delay_ms(u32 ms){
  u32 temp;
        SysTick->LOAD = 9000 * ms;  //重裝初值,72MHz時(shí)
        SysTick->CTRL = 0x01;  //使能,減到0無動作,采用外部時(shí)鐘
        SysTick->VAL = 0;  //清零計(jì)數(shù)器
        do{
          temp = SysTick->CTRL;  //讀取當(dāng)前倒計(jì)數(shù)數(shù)值
        }while((temp & 0x01) && (!(temp & (1 << 16))));  //等待時(shí)間到達(dá)
        SysTick->CTRL = 0;  //關(guān)閉計(jì)數(shù)器
        SysTick->VAL = 0;  //清空計(jì)數(shù)器
}

void testGPIO_Config(void){
  GPIO_InitTypeDef GPIO_InitStructure;
       
        GPIO_InitStructure.GPIO_Pin = testGPIO_Pin;
        GPIO_InitStructure.GPIO_Speed = GPIO_Speed_10MHz;
        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
       
        GPIO_Init(testGPIO, &GPIO_InitStructure);
        RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOE, ENABLE);
}

int main(void){
        SystemInit();
        //SysTick
        testGPIO_Config();
        while(1){
        GPIO_WriteBit(testGPIO, testGPIO_Pin, Bit_RESET);
        delay_ms(1000);
        GPIO_WriteBit(testGPIO, testGPIO_Pin, Bit_SET);
        delay_ms(1000);
        }
  //return 0;
}


(_C~L]SC)(ZD2C43%A$0DL1.png (11.92 KB, 下載次數(shù): 90)

(_C~L]SC)(ZD2C43%A$0DL1.png

作者: 檸檬小生    時(shí)間: 2017-8-20 22:03
LED是只會亮但是不閃爍還是?印象中stm32是有自帶的庫函數(shù)用作延時(shí)的。你可以通過注釋其他語句來驗(yàn)證是GPIO設(shè)置問題還是延時(shí)函數(shù)的問題
作者: 大灰狼愛喝湯    時(shí)間: 2017-8-20 23:16
你GPIOB的時(shí)鐘掛上去了?
作者: sldx    時(shí)間: 2017-8-21 04:52
先把燈點(diǎn)亮再說,然后再閃爍
作者: hange_v    時(shí)間: 2017-8-21 08:47
大灰狼愛喝湯 發(fā)表于 2017-8-20 23:16
你GPIOB的時(shí)鐘掛上去了?

我用的GPIOE,開啟了GPIOE的時(shí)鐘,難道還要開GPIOB的時(shí)鐘???
作者: hange_v    時(shí)間: 2017-8-21 08:54
檸檬小生 發(fā)表于 2017-8-20 22:03
LED是只會亮但是不閃爍還是?印象中stm32是有自帶的庫函數(shù)用作延時(shí)的。你可以通過注釋其他語句來驗(yàn)證是GPIO ...

只亮,不閃爍,是不是和時(shí)鐘有關(guān)SystemIni(),
作者: hfh163    時(shí)間: 2017-8-21 09:19
hange_v 發(fā)表于 2017-8-21 08:47
我用的GPIOE,開啟了GPIOE的時(shí)鐘,難道還要開GPIOB的時(shí)鐘???

不用的
作者: gm388    時(shí)間: 2017-8-24 15:09
GPIO_WriteBit(testGPIO, testGPIO?_Pin_?, Bit_RESET);
        不用指定GPIO的哪一組的的第幾個(gè)引腳???

作者: 想飛的豬1    時(shí)間: 2017-9-8 14:31
void GPIO_ResetBits(GPIO_TypeDef* GPIOx, u16 GPIO_Pin)     void GPIO_SetBits(GPIO_TypeDef* GPIOx, u16 GPIO_Pin)給IO口寫0寫1是這兩個(gè)函數(shù),而不是void GPIO_WriteBit(GPIO_TypeDef* GPIOx, u16 GPIO_Pin, BitAction BitVal)這個(gè),具體請參考STM32固件庫使用手冊
作者: hfh163    時(shí)間: 2018-9-13 18:37
覺得時(shí)鐘不對
作者: zyx1993    時(shí)間: 2018-9-15 11:17
高低電平切換,再加上延時(shí)就可以的
作者: 探路    時(shí)間: 2018-9-16 11:10
那就可能是你的延時(shí)函數(shù)沒起作用或者是延時(shí)函數(shù)有問題,你的延時(shí)函數(shù)初在主函數(shù)中始化了嗎?
作者: carlos64    時(shí)間: 2018-9-18 14:45
可以看看正點(diǎn)原子的代碼,里面很詳細(xì) 。
作者: 獅子歌歌    時(shí)間: 2018-9-20 09:18
時(shí)鐘使能要放在前面,然后配置IO
作者: Aretiades    時(shí)間: 2018-9-20 12:00
如果是只亮不閃爍的話,看看程序是不是卡在那個(gè)延時(shí)函數(shù)那里了,話說你這個(gè)系統(tǒng)時(shí)鐘8分頻了?不然為啥SysTick->LOAD = 9000 * ms;  這里是9000

作者: sunding    時(shí)間: 2018-9-20 15:24
高低電平切換,并加上延時(shí)函數(shù)
作者: xiebo    時(shí)間: 2018-9-20 16:42
參考一下正點(diǎn)原子的代碼吧
作者: cjl_hit    時(shí)間: 2018-9-20 17:28
一般,電平高低切換之間需要加時(shí)延,才能看到閃爍的效果




歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1