历史上的今天
返回首页

历史上的今天

今天是:2025年03月09日(星期日)

正在发生

2019年03月09日 | 成功移植icore的shell串口到STM32F4

2019-03-09 来源:eefocus

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 !


推荐阅读

史海拾趣

Central Semiconductor公司的发展小趣事

随着全球电子市场的不断扩大和竞争的加剧,Central Semiconductor积极实施全球化战略,拓展国际市场。公司在全球范围内建立了完善的销售网络和供应链体系,以确保产品能够及时、准确地到达客户手中。

同时,Central还不断开拓新的业务领域,如汽车电子、工业控制、医疗电子等。通过不断的技术创新和市场拓展,Central逐渐在多个领域取得了显著的业绩和市场份额。

这五个故事分别从不同的角度展示了Central Semiconductor在电子行业中的发展历程和成就。无论是坚守与转型、创新开发、对停产产品的支持、裸片产品的开发还是全球化布局与业务拓展,Central都展现出了其敏锐的市场洞察力和强大的市场竞争力。这些故事不仅是对Central发展历史的回顾,也是对其未来发展的展望和期许。

集创北方(CHIPONE)公司的发展小趣事

近年来,集创北方在电子行业的地位日益稳固。从2019年到2021年,公司的营收实现了飞跃式增长,从14.47亿元增长至56.74亿元,复合增长率高达98%。这一成绩的背后,是公司不断创新、积极应对市场变化的结果。

Aces Electronics Co Ltd公司的发展小趣事

Aces Electronics Co., Ltd.自成立之初,就致力于电子技术的研发与创新。在公司发展早期,Aces面临技术壁垒和市场竞争的双重压力。然而,公司通过不断投入研发资源,终于在某一关键领域取得了重大技术突破,推出了一款具有颠覆性的电子产品。这款产品凭借其卓越的性能和创新的设计,迅速在市场上获得了广泛认可,为Aces打开了新的发展空间。

D3公司的发展小趣事

面对全球电子市场的巨大潜力,D3公司积极实施全球化战略。公司不仅在国内市场深耕细作,还积极拓展海外市场。通过与国外知名企业的合作,D3公司的产品逐渐进入国际市场,并在多个国家和地区取得了良好的销售业绩。同时,公司还加强了对海外市场的调研和分析,以更好地满足当地消费者的需求。这种全球化战略的实施,为D3公司的长远发展奠定了坚实的基础。

Dantona Industries公司的发展小趣事

作为一家有社会责任感的企业,Dantona Industries始终关注环境保护和社会公益。他们积极推广绿色生产理念,采用环保材料和生产工艺,减少对环境的影响。同时,公司还积极参与社会公益活动,为贫困地区的教育、医疗等事业提供援助。这些举措不仅展现了公司的社会担当精神,也为公司赢得了良好的社会声誉和品牌形象。

Active-Semi公司的发展小趣事

Dantona Industries非常重视人才的培养和团队建设。他们深知,一个优秀的团队是公司发展的基石。因此,公司投入大量资源用于员工培训、激励机制建设等方面。他们定期组织技术研讨会、团队拓展活动等,提升员工的业务能力和团队凝聚力。同时,公司还建立了完善的晋升机制和薪酬体系,确保员工能够享受到与公司共同成长的成果。这种以人为本的管理理念为公司的持续发展提供了有力保障。

问答坊 | AI 解惑

上位机控制16路继电器源码

上位机控制16路继电器源码…

查看全部问答>

告别IAR,拥抱RVMDK

从接触STM32以来,一直都是在IAR For ARM 4.22A环境下进行开发。因为以前用过IAR For MSP430,对IAR的开发环境比较熟悉,再加上万利板子提供的例程都是IAR的,用起来也还顺手。 直到前一阵参加了一个ARM的研讨会,会上英蓓特极力推荐RealView MDK中 ...…

查看全部问答>

SD卡休眠唤醒后,盘符没了 重新插拔也没法显示。。

平台是 pxa270+wince 6.0 当休眠,再唤醒后, SD卡的盘符就丢失了, 重新插拔也显示不了 根据串口输出信息,SD驱动在Powerup的时候执行了一个函数SimulateCardInsertion,这个函数已经模拟了一次SD卡的插拔过程,通过串口信息也发现这个函数被正 ...…

查看全部问答>

短接网线的1,3和2,6号线,能造成交换机端口连接上的现象吗?

请教大家一个问题:如果将网线的一头作成正常的网线接头,另一头的线路将1,3号线短接,2,6号线短接,接在交换机的一个端口上,会出现什么样的情况?交换机会不会不能工作? 非常感谢大家…

查看全部问答>

微型低功耗大容量心电记录仪的研制

常规心电图记录仪是医生诊断心脏疾病的主要手段之一,但它仅能记录短暂心搏情况。由于在相当多的情况下难以记录到即刻发作时的心电图改变,导致无法作出正确的诊断和治疗。因此对病人进行长时间的心电图记录有着极其重要的临床价值。而微型动态心电 ...…

查看全部问答>

请教ADC12内部时钟

请问ADC12内部时钟工作频率是5MH吗?在低功耗状态下这个内部时钟工作吗?在哪个低功耗的层面上工作,LPM0,LPM1,还是LPM2? 多谢…

查看全部问答>

有哪些C语言提高的书?

现在学完C了,对一些基本的东西有了一个大致的掌握了,希望在这个基础上再提高一下,恳请大家推荐几本比较好的C语言提高的书,谢谢!!…

查看全部问答>

layoutt 设计准则

小弟是刚接触layout,对于在PCB布线时,应该要注意哪些问题,比如说针对不同的信号线长、线距等等, 因为看过一些书,都是概念性的话,在实际操作感觉不上手。     所以想请教目前比较通用的一些设计准则。   PS:我是做NOTEBO ...…

查看全部问答>

STM固件库及其相关资料

把自己收集的固件库资料分享给大家,免费下载! [local]1[/local][local]2[/local][local]3[/local][local]4[/local][local]5[/local][local]6[/local][local]7[/local]…

查看全部问答>