| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 嵌入式 -> STM32入门 -> 正文阅读 |
|
[嵌入式]STM32入门 |
2021年7月7日学习进度汇报基本实验环境构架:概括:重新搭建了MDK5的安装下载环境,调试好J-LINK程序下载模块,具备stm32的基本开发环境,并且逐步尝试通过原理图,编程框架去修改所拥有的库函数。 ? 判断JLINK是否能够成功连接的标准为:port端口上是否有SW的出现 若失败则显示为: ? 该处为暗色。 ? 若JLINK不能够正常使用,则采取下载的备用方法采用FLYMCU的方式进行下载。如图所示: ? ? ?缺点:下载程序较慢,只适合软件调试,JLINK适合分布调试,同时STM32现在的适配的下载器主要是STLINK。 基础实验进展温习了stm32的GPIO工作原理相关知识,并且根据视频完成跑马灯,蜂鸣器,按键输入,蜂鸣器,中断等配套实验,自主学习了关于中断,时钟,定时器等辅助知识。 GPIO口注意点:注意:1)只有经过编译后才能用goto definition 寻找上一级定义。 2)GPIO的程序一定要改宏定义处,例如跑马灯程序中:、 ? ? 不同开发板的端口不同,改正时一定要一起兼顾。 3)关于时钟信号的中不同的IO组,调用的时钟使能函数不同,主要注意以下几个: #define RCC_APB2Periph_GPIOA???????????? ((uint32_t)0x00000004) #define RCC_APB2Periph_GPIOB???????????? ((uint32_t)0x00000008) #define RCC_APB2Periph_GPIOC???????????? ((uint32_t)0x00000010) #define RCC_APB2Periph_GPIOD??????????? ?((uint32_t)0x00000020) #define RCC_APB2Periph_GPIOE???????????? ((uint32_t)0x00000040) #define RCC_APB2Periph_GPIOF???????????? ((uint32_t)0x00000080) #define RCC_APB2Periph_GPIOG???????????? ((uint32_t)0x00000100) #define RCC_AHBPeriph_FSMC????????????? ((uint32_t)0x00000100) (显示屏FSMC需要用到) 4)大多数IO口都是可以兼容5V电压,要养成查芯片手册的意识。 ? ?蜂鸣器注意点
? 按键输入注意点1)通过调用函数 GPIO_ReadInputDataBit()来读取 IO 口的状态的 2):KEY0、KEY1 和 KEY2 是低电平有效的,而 WK_UP 是高电平有效的, 并且外部都没有上下拉电阻,所以,需要在 STM32 内部设置上下拉。 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU; //设置成上拉输入 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPD; //PA0 设置成输入,下拉
? ? 时钟模块1.时钟源部分: ①、HSI 是高速内部时钟,RC 振荡器,频率为 8MHz。 ②、HSE 是高速外部时钟,可接石英/陶瓷谐振器,或者接外部时钟源,频率范围为 4MHz~16MHz。我们的开发板接的是 8M 的晶振。 ③、LSI 是低速内部时钟,RC 振荡器,频率为 40kHz。独立看门狗的时钟源只能是 LSI,同时 LSI 还可以作为 RTC 的时钟源。 ④、LSE 是低速外部时钟,接频率为 32.768kHz 的石英晶体。这个主要是 RTC 的时钟源。 ⑤、PLL 为锁相环倍频输出,其时钟输入源可选择为 HSI/2、HSE 或者 HSE/2。倍频可选择为2~16 倍,但是其输出频率最大不得超过 72MHz。 其中需要理解的是 APB1 和 APB2 的区别,APB1 上面连接的是低速外设,包括电源接口、备份接口、CAN、USB、I2C1、I2C2、UART2、UART3 等等,APB2 上面连接的是高速外设包括 UART1、SPI1、Timer1、ADC1、ADC2、所有普通 IO 口(PA~PE)、第二功能 IO 口等。 这里总结一下 SystemInit()函数中设置的系统时钟大小: SYSCLK(系统时钟) =72MHz AHB 总线时钟(使用 SYSCLK) =72MHz APB1 总线时钟(PCLK1) =36MHz APB2 总线时钟(PCLK2) =72MHz PLL 时钟 =72MHz NVIC中断模块NVIC_InitTypeDef 结构体中间有三个成员变量,这三个成员变量的作用是: NVIC_IRQChannel:定义初始化的是哪个中断,这个我们可以在 stm32f10x.h 中找到 每个中断对应的名字。例如 USART1_IRQn。 NVIC_IRQChannelPreemptionPriority:定义这个中断的抢占优先级别。 NVIC_IRQChannelSubPriority:定义这个中断的子优先级别。 NVIC_IRQChannelCmd:该中断是否使能。 ? 步骤: 1. 系统运行开始的时候设置中断分组。确定组号,也就是确定抢占优先级和子优先级的 分配位数。调用函数为 NVIC_PriorityGroupConfig(); 2. 设置所用到的中断的中断优先级别。对每个中断调用函数为 NVIC_Init(); 专项研究进度概括:在显示屏方面,初步完成在用库函数的情况下完成对7寸LCD显示屏的显示管理,能初步了解TFTLCD显示原理和基本配置,能大致理解LCD-FSMC的基本函数组成,能够利用基本库函数在LCD屏显示字符,相应更改字符大小和颜色。(在一定范围内可行)。(实物见看开发板) 参考实验 TFT显示实验1.常见指令: 1)0XD3,这个是读 ID4 指令,用于读取 LCD 控制器的 ID 2)0X36,这是存储访问控制指令,可以控制 ILI9341 存储器的读写方向 3)0X2A,这是列地址设置指令,在从左到右,从上到下的扫描方式(默认),该指令用于设置横坐标(x 坐标)。 4)0X2B,是页地址设置指令,在从左到右,从上到下的扫描方式(默认)下面,该指令用于设置纵坐标(y 坐标) 5)0X2C,该指令是写 GRAM 指令,在发送该指令之后,我们便可以往 LCD 的 GRAM 里面写入颜色数据了。 2.使用流程 ? 3.FSMC,即灵活的静态存储控制器 当 Bank1 接的是 16 位宽度存储器的时候:HADDR[25:1]→ FSMC-A[24:0]。 当 Bank1 接的是 8 位宽度存储器的时候:HADDR[25:0]→ FSMC_A[25:0]。 不论外部接 8 位/16 位宽设备,FSMC_A[0]永远接在外部设备地址 A[0]。 过程较为复杂,只要学会调用函数即可。 4.主要应用函数: void LCD_Sho+wString(u16 x,u16 y,u16 width,u16 height,u8 size,u8 *p) 组成由://写寄存器函数:void LCD_WR_REG(u16 regval) //设置光标位置: void LCD_SetCursor(u16 Xpos, u16 Ypos) //画点 ?:void LCD_DrawPoint(u16 x,u16 y) ??? //在指定位置显示一个字符 //size:字体大小 12/16/24 //mode:叠加方式(1)还是非叠加方式(0) void LCD_ShowChar(u16 x,u16 y,u8 num,u8 size,u8 mode) 5.改编程序 ??????? 应用switch case语句,输入自己的名字,(注意只能为英文) 最终改编函数后达到效果:背景不变,但字体颜色在不断更换,并且能分别显示ID,日期与字符 ? ????? LCD_ShowString(50,40,200,24,24,"WarShip STM32 "); ??????????? LCD_ShowString(50,70,200,16,16,"TO BE WHAT YOU WANT"); ??????????? LCD_ShowString(50,90,200,16,16,"MADE BY GUYH"); ?????????? LCD_ShowString(50,110,200,16,16,"Hello WORLD");???????? ??????????? LCD_ShowString(50,130,200,12,12,"2021/7/6");?? ??????????? LCD_ShowString(50,150,200,16,16,lcd_id);?????????? 下一阶段安排
|
|
嵌入式 最新文章 |
基于高精度单片机开发红外测温仪方案 |
89C51单片机与DAC0832 |
基于51单片机宠物自动投料喂食器控制系统仿 |
《痞子衡嵌入式半月刊》 第 68 期 |
多思计组实验实验七 简单模型机实验 |
CSC7720 |
启明智显分享| ESP32学习笔记参考--PWM(脉冲 |
STM32初探 |
STM32 总结 |
【STM32】CubeMX例程四---定时器中断(附工 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年12日历 | -2024/12/27 10:31:03- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |
数据统计 |