- 其它文章链接,独家吐血整理
- 实验现象
- 主程序
- IAP初始化程序
- 代码讲解
其它文章链接,独家吐血整理
(实验3)单片机,STM32F4学习笔记,代码讲解【按键输入实验】【正点原子】【原创】
(实验4)单片机,STM32F4学习笔记,代码讲解【串口实验】【正点原子】【原创】
(实验5)单片机,STM32F4学习笔记,代码讲解【外部中断实验】【正点原子】【原创】
(实验6,实验7)单片机,STM32F4学习笔记,代码讲解【看门狗实验】【正点原子】【原创】
(实验8)单片机,STM32F4学习笔记,代码讲解【定时器实验】【正点原子】【原创】
(实验9)单片机,STM32F4学习笔记,代码讲解【PWM输出实验】【正点原子】【原创】
(实验10)单片机,STM32F4学习笔记,代码讲解【输入捕获实验】【正点原子】【原创】
(实验11)单片机,STM32F4学习笔记,代码讲解【电容触摸按键实验】【正点原子】【原创】
(实验12)单片机,STM32F4学习笔记,代码讲解【OLED显示实验】【正点原子】【原创】
(实验13)单片机,STM32F4学习笔记,代码讲解【TFTLCD彩屏显示实验】【正点原子】【原创】
(实验15)单片机,STM32F4学习笔记,代码讲解【RTC实时时钟实验】【正点原子】【原创】
(实验17)单片机,STM32F4学习笔记,代码讲解【待机唤醒实验】【正点原子】【原创】
(实验23)单片机,STM32F4学习笔记,代码讲解【DMA实验】【正点原子】【原创】
(实验25)单片机,STM32F4学习笔记,代码讲解【SPI实验】【正点原子】【原创】
(实验34)单片机,STM32F4学习笔记,代码讲解【FLASH模拟EEPROM实验】【正点原子】【原创】
(实验36)单片机,STM32F4学习笔记,代码讲解【外部SRAM实验】【正点原子】【原创】
(实验37)单片机,STM32F4学习笔记,代码讲解【内存管理实验】【正点原子】【原创】
(实验38)单片机,STM32F4学习笔记,代码讲解【SD卡实验】【正点原子】【原创】
(实验39)单片机,STM32F4学习笔记,代码讲解【FATFS实验】【正点原子】【原创】
(实验46)单片机,STM32F4学习笔记,代码讲解【FPU测试实验】【正点原子】【原创】
(实验47)单片机,STM32F4学习笔记,代码讲解【DSP-FFT测试实验】【正点原子】【原创】
(实验50)单片机,STM32F4学习笔记,代码讲解【串口IAP实验】【正点原子】【原创】
(实验50)单片机,STM32F4学习笔记,代码讲解【串口IAP实验-RTC时钟实验】【正点原子】【原创】
(实验55)单片机,STM32F4学习笔记,代码讲解【网络通信实验】【正点原子】【原创】
主程序略
int main(void)
{
RTC_TimeTypeDef RTC_TimeStruct;
RTC_DateTypeDef RTC_DateStruct;
u8 tbuf[40];
u8 t=0;
SCB->VTOR = FLASH_BASE | 0x10000;//设置偏移量
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//设置系统中断优先级分组2
delay_init(168); //初始化延时函数
uart_init(115200); //初始化串口波特率为115200
usmart_dev.init(84); //初始化USMART
LED_Init(); //初始化LED
LCD_Init(); //初始化LCD
My_RTC_Init(); //初始化RTC
RTC_Set_WakeUp(RTC_WakeUpClock_CK_SPRE_16bits,0); //配置WAKE UP中断,1秒钟中断一次
POINT_COLOR=RED;
LCD_ShowString(30,50,200,16,16,"Explorer STM32F4");
LCD_ShowString(30,70,200,16,16,"RTC TEST");
LCD_ShowString(30,90,200,16,16,"ATOM@ALIENTEK");
LCD_ShowString(30,110,200,16,16,"2014/5/5");
while(1)
{
t++;
if((t%10)==0) //每100ms更新一次显示数据
{
RTC_GetTime(RTC_Format_BIN,&RTC_TimeStruct);
sprintf((char*)tbuf,"Time:%02d:%02d:%02d",RTC_TimeStruct.RTC_Hours,RTC_TimeStruct.RTC_Minutes,RTC_TimeStruct.RTC_Seconds);
LCD_ShowString(30,140,210,16,16,tbuf);
RTC_GetDate(RTC_Format_BIN, &RTC_DateStruct);
sprintf((char*)tbuf,"Date:20%02d-%02d-%02d",RTC_DateStruct.RTC_Year,RTC_DateStruct.RTC_Month,RTC_DateStruct.RTC_Date);
LCD_ShowString(30,160,210,16,16,tbuf);
sprintf((char*)tbuf,"Week:%d",RTC_DateStruct.RTC_WeekDay);
LCD_ShowString(30,180,210,16,16,tbuf);
}
if((t%20)==0)LED0=!LED0; //每200ms,翻转一次LED0
delay_ms(10);
}
}
IAP初始化程序
代码讲解略
//SCB->VTOR = FLASH_BASE | 0x10000;//设置偏移量
//与原程序相比,仅仅多了上面一行代码,VTOR寄存器存放的是中断向量表的起始地址
/* Configure the Vector Table location add offset address ------------------/
//#ifdef VECT_TAB_SRAM
// SCB->VTOR = SRAM_BASE | VECT_TAB_OFFSET; / Vector Table Relocation in Internal SRAM /
//#else
// SCB->VTOR = FLASH_BASE | VECT_TAB_OFFSET; / Vector Table Relocation in Internal FLASH */
//#endif
//上面是SystemInit函数的内容,在stm32f4xx.c文件里面
//VECT_TAB_SRAM程序没有定义,所以直接跳到else的内容
///*!< Uncomment the following line if you need to relocate your vector Table in
// Internal SRAM. /
/// #define VECT_TAB_SRAM /
//#define VECT_TAB_OFFSET 0x00 /!< Vector Table base offset field.
// This value must be a multiple of 0x200. */
//VECT_TAB_OFFSET必须是0x200的倍数
//FLASH模式下,因为F4自带的FLASH较大,我们设置IROM1的起始地址为0x0800 0000 偏移0x10000==64K空间
//因为程序存储空间为0x08000 0000开始后的1024k空间都可以储存,于是剩余960K空间给FALSH APP代码,上面64K给boot代码
//而SARM空间就比较小,总数只有128K,这个有点复杂,具体可看开发指南
//*** Error: CreateProcess failed, Command: ‘D:\tools\mdk5.14\ARM\ARMCC\bin\fromelf.exe --bin -o …\OBJ\RTC.bin …\OBJ\RTC.axf’
//"…\OBJ\RTC.axf" - 1 Error(s), 1 Warning(s).
//这个地方包括应该无影响,与个人电脑软件安装路径有关
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)