icore開發(fā)板上的例子光盤下的 \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ò?oá???D??
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);這兩句話意思是一樣的。所以,任選一句都行。
還有一個細節(jié)是在工程選項里的C/C++里的Misc Controls 加入--C99。意思是加入C99 的語法規(guī)則。
因為類似一下數據結構的賦初始值的時候非常方便。
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 !
上一篇:STM32:DAC配置以及使用
下一篇:STM32串口通信之超級終端控制LED燈
推薦閱讀
史海拾趣
設計資源 培訓 開發(fā)板 精華推薦
- 搶先體驗!免費試用LM3S8962 評估套件!(10.13~11.30)
- Digi-Key KOL視頻來襲~歡迎進入MicroPython的奇妙世界
- 以舊換新!100套TI MSPM0整裝待發(fā),升級你的裝備!
- 免費送!Maxim 11塊熱門開發(fā)板只等你來!
- 【EEWORLD第十屆社區(qū)明星人物】12月明星人物
- 給你一個SEED-DIM3517 ,你可以DIY啥?
- 2016 TI嵌入式產品研討會全網首映,下載有好禮!
- 【雙節(jié)獻禮】LM3S9B96開發(fā)套件等你來拿?。。?/a>
- 樂鑫ESP32-Korvo音頻開發(fā)板免費測評試用
- 【看電源研討會 抽好禮】 高密度電源系統(tǒng)的PCB布局與散熱設計系統(tǒng)