资讯详情

资讯详情

STM32-CubeMX-点亮LED

提示文章写完后目录可以自动生成如何生成可参考右边的帮助文档文章目录前言一、使用CUBEMX1.打开cubemx2.创建新的项目3.找到对应的芯片型号4.配置外部时钟5.配置芯片的系统时钟主频6.配置下载口7.找到对应的GPIO配置为推挽输出,并将对应的GPIOx引脚标签改为对应的LEDx1.GPIO输出模式和输出电平解析2.GPIO初始化配置3.设定GPIO输出电平8.在Project Manager中配置输出项目并生成cubemx项目二、 仿真器配置1.Debug 选项配置2.Debug Settings 选项配置3.选择目标板4.Utilities选项配置5.下载程序总结前言重新开始学习STM32-CUBEMX。一、使用CUBEMX1.打开cubemx找到STM32CubeMX软件并双击打开软件。2.创建新的项目3.找到对应的芯片型号4.配置外部时钟5.配置芯片的系统时钟主频6.配置下载口7.找到对应的GPIO配置为推挽输出,并将对应的GPIOx引脚标签改为对应的LEDx1.GPIO输出模式和输出电平解析GPIO支持4种输入模式浮空输入、上拉输入、下拉输入、模拟输入和4种输出模式开漏输出、开漏复用输出、推挽输出、推挽复用输出。同时GPIO还支持三种最大翻转速度2MHz、10MHz、50MHz。1上下拉配置 和 输出模式 分开控制。2推挽输出 可以配置上拉和下拉由一个上管P-MOS和一个下管N-MOS组成BSRR端口设置寄存器控制P-MOS上拉可以提供一定的驱动能力BRR端口清除寄存器控制N-MOS下拉可以输出强高、低电平连接数字器件。3开漏输出 只可以配置上拉由单下管N-MOS组成只可以输出强低电平高电平得靠外部电阻拉高。输出端相当于三极管的集电极。适合于做电流型的驱动其吸收电流的能力相对强(一般20ma以内)。4单个引脚的最大额定值一般写 ±20mA推荐工作条件建议 ≤10mA。2.GPIO初始化配置#defineLED1_GPIO_PortGPIOB#defineLED1_PinGPIO_PIN_0voidMX_GPIO_Init(void){GPIO_InitTypeDef GPIO_InitStruct{0};/* GPIO Ports Clock Enable */__HAL_RCC_GPIOB_CLK_ENABLE();/*Configure GPIO pin Output Level */HAL_GPIO_WritePin(LED1_GPIO_Port,LED1_Pin,GPIO_PIN_SET);/*Configure GPIO pins : LED1_Pin */GPIO_InitStruct.PinLED1_Pin;GPIO_InitStruct.ModeGPIO_MODE_OUTPUT_PP;GPIO_InitStruct.PullGPIO_PULLUP;GPIO_InitStruct.SpeedGPIO_SPEED_FREQ_LOW;HAL_GPIO_Init(GPIOB,GPIO_InitStruct);}3.设定GPIO输出电平/* typedef enum { GPIO_PIN_RESET 0U, GPIO_PIN_SET }GPIO_PinState; 代表输出或读取的状态 0 or 1 例如GPIOA 代表GPIOA外设的起始地址 例如GPIO_PIN_0 代表指定xx寄存器写入的端口位 #define LED1_GPIO_Port GPIOB #define LED1_Pin GPIO_PIN_0 //直接操作寄存器的方法控制IO #define digitalHi(p,i) {p-BSRRi;} //输出为高电平 #define digitalLo(p,i) {p-BRRi;} //输出低电平 #define digitalToggle(p,i) {p-ODR ^i;} //输出反转状态 //定义控制IO的宏 #define LED1_TOG digitalToggle(LED1_GPIO_PORT,LED1_GPIO_PIN) #define LED1_OFF digitalHi(LED1_GPIO_PORT,LED1_GPIO_PIN) #define LED1_ON digitalLo(LED1_GPIO_PORT,LED1_GPIO_PIN) GPIO_PinState HAL_GPIO_ReadPin(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin); void HAL_GPIO_WritePin(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin, GPIO_PinState PinState); void HAL_GPIO_TogglePin(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin); 本文中我们将PB0引脚定义为LED1及使用 GPIOB 的 GPIO_PIN_0 //读PB0的引脚电平 HAL_GPIO_ReadPin(GPIOB, GPIO_PIN_0 ); //PB0引脚输出低电平 HAL_GPIO_WritePin(GPIOB, GPIO_PIN_0 , GPIO_PIN_RESET); //PB0引脚输出高电平 HAL_GPIO_WritePin(GPIOB, GPIO_PIN_0 , GPIO_PIN_SET); //切换PB0引脚输出电平 HAL_GPIO_TogglePin(GPIOB, GPIO_PIN_0 ); //可替代 #define LED1_ON HAL_GPIO_WritePin(GPIOB, GPIO_PIN_0 , GPIO_PIN_RESET) #define LED1_OFF HAL_GPIO_WritePin(GPIOB, GPIO_PIN_0 , GPIO_PIN_SET) #define LED1_TOG HAL_GPIO_TogglePin(GPIOB, GPIO_PIN_0 , GPIO_PIN_SET) #define LED1(a) if (a) \ GPIO_SetBits(LED1_GPIO_PORT,LED1_GPIO_PIN);\ else \ GPIO_ResetBits(LED1_GPIO_PORT,LED1_GPIO_PIN) //测试代码LED1每500ms切换一次 main{ LED1_TOG; HAL_Delay(500);//500ms } */8.在Project Manager中配置输出项目并生成cubemx项目二、 仿真器配置在仿真器连接好电脑和开发板且开发板供电正常的情况下打开编译软件 KEIL在魔术棒选项卡里面选择仿真器的型号具体过程看图示1.Debug 选项配置2.Debug Settings 选项配置上图对应老版Keil上图对应最新版Keil3.选择目标板选择目标板具体选择多大的FLASH要根据板子上的芯片型号决定。野火STM32开发板的配置是F1选512KF4选1M。这里面有个小技巧就是把Reset and Run也勾选上这样程序下载完之后就会自动运行否则需要手动复位。擦除的FLASH大小选择Sectors 即可不要选择Full Chip不然下载会比较慢4.Utilities选项配置5.下载程序如果前面步骤都成功了接下来就可以把编译好的程序下载到开发板上运行。下载程序不需要其他额外的软件直接点击KEIL中的LOAD按钮即可。程序下载后Build Output选项卡如果打印出Application running…则表示程序下载成功。如果没有出现实验现象按复位键试试。总结提示这里对文章进行总结例如以上就是今天要讲的内容本文仅仅简单介绍了pandas的使用而pandas提供了大量能使我们快速便捷地处理数据的函数和方法。
觉得有用,分享给同行:

为您的企业打造数字门面

稳重轻奢商务风格,端正雅致视觉,长效耐看不易过时。

立即咨询 →