/*
#include "stm32f4_discovery.h"
#include "stm32f4xx_conf.h"
uint32_t gb_timingdelay;
void delay(uint32_t ntime);
void main( )
{
systick_config(systemcoreclock / 1000); //设置systemtick 一毫秒中断
rcc->ahb1enr |= 0x00000008; //使能gpiod 时钟
rcc->apb2enr |= (1<<14); //使能syscfg 时钟
gpiod->moder &= 0x00ffffff; //设置pd12,13,14,15 输出
gpiod->moder |= 0x55000000;
gpiod->otyper &= 0xffff0fff; //设置pd12,13,14,15 推挽输出
gpiod->ospeedr &= 0x00ffffff; //pd12,13,14,15 速度100m
gpiod->ospeedr |= 0xff000000;
syscfg->cmpcr = 0x00000001; //使用io 补偿单元,
//当gpio 速度超过50m 的时候要考虑使用此设置
gpiod->pupdr &= 0x00ffffff; //pd12,13,14,15 无上拉无下拉
gpiod->bsrrh = 0xf000; //reset register gpiox_bsrrh, write only
//set register gpiox_bsrrl, write only
while(1)
{
gpiod->bsrrh = 0xf000;
gpiod->bsrrl = 0x1000;
delay(100);
gpiod->bsrrh = 0xf000;
gpiod->bsrrl = 0x1000<<1;
delay(100);
gpiod->bsrrh = 0xf000;
gpiod->bsrrl = 0x1000<<2;
delay(100);
gpiod->bsrrh = 0xf000;
gpiod->bsrrl = 0x1000<<3;
delay(100);
}
}
void delay(uint32_t ntime)
{
gb_timingdelay = ntime;
while(gb_timingdelay != 0);
}
void systick_handler(void)
{
if (gb_timingdelay != 0x00)
{
gb_timingdelay--;
}
}
*/
#include "stm32f4_discovery.h"
#include "stm32f4xx_conf.h"
uint32_t gb_timingdelay;
void delay(uint32_t ntime);
void main( )
{
systick_config(systemcoreclock / 1000); //设置systemtick 一毫秒中断
/*
//initialize leds mounted on stm32f4-discovery board
stm_eval_ledinit(led4);
stm_eval_ledinit(led3);
stm_eval_ledinit(led5);
stm_eval_ledinit(led6);
//turn on led4 and led5
stm_eval_ledon(led4);
stm_eval_ledon(led5);
while(1)
{
//toggle led3 and led6
stm_eval_ledtoggle(led3);
stm_eval_ledtoggle(led6);
//insert a delay
delay(100);
//toggle led4 and led5
stm_eval_ledtoggle(led4);
stm_eval_ledtoggle(led5);
//insert a delay
delay(100);
}
*/
//-------------------------------------
gpio_inittypedef gpio_initstructure;
//enable the gpio_led clock
rcc_ahb1periphclockcmd(rcc_ahb1periph_gpiod, enable);
//configure the gpio_led pin
gpio_initstructure.gpio_pin = gpio_pin_12;
gpio_initstructure.gpio_mode = gpio_mode_out;
gpio_initstructure.gpio_otype = gpio_otype_pp;
gpio_initstructure.gpio_pupd = gpio_pupd_up;
gpio_initstructure.gpio_speed = gpio_speed_50mhz;
gpio_init(gpiod, &gpio_initstructure);
//点亮这个灯
gpiod->bsrrl = gpio_pin_12;
while(1)
{
//
gpiod->odr ^= gpio_pin_12;
//insert a delay
delay(100);
}
}
void delay(uint32_t ntime)
{
gb_timingdelay = ntime;
while(gb_timingdelay != 0);
}
void systick_handler(void)
{
if (gb_timingdelay != 0x00)
{
gb_timingdelay--;
}
}
『本文转载自网络,64体育的版权归原作者所有,如有侵权请联系删除』