简述STM32F4与Cortex-M4的关系,SYM32F407ZGT6有哪些外设资源
时间: 2023-03-26 09:01:47 浏览: 171
STM32F4 是一款基于 Cortex-M4 内核的微控制器,Cortex-M4 是一种 ARM 处理器内核。STM32F407ZGT6 是 STM32F4 系列中的一款型号,它拥有丰富的外设资源,包括但不限于:12 位 ADC、DAC、定时器、通用串行总线接口、以太网接口、USB 接口、SDIO 接口等。
相关问题
使用野火SYM32F103VET6指南者开发板使用4针OLED屏幕写一段万年历的代码
以下是使用野火SYM32F103VET6指南者开发板和4针OLED屏幕编写的简单万年历代码:
```
#include "stm32f10x.h"
#include "oled.h"
#define YEAR 2021 // 当前年份
#define MONTH 1 // 当前月份
#define DAY 1 // 当前日期
uint8_t month_day[12] = {31,28,31,30,31,30,31,31,30,31,30,31}; // 每个月份的天数
void delay(uint32_t count)
{
uint32_t i;
for(i = 0; i < count; i++);
}
void OLED_Show_Year(uint16_t year)
{
OLED_ShowString(0, 0, "Year: ");
OLED_ShowNum(48, 0, year, 4, 16);
}
void OLED_Show_Month(uint8_t month)
{
OLED_ShowString(0, 16, "Month: ");
OLED_ShowNum(48, 16, month, 2, 16);
}
void OLED_Show_Day(uint8_t day)
{
OLED_ShowString(0, 32, "Day: ");
OLED_ShowNum(48, 32, day, 2, 16);
}
void OLED_Show_Week(uint8_t week)
{
OLED_ShowString(0, 48, "Week: ");
switch(week)
{
case 0:
OLED_ShowString(48, 48, "Sunday");
break;
case 1:
OLED_ShowString(48, 48, "Monday");
break;
case 2:
OLED_ShowString(48, 48, "Tuesday");
break;
case 3:
OLED_ShowString(48, 48, "Wednesday");
break;
case 4:
OLED_ShowString(48, 48, "Thursday");
break;
case 5:
OLED_ShowString(48, 48, "Friday");
break;
case 6:
OLED_ShowString(48, 48, "Saturday");
break;
default:
break;
}
}
void OLED_Show_Calendar(uint16_t year, uint8_t month, uint8_t day)
{
uint8_t week = 0;
uint16_t days = 0;
// 计算该年份是否为闰年
if((year % 4 == 0 && year % 100 != 0) || year % 400 == 0)
{
month_day[1] = 29; // 闰年2月份为29天
}
else
{
month_day[1] = 28; // 平年2月份为28天
}
// 计算该日期是该年份中的第几天
for(uint8_t i = 0; i < month - 1; i++)
{
days += month_day[i];
}
days += day;
// 计算该日期是星期几
week = (days + 5) % 7;
OLED_Show_Year(year);
OLED_Show_Month(month);
OLED_Show_Day(day);
OLED_Show_Week(week);
}
int main(void)
{
OLED_Init(); // 初始化OLED屏幕
OLED_ShowString(0, 0, "Hello, World!");
delay(1000000);
OLED_Clear();
OLED_Show_Calendar(YEAR, MONTH, DAY);
while(1);
return 0;
}
```
在该代码中,我们定义了当前的年份、月份和日期,并且使用了一个数组来存储每个月份的天数。然后我们使用了一些函数来显示年份、月份、日期和星期几,最后在主函数中调用了这些函数来显示万年历。你可以根据需要对代码进行修改以适应你的具体需求。
sym32初始化ln8742与初始化ln8720代码区别
对于sym32芯片,初始化ln8742与初始化ln8720的代码区别主要在于使用的寄存器不同。
ln8742是一种GPIO扩展器,其初始化需要设置I2C接口和相应的寄存器。示例代码如下:
```
i2c_WriteByte(0x20, 0x00, 0x00); //设置I/O控制寄存器A为输出模式
i2c_WriteByte(0x20, 0x01, 0x00); //设置I/O控制寄存器B为输出模式
```
而ln8720是一种电容式触摸屏控制器,其初始化需要设置SPI接口和相应的寄存器。示例代码如下:
```
spi_WriteByte(0x01); //发送复位命令
delay_ms(100);
spi_WriteByte(0x88); //设置触摸屏工作模式
delay_ms(100);
spi_WriteByte(0x80); //设置触摸屏控制器为SPI模式
```
因此,初始化ln8742需要使用I2C接口,而初始化ln8720需要使用SPI接口,二者的代码区别主要在于使用的接口和寄存器不同。