一:代码容量
我的博客:写写感悟
Code :是程序中代码所占字节大小
RO-data :程序中所定义的指令和常量大小
RW-data :程序中已初始化的变量大小
ZI-Data :程序中未初始化的变量大小
ROM(Flash) size = Code+RO-data+RW-data;
RAM size = RW-data+ZI-data
二,单片机时间
72MHz: 1秒钟 1/(每次的时间)= 1/(1/72MHz) = 72 000 000次。
系统时钟频率为72MHz,那么每个时钟周期的时间为1/72MHz = 13.89ns (秒,毫秒,微秒,纳秒)
需要的时钟周期数 = 需要的时间 / 每个时钟周期的时间
需要的时钟周期数 = 11.111us / 13.89ns 约等于 800(799.928)
Period = 800 - 1; // 自动重装寄存器的值
Prescaler = 0; // 预分频器的值
配置为11.111us的定时器中断
补充
系统时钟频率为48MHz,那么每个时钟周期的时间为1/48MHz = 20ns
系统时钟频率为168MHz,那么每个时钟周期的时间为1/168MHz = 5.95ns
三,stm32自定义io别名怎么建立成数组
首先,我们定义一个结构体,用于描述GPIO:
typedef struct
{
GPIO_TypeDef* GPIOx; // GPIO端口
uint16_t GPIO_Pin; // GPIO引脚
} MyGPIO_TypeDef;
然后,我们可以定义一个结构体数组,用于存储我们的GPIO别名:
MyGPIO_TypeDef GPIO_MAP[] =
{
{GPIOA, GPIO_Pin_0},
{GPIOA, GPIO_Pin_1},
{GPIOB, GPIO_Pin_0},
{GPIOB, GPIO_Pin_1},
// 更多的GPIO别名...
};
在这个例子中,GPIO_MAP[0]就是GPIOA的第0引脚,GPIO_MAP[1]就是GPIOA的第1引脚,
当我们需要使用这些GPIO时,可以直接通过数组索引来访问:
GPIO_SetBits(GPIO_MAP[i].GPIOx, GPIO_MAP[i].GPIO_Pin);
这样,我们就可以通过数组索引来方便地控制GPIO了。