一、 实验目的和要求 1. 理解MCU上电启动过程; 2. 掌握使用Cube库来编写STM32裸机程序的方法; 3. 掌握使用Cube库来编写GPTO和UART程序的方法; 4. 掌握使用Cube库来编写中断响应程序的方法; 5. 理解前后台程序模式 6. 掌握在STM32F103上编写裸机程序并下载运行的方法。
二、 实验器材 1. STM32F103核心板一块; 2. MicroUSB线一根; 3. STLink板或USB串口板一块; 4. 交叉编译软件
三、 实验内容和原理 1.编写Cube程序,配置UART0为9600,8n1,上电后向串口输出“Hello”,在PC上通过串口软件观察结果 2.通过面包板在PA11和PA12各连接一个按钮开关到地 3.编写Cube程序,配置PA11和PA12为内部上拉到输入模式,在main()函数循环检测PA11按钮按下,并在按钮按下时在串口输出Pressed。 4.编写Cube程序,配置PA12下降沿触发中断,程序中设置两个全局变量,一个为计数器,一个为标识。当中断触发时,计数器加1,并设置标识。在主循环中判断标识,如果标识置位则清除标识并通过串口输出计数值; 5.编写Cube程序,开启定时器为200ms中断一次,中断触发时设置标识,主循环根据这个标识来做串口输出(取消4的串口输出); 6.编写完整的码表程序,PA12的按钮标识车轮转了一圈,通过计数器可以得到里程,通过定时器中断得到的时间可以计算出速度;PA的按钮切换模式,模式一在串口输出里程,模式二在串口输出速度。 四、 实验过程和数据记录 1. 下列图片为实物连接图
其中串口使用PA9,PA10;GPIO使用PA11,PA12,分别连接按钮。黑线接地。
2. 在Cube软件中配置UART0的波特率为9600, 8n1,然后向串口输出Hello,通过Mac上的串口软件观察结果。 a. 下图为配置图片,将波特率设置为9600,8n1.
b. 配置完成后,我们就可以用HAL_UART_Transmit和HAL_UART_Receive两个函数来进行串口的收发数据。使用GNUC需要重写__io_putchar和fputc函数,我们通过宏定义来完成。
c. 测试串口输出,在while循环前添加printf函数来输出Hello
d. 下面是实验结果展示图
3. 编写Cube程序,配置PA11和PA12为内部上拉到输入模式,在main()函数循环检测PA11按钮按下,并在按钮按下时在串口输出Pressed
|