成功移植icore的shell串口到STM32F4
来源:互联网 发布:古墓丽影崛起设置优化 编辑:程序博客网 时间:2024/04/29 16:59
icore开发板上的例子光盘下的 \iCore_扩展相关\code\7_uart1_shell工程文件,删除FSMC.c 和RCC.c 两个C文件和H文件
移植步骤:
第一、替换到之前的启动代码,添加startup_stm32f4xx.s 和system_stm32f4xx.c 两个文件。system_stm32f4xx.h可以替代到rcc.h
第二、改写NVIC.c 里的初始化代码。
static int initialize(void){SCB->VTOR = ((unsigned long)0x08000000); //Set the Vector Table base location at 0x08000000 SCB->AIRCR = 0x05FA0000 | 0x400; ////SysTick_Config(SystemCoreClock / 1000); //ÉèÖÃsystemtickÒ»ºÁÃëÖÐ¶Ï NVIC->IP[39] = 0xf0;// NVIC->ISER2.B.USART1_ = 1;// NVIC->ISER2.B.USART2_ = 1;// NVIC->ISER2.B.USART3_ = 1;NVIC->ISER[1] |= (1<<(39-32));//NVIC->ISER[1] |= 0x0080;return 0;}第三、改写usart.c 里的串口初始化函数
static int initialize_usart3(int baudrate){ int i; /* Configure UART3 for 115200 baud */ RCC->AHB1ENR |= ( 1 << 2); /* Enable GPIOC clock */ GPIOC->MODER &= ~( 3 << 20); GPIOC->MODER |= ( 2 << 20); /* PC10: Alternate function mode */ GPIOC->AFR[1] &= ~(0x0F << 8); GPIOC->AFR[1] |= ( 7 << 8); /* PC10: Alternate function USART3_TX */ GPIOC->MODER &= ~( 3 << 22); GPIOC->MODER |= ( 2 << 22); /* PC11: Alternate function mode */ GPIOC->AFR[1] &= ~(0x0F << 12); GPIOC->AFR[1] |= ( 7 << 12); /* PC11: Alternate function USART3_RX */ RCC->APB1ENR |= ( 1 << 18); /* Enable USART3 clock */ USART3->BRR = 0x016D; /* Configure 115200 baud, @ 42MHz */ USART3->CR3 = 0x0000; /* 8 bit, 1 stop bit, */ USART3->CR2 = 0x0000; /* no parity */ for (i = 0; i < 0x1000; i++) __NOP(); /* avoid unwanted output */ USART3->CR1 = 0x212C;NVIC_EnableIRQ(USART3_IRQn); //使能USART3中断return 0;}USART3->CR1 = 0x212C;USART3_CR1的第2,3,5,8,13号为全部置1。这句话很重要。参照小船的博客,RXNEIE置位时,ORE=1 or RXNE=1 时产生串口中断;PEIE置位时,An USART interrupt is generated whenever PE=1 in the USART_SR register;详细见STM32F4参考手册。其实,经实验,NVIC->ISER[1] |= (1<<(39-32));和NVIC_EnableIRQ(USART3_IRQn);这两句话意思是一样的。所以,任选一句都行。 还有一个细节是在工程选项里的C/C++里的Misc Controls 加入--C99。意思是加入C99 的语法规则。
因为类似一下数据结构的赋初始值的时候非常方便。
typedef const struct _COMMAND {char * command;void (* function)(void);const struct _COMMAND * next;}COMMAND_T;
COMMAND_T cmd_uid = {.command = "uid",.function = func_uid,.next = NULL};最终的显示效果如图:
to my happy birthday today !
- 成功移植icore的shell串口到STM32F4
- 神经网络移植到STM32F4上的应用
- linux3.18内核移植到GT2440成功---完善串口
- 移植RT-THREAD+LUA到STM32F4
- stm32F4 串口DMA+环形缓冲区的实现
- Xenomei移植到2440成功
- 成功移植mplayer到mini2440
- 移植ubifs到dm368成功 .
- 移植ubifs到dm368成功
- 移植ubifs到dm368成功
- STM32F4串口DMA配置
- 成功的把ftk移植到arm-linux上
- stm32f4移植ucosii
- stm32f4移植ucgui
- STM32F4移植ucos_II
- STM32F4-UCOSIII-1移植
- STM32F4的HAL库开启串口空闲中断
- STM32F4移植FAT32系统出现的问题归纳总结
- 链表操作
- 实习第一周小记
- Win8是这个样子的。。。
- Android照片墙应用实现,再多的图片也不怕崩溃
- asp.net发送E-mail
- 成功移植icore的shell串口到STM32F4
- 剑指Offer算法实现之二十六:复杂链表的复制
- 学会jQuery 不用买书
- Android学习笔记之图像颜色处理(ColorMatrix)
- hdu 1009 FatMouse' Trade
- 整数转换为二进制数
- 在人人好友里,A和B是好友,B和C是好友,如果A 和C不是好友,那么C是A的二度好友,在一个有10万人的数据库里,如何在时间0(n)里,找到某个人的十度好友
- 编译原理与文法
- Ubuntu修改屏幕亮度