单片机学习小组
直播中

陈秀珍

7年用户 939经验值
私信 关注

如何利用STM32CubeMX与keil去完成三只LED红绿灯的周期闪烁呢

如何利用STM32CubeMX与keil去完成三只LED红绿灯的周期闪烁呢?有哪些实现步骤?

回帖(1)

陈波

2022-2-18 09:21:13
任务一、
用STM32CubeMX配合keil,用GPIO端口完成三只LED红绿灯的周期闪烁
1、STM32CubeMx下载网址:STM32CubeMX - STM32Cube initialization code generator - STMicroelectronics
安装好之后,打开主界面,找到help→manage embedded software paclages

下载STM32F1中的1.8.4版本
2、HAL方式
①创建工程,点击file→new project,选择STM32F103C8,然后点击start project,进入界面后,选择System Core中的SYS,在Debug除选择Serial Wire,

选择Clock Configuration,点击PLLCLK

回到pinout,按下图设置

将芯片管脚按下图设置,PA1,PA3,PA5设为GPIO-Output

点击Project Manager,输入自己的路径和LED项目名称,IDE选择如下图,再点击GENERATE CODE。

②添加代码,找到main.c中的while循环HAL_GPIO_WritePin(GPIOA,GPIO_PIN_1,GPIO_PIN_RESET);
HAL_GPIO_WritePin(GPIOA,GPIO_PIN_3,GPIO_PIN_SET);
HAL_GPIO_WritePin(GPIOA,GPIO_PIN_5,GPIO_PIN_SET);
HAL_Delay(1000);
HAL_GPIO_WritePin(GPIOA,GPIO_PIN_1,GPIO_PIN_SET);
HAL_GPIO_WritePin(GPIOA,GPIO_PIN_3,GPIO_PIN_RESET);
HAL_GPIO_WritePin(GPIOA,GPIO_PIN_5,GPIO_PIN_SET);
HAL_Delay(1000);
HAL_GPIO_WritePin(GPIOA,GPIO_PIN_1,GPIO_PIN_SET);
HAL_GPIO_WritePin(GPIOA,GPIO_PIN_3,GPIO_PIN_SET);
HAL_GPIO_WritePin(GPIOA,GPIO_PIN_5,GPIO_PIN_RESET);
HAL_Delay(1000);
③编译与仿真
在Debug中选择Use simulater,将Dialog.DLL下项设为DARMSTM.DLL,Parameter项设为-pSTM32F103C8,在Output中选Create HEX File生成hex文件,仿真运行
打开logic Analyzer

然后如下图设置,再点击Run执行

波形如下图显示

3个管脚的电平依次变化,从0 1 1→1 0 1→1 1 0→0 1 1
④```硬件连接
USB-TTL串口下载,连接方式如下:
STM32f103 USB-TTL模块
GND ———— GND
3.3V ———— 3,3V
TXD ———— A10
RXD ———— A9
⑤打开Flymcu软件,开始烧录。
最终结果如图所示
任务二 USART串口通讯程序
HAl库方式
①创建工程
选择STM32F103C8开发板,点击start project,在HSE选择Crystal/Ceramic Resonator,如下图

设置USART2,选择Asynchronous

在Clock Configuration如下图选择

生成项目

②添加代码
打开项目之后找到main中的while循环
代码如下:
char data[]=“hello windows!n”;//发送的数据
HAL_UART_Transmit(&huart2, (uint8_t *)data, 15, 0xffff);//发送
HAL_Delay(1000);//延时
然后在Debug中选择Use simulater,将Dialog.DLL下项设为DARMSTM.DLL,Parameter项设为-pSTM32F103C8,在Output中选Create HEX File生成hex文件,仿真运行
打开逻辑分析仪,添加端口,将Display Type处设置为Bit,

③串口下载,步骤同上
④BOOT0置1,BOOT1置0,文件烧录
⑤BOOT0置o,打开调试助手,效果如下
举报

更多回帖

发帖
×
20
完善资料,
赚取积分