实验任务:
1. 用stm32F103核心板的GPIOA端一管脚接一个LED,GPIOB端口一引脚接一个开关(用杜邦线模拟代替)。采用中断模式编程,当开关接高电平时,LED亮灯;接低电平时,LED灭灯。
2. 采用串口中断方式重做上周的串口通信作业。
3. STM32采用串口DMA方式,用115200bps或更高速率向上位机连续发送数据。
实验过程:
首先,打开stm32CubeMX,选择芯片stm32F103C8,如下图所示
①时钟RCC配置
将HSE选为外部晶振模式;
②管脚配置
根据题目中的功能,这里选择PA5作为LED灯的连接管脚,PB9 作为杜邦线(等价于开关)的连接管脚;
具体配置是:左击PA5端口选择GPIO_Output模式;
③sys配置
点击右侧“SYS”,在Debug调试界面下选择Serial Wire模式;
④GPIO配置
点击左侧GPIO,PA5是高电平触发,所以不需要改变设置,这里将该管脚的名字改成了“A5_LED”,但PB5需要重新配置;
首先,选中PB5,将GPIO Mode设置为下降沿触发外部中断;
将GPIO Pull-up/Pull-down设置为上拉电阻模式;
将User Label设置为B9_EXTI,如下图;
⑤NVIC配置
点击左侧NVIC,勾选EXTI line[9:5]interrupts,表示能够中断;
⑥时钟树配置
点击Clock Configuration,将时钟树配置为72MHZ,点击回车即可;
3)工程导出
点击Project Manager,首先设置工程名和路径以及导出方式;
然后点击右侧Code Generator,进行工程文件设置,具体勾选如下:
进行完上述步骤后,就可以进行上图的第四步导出工程了,导出后选择打开工程即可在Keil中打开该工程;
工程打开后如下图所示:
编译显示没有错误;
电路连接与之前博客的连接方式相同,只需要更改led灯的端口和杜邦线(代替开关)的端口即可;
首先,打开烧录软件mcuisp,将USB-TTL串口接入电脑,点击搜索串口即可看到接入的USB串口,然后将传输速率设置115200bit/s;
接下来,找到刚刚在keil中生成的HEX文件,点击“读器件信息”,右侧状态栏里显示一切正常后,就可以点击“开始编程”进行烧录了;
结果展示:
因为PB9设置的是下降沿触发中断,以及上拉电阻Pull-up模式,所以PB9接地,LED灯亮,不接地,LED灯不亮;(展示时需要就BOOT0和BOOT1都置零)