赞
踩
目录
学习参考视频:https://www.bilibili.com/video/BV1az4y1V7wZ?p=1&vd_source=0f33f4f6b8d714703917aed6c33dcbd0
嵌入式系统是以应用为中心,计算机技术为基础,软硬件可裁剪的计算机系统。
FreeRTOS(M系列)和Linux操作系统(A系列)。
ARM是一家公司,ARM架构是一种精简指令集计算机架构,
Cortex-A系列:面向高性能应用,例如手机、平板。
Cortex-R系列:实时应用,军工、汽车。
Cortex-M系列:低功耗嵌入式系统,物联网设备、智能家居。
STM32是ST(意法半导体)公司退出的一系列基于ARM Cortex-M内核的产品系列。
寄存器开发:代码执行效率高,开发效率较低。
库函数开发:
1.标准库:成熟稳定。
2.HAL库:实现跨平台,界面编程,屏蔽硬件底层。
3.LL库:更加接近底层的库。
SOC外设(GPIO、UART、IIC、SPI...)
1.需求分析:硬件平台要求、外部接口、性能要求等。
2.架构设计:模块划分、接口设计、数据流、控制流等。
3.软件开发:编写代码、编译、调试等。
4.集成测试:各个模块进行集成和综合测试。
5.系统验证与调试:功能验证、性能测试、兼容性测试等。
6.优化与调试:进行性能优化和调试。
7.部署和发布:将软件部署到目标设备上,并进行发布。
8.维护和升级:修复漏洞、添加新功能。
最后,再次编译零报错零警告。
STM32F407有7组IO,每组IO有16个IO口,144个,注意STM32F407VET6只有100个。
浮空输入:引脚悬空时电平不确定。
上拉输入:引脚悬空时默认高电平。
下拉输入:引脚悬空时默认低电平。
模拟输入:引脚直接接入ADC。
开漏输出:高电平为高阻态,低电平接VSS。
推挽输出:高电平接VDD,低电平接VSS。
复用开漏输出:由片上外设控制,高电平为高阻态,低电平接VSS。
复用推挽输出:由片上外设控制,高电平接VDD,低电平接VSS。
4种模式:输入、输出、复用、模拟。
4种输出速度:2MHZ(低速)、25MHZ(中速)、50MHZ(快速)、100MHZ(高速)
- #include "stm32f4xx.h" // Device header
-
- /***********************************
- *功能:毫秒粗略计时器
- *参数:
- * ms:给定毫秒
- *返回值:无
- *其他:
- ************************************/
- void delay_ms(uint32_t ms)
- {
- int i;
- for( i = 0; i < (ms*10000) ; i++)
- {
- __NOP();
- }
- }
-
- /***********************************
- *功能:LED灯初始化
- *参数:无
- *返回值:无
- *其他:
- * PE8 ---- LED1
- * PE9 ---- LED2
- * PE10 --- LED3
- ************************************/
- void LED_Init(void)
- {
- /***1.开启时钟***/
- RCC->AHB1ENR |= 0x01 << 4;
- /***2.配置GPIO***/
- GPIOE->MODER &= ~(0x03 << 16); //将16、17位数据清零
- GPIOE->MODER |= (0x01 << 16); //模式:输出
- GPIOE->ODR |= 0x01 << 8; //初始化为灯灭
-
- GPIOE->MODER &= ~(0x03 << 18); //将18、19位数据清零
- GPIOE->MODER |= (0x01 << 18); //模式:输出
- GPIOE->ODR |= 0x01 << 9; //初始化为灯灭
-
- GPIOE->MODER &= ~(0x03 << 20); //将20、21位数据清零
- GPIOE->MODER |= (0x01 << 20); //模式:输出
- GPIOE->ODR |= 0x01 << 10; //初始化为灯灭
- }
-
- int main(void)
- {
- LED_Init(); //初始化
-
- while(1)
- {
- GPIOE->ODR &= ~(0x01 << 8); //LED1亮灯
- GPIOE->ODR |= 0x01 << 10; //LED3灯灭
- GPIOE->ODR |= 0x01 << 9; //LED2灯灭
- delay_ms(300);
- GPIOE->ODR &= ~(0x01 << 9); //LED2亮灯
- GPIOE->ODR |= 0x01 << 10; //LED3灯灭
- GPIOE->ODR |= 0x01 << 8; //LED1灯灭
- delay_ms(300);
- GPIOE->ODR &= ~(0x01 << 10); //LED3亮灯
- GPIOE->ODR |= 0x01 << 9; //LED2灯灭
- GPIOE->ODR |= 0x01 << 8; //LED1灯灭
- delay_ms(300);
- }
-
- }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。