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. STM32 的单个 IO 最大可以提供 25mA 电流(而蜂鸣器的驱动电流是 30mA 左右,不用 STM32 的 IO 直接驱动蜂鸣器,而是 通过三极管扩流后再驱动蜂鸣器,这样 STM32 的 IO 只需要提供不到 1mA 的电流就足够了。
  2. 从原理图中查出相关的IO口连接,当 PB.8 输出高电平的时候,蜂鸣器将发声,当 PB.8 输出低电平的时候,蜂鸣器停止发声。

 

按键输入注意点

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. 输入是否支持连续按下的函数区别:

 

 

时钟模块

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);          

下一阶段安排

  1. 准备去接触STEMWIN的相关内容,首先完成STEMWIN的无操作与带操作系统移植,逐步完善文本显示的范围,
  2. 继续学习stm32的基础内容例如AD转换,中断,串口调试等。对基础知识结构进行完善的同时对STEMWIN进行深入研究。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值