stm32学习 c语言笔记
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
这是前段时间做彩屏显示时候遇到的难题,
*(__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类似硬盘