资源预览内容
第1页 / 共14页
第2页 / 共14页
第3页 / 共14页
第4页 / 共14页
第5页 / 共14页
第6页 / 共14页
第7页 / 共14页
第8页 / 共14页
第9页 / 共14页
第10页 / 共14页
亲,该文档总共14页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
实训一、绘出 STM32 开发板的 MCU 外围硬件连接图学生:吴磊 郑黄庆 阿不力孜指导老师:王宜结电子工程学院 电子信息工程一、实训目的1. 握 STM32 开发板的封装和引脚2. 能够测量开发板外围器件与 STM32 芯片的实际连接,并画出电路图二、实训内容1. 画出开发板上 MCU 与发光二极管 DS0、DS1 的连接示意图2. 画出开发板上 MCU 与按键 KEY0、KEY1、KRY2、KEYM 的连接示意图3. 画出开发板上 MCU 与 24C02 芯片的连接示意图4. 画出开发板上 MCU 与 W25X16 芯片的连接示意图5. 画出开发板上 MCU 与温度传感器 18B20 的连接示意图6. 画出开发板上 MCU 与 2.8 寸液晶的连接示意图7. 画出开发板上 MCU 与红外接收头的连接示意图8. 画出开发板上 MCU 与 PL2302 芯片的连接示意图三、实训过程1、MCU图 1图 1 中上部的 BOOT1 用于设置 STM32 的启动方式,其对应启动模式如下表所示:表 1第 1 页 我们用串口下载代码,则配置 BOOT0 为 1,BOOT1 为 0 即可,如果想让 STM32 一按复位键就开始跑代码,则需要配置 BOOT0 为 0,BOOT1 随便设置都可以。2、LED图 2其中 PWR 是系统电源指示灯,为蓝色。LED0 和 LED1 分别接在 PA8 和 PD2 上,PA8 还可以通过 TIM1 的通道 1 的 PWM 输出来控制 DS0 的亮度。为了方便大家判断,我们选择了 DS0 为红色,DS1 为绿色的 LED 灯。3、按键图 3KEY0、KEY1 和 KEY2 用作普通按键输入,分别连接在 PA13、PA15 和 PA14 上。WK_UP 按键连接到 PA0(STM32 的 WKUP 引脚),它除了可以用作普通输入按键外,还可以用作 STM32 的唤醒输入。4、EEPROMALIENTEK MiniSTM32 自带了 24C02 的 EEPROM 芯片,该芯片的容量为 2Kbit,也就是256 个字节。第 2 页 图 4这里我们把 A0A2 均接地,对 24C02 来说也就是把地址位设置成了 0 了。5、SPI FLASHALIENTEK MiniSTM32 开发板载有 SPI FLASH 芯片 W25X16,该芯片的容量为 2M字节。图 56、温度传感器图 67、2.8 寸液晶连接示意图第 3 页 图 78、红外接收头示意图REMOTE_IN 接到 P2 的第二脚,也没有直接接在 MCU 的 IO 口上,目的也是防止 IO 口在做其他功能使用的时候,收到红外信号的干扰。图 88、USB 采用 PL_2303 芯片,为 28 引脚的 SSOP 封装。如图 9.图 9第 4 页 实训二:跑马灯与按键输入学生:吴磊 郑黄庆 阿不力孜指导老师:王宜结电子工程学院 电子信息工程一、 实训目的1. 掌握 STM32 项目开发流程;2. 学会画出算法流程图;3. 掌握按键、LED 的控制编程;二、 实训内容1、实现 LED0 和 LED1 交替闪烁,间隔 300ms.三、 实训要求1、 用 C 语言实现算法;2、 建立工程项目,生成目标文件;3、 将目标文件编程下载到开发板,观察结果是否满足设计要求;四、 硬件设计该实验的硬件电路在ALIENTEM Mini STM32开发板上默认是已经连接好了的。DS0接 PA8,DS1接PD2。所以在硬件上不需要动任何东西。其连接原理图如下:五、软件程序#include #include #include led.hvoid LED_Init(void) /该函数的功能就是用来实现配置PA8和PD2为推挽输出 ,在配置STM32外设的时候,任何时候都要先使能该外设时钟RCC-APB2ENR|=1APB2ENR|=1CRH 第 5 页 GPIOA-CRH|=0X00000003;/PA8 推挽输出 GPIOA-ODR|=1CRLGPIOD-CRL|=0X00000300;/PD.2推挽输出GPIOD-ODR|=1SR/循环发送,直到发送完毕 第 7 页 USART1-DR = (u8) ch; return ch;#endif #ifdef EN_USART1_RX /如果使能了接收u8 USART_RX_BUF64; /接收缓冲,最大 64 个字节.u8 USART_RX_STA=0; /接收状态标记 void USART1_IRQHandler(void)u8 res; if(USART1-SR&(1DR; if(USART_RX_STA&0x80)=0)/接收未完成if(USART_RX_STA&0x40)/接收到了 0x0dif(res!=0x0a)USART_RX_STA=0;/接收错误,重新开始else USART_RX_STA|=0x80;/接收完成了 else /还没收到 0X0Dif(res=0x0d)USART_RX_STA|=0x40;elseUSART_RX_BUFUSART_RX_STAUSART_RX_STA+;if(USART_RX_STA63)USART_RX_STA=0; #endif void uart_init(u32 pclk2,u32 bound) float temp;u16 mantissa;u16 fraction; temp=(float)(pclk2*1000000)/(bound*16);/得到 USARTDIVmantissa=temp; /得到整数部分fraction=(temp-mantissa)*16; /得到小数部分 mantissaAPB2ENR|=1APB2ENR|=1CRH GPIOA-CRH|=0X000008B0;/IO 状态设置RCC-APB2RSTR|=1APB2RSTR/停止复位 USART1-BRR=mantissa; / 波特率设置 USART1-CR1|=0X200C; /1 位停止,无校验位.#ifdef EN_USART1_RX /如果使能了接收USART1-CR1|=1CR1|=1PR=1PR=1PR=1APB2ENR|=1CRL/PA0设置成输入 GPIOA-CRL|=0X00000008; GPIOA-CRH/PA13,15设置成输入 GPIOA-CRH|=0X80800000; GPIOA-ODR|=1ODR|=1SR&0X0001)/溢出中断LED1=!LED1; TIM3-SR/清除中断标志位 void Timerx_Init(u16 arr,u16 psc)第 12 页 RCC-APB1ENR|=1ARR=arr; /设定计数器自动重装值/刚好 1ms TIM3-PSC=psc; /预分频器 7200,得到 10Khz 的计数时钟TIM3-DIER|=1CR1|=0x01; /使能定时器 3MY_NVIC_Init(1,3,TIM3_IRQChannel,2);/抢占 1,子优先级 3,组 2第 13 页
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号