提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
文章目录
- 前言
- 一、使用CUBEMX
- 1.打开cubemx
- 2.创建新的项目
- 3.找到对应的芯片型号
- 4.配置外部时钟
- 5.配置芯片的系统时钟(主频)
- 6.配置下载口
- 7.找到对应的GPIO配置为推挽输出,并将对应的GPIOx引脚标签改为对应的LEDx
- 1.GPIO输出模式和输出电平解析
- 2.GPIO初始化配置
- 3.设定GPIO输出电平
- 8.在Project Manager中配置输出项目,并生成cubemx项目
- 二、 仿真器配置
- 1.Debug 选项配置
- 2.Debug Settings 选项配置
- 3.选择目标板
- 4.Utilities选项配置
- 5.下载程序
- 总结
前言
重新开始学习STM32-CUBEMX。一、使用CUBEMX
1.打开cubemx
找到STM32CubeMX软件并双击打开软件。
2.创建新的项目
3.找到对应的芯片型号
4.配置外部时钟
5.配置芯片的系统时钟(主频)
6.配置下载口
7.找到对应的GPIO配置为推挽输出,并将对应的GPIOx引脚标签改为对应的LEDx
1.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.Pin=LED1_Pin;GPIO_InitStruct.Mode=GPIO_MODE_OUTPUT_PP;GPIO_InitStruct.Pull=GPIO_PULLUP;GPIO_InitStruct.Speed=GPIO_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->BSRR=i;} //输出为高电平 #define digitalLo(p,i) {p->BRR=i;} //输出低电平 #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
上图对应最新版Keil
3.选择目标板
选择目标板,具体选择多大的FLASH要根据板子上的芯片型号决定。野火STM32开发板的配置是:F1选512K,F4选1M。这里面有个小技巧就是把Reset and Run也勾选上,这样程序下载完之后就会自动运行,否则需要手动复位。擦除的FLASH大小选择Sectors 即可,不要选择Full Chip,不然下载会比较慢
4.Utilities选项配置
5.下载程序
如果前面步骤都成功了,接下来就可以把编译好的程序下载到开发板上运行。下载程序不需要其他额外的软件,直接点击KEIL中的LOAD按钮即可。
程序下载后,Build Output选项卡如果打印出Application running…则表示程序下载成功。如果没有出现实验现象,按复位键试试。
总结
提示:这里对文章进行总结:
例如:以上就是今天要讲的内容,本文仅仅简单介绍了pandas的使用,而pandas提供了大量能使我们快速便捷地处理数据的函数和方法。