做网站ui主要研究内容,蓝色大气企业网站phpcms模板,沅江市住房和建设局网站,禹城做网站嵌入式开发学习之STM32F407点亮LED及J-Link下载#xff08;二#xff09; 开发涉及工具控制端口配置端口的设定与确认端口配置方法实现点亮LED程序下载与仿真 有工程实例#xff0c;链接在最底部。
开发涉及工具
开发环境#xff08;IDE#xff09;#xff1a;IAR-ARM8… 嵌入式开发学习之STM32F407点亮LED及J-Link下载二 开发涉及工具控制端口配置端口的设定与确认端口配置方法实现点亮LED程序下载与仿真 有工程实例链接在最底部。
开发涉及工具
开发环境IDEIAR-ARM8.32.4 开发板STM32_F4VE_V2.0 下载器J-Link 固件库版本STM32F4xx_DSP_StdPeriph_Lib_V1.8.0
控制端口配置
端口的设定与确认
首先确认好LED是连接在单片机的哪一个端口例如我使用的开发板上面设计有LED那么我们就从其原理图上查找端口连接方式如下图所示可得的信息有 1.此开发板有两颗可控制LED 2.D2_LED是连接在PA6上。D3_LED连接在PA7上。 3.两颗LED共阳极连接接3.3V控制信号为低电平时才点亮。
端口配置方法
然后根据已得信息我们查找固件库中关于GPIO配置的例程我使用的固件库版本在STM32F4xx_DSP_StdPeriph_Lib_V1.8.0\Project\STM32F4xx_StdPeriph_Examples\GPIO\GPIO_IOToggle路径中点开其main.c和main.h文件 通过简单分析可整理成如下GPIO配置步骤 1.定义GPIO配置的结构体变量 2.要开启相应GPIO端口的时钟 3.指定端口的PIN脚 4.配置引脚的模式 5.配置引脚的频率 6.配置引脚的输出方式 7.配置引脚是上拉还是下拉 8.然后将所有配置初始化给引脚 整合代码如下
void LED_IOConf(void)
{GPIO_InitTypeDef GPIO_InitStructure;//新建一个配置GPIO的结构体变量RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA,ENABLE);//GPIOA挂载在AHB1总线上在这里开启它的时钟GPIO_InitStructure.GPIO_Pin GPIO_Pin_6;//确认好LED是连接在哪一个引脚GPIO_InitStructure.GPIO_Mode GPIO_Mode_OUT;//控制LED灯引脚是输出模式GPIO_InitStructure.GPIO_Speed GPIO_Speed_100MHz;//这个是引脚的输出频率配置没有特别的要求一般选最高100MGPIO_InitStructure.GPIO_OType GPIO_OType_PP;//端口用作控制信号输出一般情况都设置为推挽输出GPIO_InitStructure.GPIO_PuPd GPIO_PuPd_UP;//配置引脚是上拉还是下拉GPIO_Init(GPIOA,GPIO_InitStructure);//初始化引脚配置
}实现点亮LED
从前面的分析我们已知现在给LED一个低电平就会让它点亮那么如何使端口输出低电平呢 我们可以从stm32f4xx.gpio.h里面找到相应的函数封装到自己的函数中然后调用方式如下
void LED_OFF(void)
{GPIO_SetBits(GPIOA, GPIO_Pin_6);//引脚输出高电平LED不亮
}void LED_ON(void)
{GPIO_ResetBits(GPIOA, GPIO_Pin_6);//引脚输出低电平LED亮
}点亮我们则调用void LED_ON(void),例如
void main()
{LED_IOConf();//调用配置函数LED_OFF();//让LED的最初状态为不亮while(1){LED_ON();//点亮LED}
}我们也可以让LED闪烁起来加上延时功能简单的延时函数可以这样写
void Delay_us(uint16_t xus)
{uint16_t i 0;for(i xus;i 0;i --){__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();}
}void Delay_ms(uint16_t xms)
{uint16_t i 0;for(i xms;i 0;i --){Delay_us(1000);}
}void Delay_s(uint16_t xs)
{uint16_t i 0;for(i xs;i 0;i --){Delay_ms(1000);}
}在主函数中如下方式调用
void main()
{LED_IOConf();//调用配置函数LED_OFF();//让LED的最初状态为不亮while(1){LED_ON();//点亮LEDDelay_ms(500);//等待500毫秒LED_OFF();//熄灭LEDDelay_ms(500);//等待500毫秒}
}程序下载与仿真
1.首先在工程名上鼠标右键选择Options 2.点击General Optons --Target–Dervice 3.点击后面的小控件选择好自己使用的芯片 4.再点击左侧Debugger–Setup在Driver的下拉框中选择仿真器我使用的J-Link所以选择它点击OK 5.在菜单栏选择绿色的控件点击后等待程序下载和调试界面加载 6.加载完成后,可点击如下控件进行逐句调试直接运行就点旁边白色控件关闭调试点击红色X号控件 工程实例链接https://download.csdn.net/download/qq_45100839/88423150