stm32学习 c语言笔记

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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类似硬盘

相关文档
最新文档