(一)Day1
1.学习路线
2.基本概念
1.什么是ARM
2.ARM架构分类
3.MCU和MPU
4.DSP和FPGA
总结
在控制显示通讯 —— MCU\MPU —— C语言基础、外设基础、RTOS、 Linux基础、操作系统、网络编程
通讯数据处理算法—— DSP —— 数据处理算法理论知识
大量数据处理、特例的实现 —— FPGA —— 高速接口、音视频算法
STM32开发命名规则
3 嵌入式产品举例
1.智能台灯
无操作系统的MCU项目
功能描述:可以根据外界光照情况调整自身亮度和色温,
也可以通过按钮手动调整,
可以和手机连接,通过app控制,
还能间隔一定时间,提醒用户。
一个主控芯片 + WIFI芯片
系统大致框图
2.智能手环
通常运行RTOS
3电视盒子
运行Linux/Android系统
(二)Day2
1.上手思路
最小系统概念
2.寄存器
存储结构
控制LED 流程:原理图(找到连接的引脚)—— 芯片存储结构图(找到控制寄存器地址)—— 根据手册查看详细信息
![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/25b2e3c82fc84ada8d7f980ca47fb98c.png]
![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/0bf02e42b9164001882f7e100bdc322e.png]
3 开发方式
4 创建工程
STM32CubeMX创建工程选取MDK-ARM(适用于KEIL的工程),勾选Generate选项
![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/ac398a5cdbae4ea0bcc5bca38af616f8.png
第一个点灯程序
在主题main函数相对应位置
while (1)
{
/* USER CODE END WHILE */
/* USER CODE BEGIN 3 */
HAL_GPIO_WritePin(GPIOA, GPIO_PIN_1, GPIO_PIN_RESET);
HAL_Delay(1000);
HAL_GPIO_WritePin(GPIOA, GPIO_PIN_1, GPIO_PIN_SET);
HAL_Delay(1000);
}
/* USER CODE END 3 */
}
5 夜课
C语言指针基础
如何操作GPIO
三种办法
1.参考网上示例
2.看HAL库源码和注释
1.使能时钟
2.初始化配置引脚,里面设置引脚的各个属性
3.如果涉及中断,还需配置中断
4.读引脚函数
5.写引脚函数
- 使用配套资料的 《8_STM32F1HAL库和LL库用户手册.pdf》
(三)Day3
1.时钟系统与GPIO
按键控制灯
while (1)
{
/* USER CODE END WHILE */
/* USER CODE BEGIN 3 */
if (0 == HAL_GPIO_ReadPin(KEY_GPIO_Port, KEY_Pin))
{
HAL_Delay(8); // 延时消抖
if (0 == HAL_GPIO_ReadPin(KEY_GPIO_Port, KEY_Pin))
{
HAL_GPIO_WritePin(GPIOA, GPIO_PIN_1, GPIO_PIN_RESET);
}
else
{
HAL_GPIO_WritePin(GPIOA, GPIO_PIN_1, GPIO_PIN_SET);
}
}
2. CubeMx时钟配置
判断时钟配置是否正确的两个方法
1.使用HAL库提供的函数HAL_RCC_GetSysClockFreq(),
获取系统时钟频率,再通过串口打印或者debug调试显示结果。
第二个,硬件方法:PA8可以复用为MCO引脚,对外提供时钟输出。
用示波器监控该引脚的输出来判断我们的系统时钟是否设置正确。
(四)Day4
什么是中断
中断有哪些
中断优先级
GPIO 中断
中断与事件的区别
链接: STM32 中断与事件
CubeMX操作中断
1.配置中断引脚
- 降低抢占优先级,勾选NVIC代码初始化
按键中断调用
最后调用HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin) 为虚函数,覆写
static uint8_t key_flag = 0;
void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin)
{
if(GPIO_Pin == KEY_Pin)
{
key_flag = ~key_flag;
HAL_GPIO_WritePin(LED_GPIO_Port, LED_Pin, key_flag?GPIO_PIN_RESET:GPIO_PIN_SET);
}
}
通讯
1.串行/并行通讯
2.全双工\半双工\单工传输
3.同步\异步通信
4.串口电平
串口连接时序
5.串口测试
CubeMX配置
实现完串口配置就可以使用 HAL_UART_Receive和HAL_UART_Transmit来接收和发送串口数据
在实现printf格式化输出,需要覆写两个函数,如下 重定向打印输出代码
在 Usart.c中添加如下代码 ,添加头文件 #includ <stdio.h>
/*
* 添加如下代码,可不在工程设置中勾选 Use MicroLIB
*/
#pragma import(__use_no_semihosting)
struct __FILE
{
int a;
};
FILE __stdout;
FILE __stdin;
void _sys_exit(int x)
{
}
**自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。**
**深知大多数嵌入式工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!**
**因此收集整理了一份《2024年嵌入式&物联网开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。**
![img](https://img-blog.csdnimg.cn/img_convert/9d4aa5bd4faed2b55ef934917046d6f5.png)
![img](https://img-blog.csdnimg.cn/img_convert/a0a75983b392f4e4c79e95d4d9dab2ef.jpeg)
![img](https://img-blog.csdnimg.cn/img_convert/c79bc8013e62287b8af104711160e97e.png)
**既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上嵌入式&物联网开发知识点,真正体系化!**
![img](https://img-blog.csdnimg.cn/img_convert/65b82dd6638f077d915612517f97cf93.png)
![img](https://img-blog.csdnimg.cn/img_convert/076b1501c0ad973375474a1ca69f30e6.png)
**由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新**
**如果你觉得这些内容对你有帮助,可以+V:Vip1104z获取!!! (备注:嵌入式)**
<img src="https://img-community.csdnimg.cn/images/73bb5de17851459088c6af944156ee24.jpg" alt="img" style="zoom: 67%;" />
# 最后
**资料整理不易,觉得有帮助的朋友可以帮忙点赞分享支持一下小编~**
**你的支持,我的动力;祝各位前程似锦,offer不断,步步高升!!!**
外链图片转存中...(img-32v9Zgdk-1712227820336)]
[外链图片转存中...(img-Gw8LqRz8-1712227820336)]
**由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新**
**如果你觉得这些内容对你有帮助,可以+V:Vip1104z获取!!! (备注:嵌入式)**
<img src="https://img-community.csdnimg.cn/images/73bb5de17851459088c6af944156ee24.jpg" alt="img" style="zoom: 67%;" />
# 最后
**资料整理不易,觉得有帮助的朋友可以帮忙点赞分享支持一下小编~**
**你的支持,我的动力;祝各位前程似锦,offer不断,步步高升!!!**
**[更多资料点击此处获qu!!](https://bbs.csdn.net/topics/618376385)**