can控制器通過兩根線上的電位差來判斷匯流排電平
can.h
#can.h
#include"stm32f2xx.h"
#ifndef __can_h_
#define __can_h_
void can_mode_config(u8 can_bs1_xtq, u8 can_bs2_ytq, u16 prescaler);
u8 can_send_msg(u8 *msg, u8 len);
u8 can_receive_msg(u8 *buf);
#endif
can.c
#include"stm32f2xx.h"
#include"stm32f2xx_can.h"
#include"can.h"
void can_mode_config(u8 can_bs1_xtq, u8 can_bs2_ytq, u16 prescaler)
//開始傳送
u8 can_send_msg(u8 *msg, u8 len) //msg為資料,len為長度
mbox = can_transmit(can1, &txmessage); //返回當前郵箱
while((can_transmitstatus(can1, mbox) == can_txstatus_failed)&&(i < 0xfff))
if(i >= 0xfff)
return 0;
}u8 can_receive_msg(u8 *buf)
can_receive(can1, can_fifo0, &rxmessage); //接收資訊(報文),將can_fifo0中的資料通過can1拷貝到rxmessage結構體中
for(i = 0; i < rxmessage.dlc; i++)
return rxmessage.dlc;
}
led.h
#include"stm32f2xx.h"
#ifndef __led_h
#define __led_h
void led_init(void);
void delay(vu32 ncount);
void ctl_led(u8 led_num, u8 off_on);
#endif
led.c
#include"led.h"
#include"stm32f2xx.h"
void led_init(void)
void delay(vu32 ncount)
#if 1
void ctl_led(u8 led_num, u8 off_on)
else
break;
case 1:
if(off_on == 1)
else
break;
default:
//gpio_resetbits(gpiof,gpio_pin_7|gpio_pin_8|gpio_pin_9|gpio_pin_10);
gpio_setbits(gpiod,gpio_pin_11|gpio_pin_12);
break; }}
#endif
main.c
#include"stm32f2xx.h"
#include"can.h"
#include"led.h"
int main(void)
; //這裡因為不知道從usb_can發的是什麼,只需初始化為0即可
u8 a[8] = ; //這裡的02和2一樣,12是0c
led_init();
delay(168);
can_mode_config(can_bs1_8tq, can_bs2_6tq, 8); //此時can波特率為:30000/(1+8+6)*8 = 250kbps
while(1)
else if(key > 0) //當接收到資料時,開始執行這一步
else
} }//開始的時候,沒有接收到資料,故左邊燈亮,當接收到資料時,開始執行傳送資料函式,若傳送成功,右邊燈亮,
//若資料傳送失敗,熄滅led燈1
//問題:資料傳送成功和失敗的判斷:是否合理?左邊的燈會一直亮
//結合上面程式,將沒有接收到資料時燈滅,資料傳送時燈亮,可知資料傳送成功,
//問題:can程式實驗**不顯示接收?而且和傳送資料框的資料無關?
/* while(1)
else if(key > 0)
}else
}*/ }
STM32F207外部中斷實驗
stm32的每個io口都可以作為外部中斷輸入。gpiox.0對映到exti0,gpiox.1對映到exti1,同乙個時間只能有乙個io口對映到中斷線。對於每乙個中斷線,可以設定相應的觸發方式 上公升沿觸發 下降沿觸發 邊沿觸發 和使能。io外部中斷在中斷向量表中只分配了7個中斷向量,也就是只能使用7...
STM32F207管腳對映配置PWM輸出筆記
已親測,可以實現。第一步 配置相關管腳輸出,比如我的是配置到pb9,使用的是定時器4的第四通道。void pwm gpio config void 第二步 配置定時器。2.配置定時器 首先是像51微控制器一樣需要給出定時器乙個初始值。而stm32的時鐘比51的複雜。我們的stm32的定時器4使用的是...
STM32F207 uCOS II 任務排程的問題
是的,這個問題糾纏了我乙個多月,我都要崩潰了放棄了。今天還是在網際網路上找到了答案,太感謝發帖的人了。抑鬱的情懷終於得到釋放,啦啦啦 平台 stm32f207 ucos ii v2.85 lwip 問題 網口接收到資料來中斷時,通過ossempost告知任務進行處理。只要接網口,有網口資料接收,不管...