在线时间0 小时
UID254605
注册时间2010-12-19
NXP金币0
该用户从未签到
新手上路

- 积分
- 32
- 最后登录
- 1970-1-1
|

楼主 |
发表于 2012-3-15 09:07:04
|
显示全部楼层
回复:MQX+IAR库编译时如果GPIO不使能,在程序怎样让某个口为GPIO?
我把那个主任务的程序黏贴下,请大家帮我分析下,我实在是个菜鸟,不明所以啊
void Main_Task(uint_32 parameter)
{ /* Body */
_task_id created_task;
uint_32 result;
MQX_FILE_PTR port_file1;
_int_install_unexpected_isr();
//以下几句话是照搬IAR安装目录下的GPIO的程序里面的语句
SIM_SCGC5 = SIM_SCGC5_PORTA_MASK | SIM_SCGC5_PORTB_MASK | SIM_SCGC5_PORTC_MASK | SIM_SCGC5_PORTD_MASK | SIM_SCGC5_PORTE_MASK;
init_gpio();
GPIOE_PTOR|=GPIO_PDOR_PDO(GPIO_PIN(11)); //当编译库GPIO不管有没有使能,debug到这里灯都没有反应,我的板子四个灯是PTE9 10 11 12
GPIOE_PTOR|=GPIO_PDOR_PDO(GPIO_PIN(11));
GPIOE_PTOR|=GPIO_PDOR_PDO(GPIO_PIN(11));
GPIOE_PTOR|=GPIO_PDOR_PDO(GPIO_PIN(11));
//我原以为经过上面一段,如果库编译GPIO不使能,PTE11应该有反应的呀,但实际没有,我不知道问题出在哪里了
//以下语句是照搬MQX下的GPIO例程,其中BSP_LEDx在twrk60那个.h被我自己改成我的板子的 PTE9 10 11 12
#if defined BSP_LED2 && defined BSP_LED3 && defined BSP_LED4
#define PINS1
GPIO_PIN_STRUCT pins1[] = {
/* when opening, explicitly set output to 0 */
BSP_LED2 | GPIO_PIN_STATUS_0,
/* when opening, explicitly set output to 1 */
BSP_LED3 | GPIO_PIN_STATUS_1,
/* when opening, implicitly set output to 0 */
BSP_LED4,
GPIO_LIST_END
};
#endif
#if defined BSP_LED2
#define PINS2
GPIO_PIN_STRUCT pins2[] = {
BSP_LED2,
GPIO_LIST_END
};
#endif
/************************************************
Opening file for write with associated pins,
write LOG 0 and LOG 1 to file.
*************************************************/
#if defined PINS1 && defined PINS2
/* open file containing pin1 set of pins/signals */
if (NULL == (port_file1 = fopen("gpio:write", (char_ptr) &pins1 ))) //如果库编译时GPIO使能的话,debug到这里,三个灯亮;
{
//如果库编译是GPIO不使能的话,debug到这里就进入到{}里面的语句,然后程序阻塞了
printf("Opening file1 GPIO for pins1 failed.\n");
_task_block();
}
GPIOE_PTOR|=GPIO_PDOR_PDO(GPIO_PIN(11));
GPIOE_PTOR|=GPIO_PDOR_PDO(GPIO_PIN(11));
GPIOE_PTOR|=GPIO_PDOR_PDO(GPIO_PIN(11));
GPIOE_PTOR|=GPIO_PDOR_PDO(GPIO_PIN(11));
/* write logical 1 to all signals in the file (fast) */
if (IO_OK != ioctl(port_file1, GPIO_IOCTL_WRITE_LOG1, NULL ))//如果库编译时GPIO使能的话,debug到这里,三个灯灭了;
{
printf("Writing to whole file1 failed.\n");
_task_block();
}
/* write logical 0 to the pins/signals listed in pins2 array (slow) */
if (IO_OK != ioctl(port_file1, GPIO_IOCTL_WRITE_LOG0, &pins2 ))//如果库编译时GPIO使能的话,debug到这里,一个灯亮;
{
printf("Writing to pins2 of file1 failed.\n");
_task_block();
}
/* close file1 */
fclose(port_file1);
#endif
created_task = _task_create(0, LED_TASK, 0);//如果库编译时GPIO使能的话,debug到这里,可以产生新建的任务,
....... |
|