一、中斷處理函數
void USART1_IRQHandler(void)
{
BaseType_t xHigherPriorityTaskWoken;
xHigherPriorityTaskWoken = pdFALSE;
u8 cChar;
if(USART_GetITStatus (USART1,USART_IT_RXNE)!=RESET)
{
cChar=USART_ReceiveData(USART1);
xQueueSendToBackFromISR (xQueueRx,&cChar,&xHigherPriorityTaskWoken);
portYIELD_FROM_ISR(xHigherPriorityTaskWoken);
}
}
二、中斷向量表配置
void NVIC_Configuration(void)
{
NVIC_InitTypeDef NVIC_InitStructure;
NVIC_PriorityGroupConfig (NVIC_PriorityGroup_4);
NVIC_InitStructure .NVIC_IRQChannel =USART1_IRQn ;
NVIC_InitStructure .NVIC_IRQChannelPreemptionPriority =6;
NVIC_InitStructure .NVIC_IRQChannelCmd =ENABLE ;
NVIC_Init(&NVIC_InitStructure );
}
三、串口接收任務創建
xQueueHandle xQueueRx;
void vPC_Communication_Task(void *pvParameters)
{
BaseType_t xHigherPriorityTaskWoken;
xHigherPriorityTaskWoken = pdFALSE;
u8 rx=0;
xQueueRx=xQueueCreate(20,sizeof(u8));
while(1)
{
if(xQueueReceiveFromISR(xQueueRx,&rx,&xHigherPriorityTaskWoken))
{
printf("%crn",rx);
}
vTaskDelay(1000/portTICK_RATE_MS );
}
}
四、主函數
int main(void)
{
BSP_INIT();
xTaskCreate(vLED_Task ,"led_task",50,NULL,1,NULL);
xTaskCreate(vPC_Communication_Task,"vPC_Communication_Task",500,NULL,2,NULL);
vTaskStartScheduler();
}
推薦閱讀
需求:LIN馬達控制器:AFS(DHL+AFL)——彎道輔助照明系統DHL:上極限,下極限,零位,馬達老化循環;AFL:左極限,右極限,零位,馬達老化循環;所有參數可配置:上極限,下極限,零位,左極限,右極限,馬達循環上極限,馬達循環下極限,馬達循環次數,馬達循環等待時間;保存至少30款產品的配置,配置界面需要有添加,讀取,查找,刪除功能。方案:STM32 + LIN + 串口(使用NXP的串口屏,TJA系列的LIN晶片)STM32的LIN接口作為主節點,馬達作為從節點。系統設計:RTX多任務設計,串口處理任務,顯示屏處理任務,LIN發送任務;(1)、串口處理任務:點擊串口屏會獲取到點擊的坐標值,串口中斷接受到數據加入到隊列;任務
發表於 2020-12-09
需求:(1)、點燈控制器:在線節拍,離線節拍;(2)、PWM控制盒:在線PWM,離線PWM;(3)、電流測試模塊:檢測車燈電流校準係數;方案:點燈控制器:STM32 + CAN + GPIO節拍:比如亮多長時間,滅多長時間;大節拍中嵌套多個小節拍,每個燈對應相同或者不同的節拍。上位機下發控制指令,表明此時是在線還是離線。(離線跑的節拍是在在線模式下下載的)在線模式:如果是直接輸出,按照指定格式下發CAN消息,MCU接受消息並解析,切繼電器點燈;如果是存儲節拍,MCU內部Flash存儲上位機通過CAN下發的點燈節拍。離線模式:從內部Flash中讀取節拍,並控制繼電器點燈;模式切換按鈕:不僅可以通過上位機控制在線/離線模式,還可
發表於 2020-12-09
功能:模擬人開車時,ACR和ABL的變化。 主控制器:STM32(CAN,串口,網口,輸入,輸出)上位機:LibView ACR:卷收器(座椅上面的安全帶)ABL:電機(座椅右下角接安全帶的插孔)PUMA:控制器發送CAN給PUMA,PUMA控制ACR和ABL(DBC文件的解析);ACR通過CAN控制,ABL通過PWM控制電機。 STM32硬體接口:按鍵盒8路輸入,網口與工控機軟體通信,CAN1直接控制ACR,CAN2給PUMA信號控制ACR,串口與上位機軟體通信(控制方向盤震動)。 主要有兩塊功能:靜態模式和遊戲模式。 靜態模式:UC-WinRoad沒工作時,STM32檢測
發表於 2020-12-09
, GPIO_InitTypeDef* GPIO_InitStruct){ uint32_t currentmode = 0x00, currentpin = 0x00, pinpos = 0x00, pos = 0x00; uint32_t tmpreg = 0x00, pinmask = 0x00; /* 斷言,用於檢查輸入的參數是否正確 */ assert_param(IS_GPIO_ALL_PERIPH(GPIOx)); assert_param(IS_GPIO_MODE(GPIO_InitStruct->GPIO_Mode)); assert
發表於 2020-12-09
專業開發工業設備診斷邊緣人工智慧(AI)的深度技術軟體公司Octonion 發布了一個STM32Cube擴展軟體包。該軟體包是針對來自橫跨多重電子應用領域的全球領先的半導體供應商意法半導體(STMicroelectronics,簡稱ST;紐約證券交易所代碼:STM)的工業級STM32L4 +微控制器開發板的優化過的狀態監測解決方案。 Octonions的新軟體包支持意法半導體在快速增長的工業狀態監測和預測性維護市場上發起的使用STM32微控制器和微處理器開發人工智慧應用的市場活動。Octonion的I-CUBE-OCTMI 軟體包是一個運行在STM32 超低功耗MCU上的自我維護系統,系統
發表於 2020-12-09
stm32f10x_conf.h:打開stm32f10x_gpio.h和stm32f10x_rcc.h;stm32f10x_gpio.c 和 stm32f10x_rcc.c加入工程模板中,只說重點。【stm32f10x_rcc.c用於配置系統時鐘 和外設時鐘,由於每個外設都要配置時鐘,所以它是每個外設都需要用到的庫文件。】// 新建led.h led.c#ifndef _LED_H_#define _LED_H_ #include "stm32f10x.h" #define ON 0#define OFF 1 #define LED1
發表於 2020-12-08