串列埠資料幀傳送格式:1個起始位 + 8個資料位 + 1個停止位
思路:1.pa9做普通io推挽輸出,按照傳送格式用延時暫時作為該位的傳輸時間,波特率為9600
2.pa10做浮空輸入,外部共享中斷使用(可用其餘外部中斷),每接收到乙個資料就進中斷一次,迴圈接收判斷,當接收到\r\n將接收標誌置為0x8000(或為1);
//加入以下**,支援printf函式,而不需要選擇use microlib
#if 1
#pragma import(__use_no_semihosting)
//標準庫需要的支援函式
struct __file
//重定義fputc函式
int fputc(int ch, file *f)
#endif
//傳送乙個位元組資料
void sendonebyte(u8 byte)
else
}txd_high();//傳送停止位
delay_us(104);
//傳送陣列最好用這個,也可傳送字串
void sendbytes(u8 *str,u8 len)
;delay_init();
extix_init();
//測試 傳送乙個位元組
sendonebyte(0x00);
sendonebyte(0x01);
sendonebyte(0x02);
//測試傳送陣列
sendbytes(hello,5);
while(1)}}
u8 tmp; //接收的資料(資料中間轉換)
u8 usart_rx_buf[usart_rec_len];//接收緩衝區
u16 usart_rx_sta=0; //接收完成標誌
//extern sendonebyte(u8 byte);
//外部中斷初始化
void extix_init(void)
/*共享中斷接收函式*/
void exti15_10_irqhandler(void)
if((usart_rx_sta&0x8000)==0)//接收標誌為0
else}}
exti_clearitpendingbit(exti_line10);
nvic->iser[exti15_10_irqn >> 0x05] =
(uint32_t)0x01 << (exti15_10_irqn & (uint8_t)0x1f);
串列埠tx測試結果:(上電後傳送)
串列埠rx測試結果:(傳送的資料回傳)
STM32外部中斷
一 基本概念 arm coetex m3核心共支援256個中斷,其中16個內部中斷,240個外部中斷和可程式設計的256級中斷優先順序的設定。stm32目前支援的中斷共84個 16個內部 68個外部 還有16級可程式設計的中斷優先順序的設定,僅使用中斷優先順序設定8bit中的高4位。stm32可支援...
stm32外部中斷
外部中斷程式配置流程 rcc 時鐘配置 void rcc configuration void 時鐘配置 開啟各路時鐘 rcc apb2periphclockcmd rcc apb2periph usart1 rcc apb2periph gpioa rcc apb2periph afio,enab...
stm32外部中斷
好久沒玩微控制器了,最近閒著沒事想拿出來玩玩,沒想到乙個stm32的外部中斷讓我花費了兩天時間,好的的挫折啊!終於下午除錯成功,下面來說一下我的除錯之路吧!硬體就是兩個按鍵,四個led,led事共陽極接法,按鍵一端接地一端接gpio口,通過按鍵中斷控制led。程式寫好以後發現始終無法進入中斷,開始查...