这是前段时间做彩屏显示时候遇到的难题,
*(__IO uint16_t *) (Bank1_LCD_C)这个就是将后面的数据转换为地址,然后对地址单元存放数据。
可如下等效:
__IO uint16_t *addr;
addr = (__IO uint16_t *) Bank1_LCD_C;
#ifdef和#elif连用,语法和if。
else if语句一样
推挽输出增加驱动,可以驱动LED起来
static int count=0
count++
这个语句中,count仅仅被初始化一次
以后加加一次期中的值就不会变化了
SysTick_CTRL(控制和状态寄存器)
SysTick_LOAD(重装载寄存器)
SysTick_VAL(当前值寄存器)
SysTick_CALIB(校准值寄存器)
TFT经验:弄多大的相片,必须先把那个相片的尺寸改掉,再去取模,才可以,要不会有重影的嘿嘿嘿嘿
VBAT 是电池供电的引脚
VBAT和ADD同时都掉电时才能让备份区复位。
volatile一个变量的存储单元可以在定义该变量的程序之外的某处被引用。
volatile主要是程序员要告诉编译器不要对其定义的这个变量进行优化,防止其不能被引用,不能被改变。
VDDA>2.4V ADC才能工作
VDDA>2.7V USB才能工作
VDD(1.8-3.6v)
VBAT=1.8-3.6v
VSS VSSA VREF必须接到地线
没有外部电源供电时必须VBAT接上VDD
使用PLL时,VDDA必须供电
printf("abs(x)=%d\n",x<0?(-1)*x:x)
条件编译是问号前边为真则取冒号前边的值,为假的,则取后边的值。
所以说上边这条打印的语句是打印x的绝对值。
//stm32f10x_nvic.c
stm32f10x_lib.c
stm32f10x_gpio.c
stm32f10x_flash.c
stm32f10x_rcc.c
TIM6 TIM7基本定时器
(只有这两个定时器不能产生PWM)
TIM1 TIM8高级控制定时器
TIM2 TIM3 TIM4 TIM5为通用定时器
其中高级定时器TIM1和TIM8可以同时产生多达7路的PWM输出。
而通用定时器也能同时产生多达4路的PWM输出,这样,STM32最多可以同时产生30路PWM输出!
修改和自己写代码时候
只是需要修改
main.c
stm3210x_conf.h
stm3210x_it.c
这三个就够了
1:BOOT0接高电平的时候容易自动复位
2:BOOT0接0的时候用户闪存存储器为启动区域
3:BOOT0接1的BOOT1接0的时候用户用系统存储器或内嵌SRAM, 这时候容易自动复位。
4:我的板子是boot0接1,boot1接0,也就是系统存储器为启动区域
使用code这个关键字就能使数据烧写到flash中了
ram类似于电脑中的内存
flash类似硬盘。